#! /bin/sh
#
# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
# Foundation, Inc.
# This test suite is free software; the Free Software Foundation gives
# unlimited permission to copy, distribute and modify it.
## --------------------- ##
## M4sh Initialization.  ##
## --------------------- ##

# Be Bourne compatible
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
  emulate sh
  NULLCMD=:
  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
  # is contrary to our usage.  Disable this feature.
  alias -g '${1+"$@"}'='"$@"'
  setopt NO_GLOB_SUBST
else
  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
fi
BIN_SH=xpg4; export BIN_SH # for Tru64
DUALCASE=1; export DUALCASE # for MKS sh


# PATH needs CR
# Avoid depending upon Character Ranges.
as_cr_letters='abcdefghijklmnopqrstuvwxyz'
as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
as_cr_Letters=$as_cr_letters$as_cr_LETTERS
as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits

# The user is always right.
if test "${PATH_SEPARATOR+set}" != set; then
  echo "#! /bin/sh" >conf$$.sh
  echo  "exit 0"   >>conf$$.sh
  chmod +x conf$$.sh
  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
    PATH_SEPARATOR=';'
  else
    PATH_SEPARATOR=:
  fi
  rm -f conf$$.sh
fi

# Support unset when possible.
if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
  as_unset=unset
else
  as_unset=false
fi


# IFS
# We need space, tab and new line, in precisely that order.  Quoting is
# there to prevent editors from complaining about space-tab.
# (If _AS_PATH_WALK were called with IFS unset, it would disable word
# splitting by setting IFS to empty value.)
as_nl='
'
IFS=" ""	$as_nl"

# Find who we are.  Look in the path if we contain no directory separator.
case $0 in
  *[\\/]* ) as_myself=$0 ;;
  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
  IFS=$as_save_IFS
  test -z "$as_dir" && as_dir=.
  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
done
IFS=$as_save_IFS

     ;;
esac
# We did not find ourselves, most probably we were run as `sh COMMAND'
# in which case we are not to be found in the path.
if test "x$as_myself" = x; then
  as_myself=$0
fi
if test ! -f "$as_myself"; then
  echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
  { (exit 1); exit 1; }
fi

# Work around bugs in pre-3.0 UWIN ksh.
for as_var in ENV MAIL MAILPATH
do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
done
PS1='$ '
PS2='> '
PS4='+ '

# NLS nuisances.
for as_var in \
  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
  LC_TELEPHONE LC_TIME
do
  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
    eval $as_var=C; export $as_var
  else
    ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
  fi
done

# Required to use basename.
if expr a : '\(a\)' >/dev/null 2>&1 &&
   test "X`expr 00001 : '.*\(...\)'`" = X001; then
  as_expr=expr
else
  as_expr=false
fi

if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
  as_basename=basename
else
  as_basename=false
fi


# Name of the executable.
as_me=`$as_basename -- "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
	 X"$0" : 'X\(//\)$' \| \
	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
echo X/"$0" |
    sed '/^.*\/\([^/][^/]*\)\/*$/{
	    s//\1/
	    q
	  }
	  /^X\/\(\/\/\)$/{
	    s//\1/
	    q
	  }
	  /^X\/\(\/\).*/{
	    s//\1/
	    q
	  }
	  s/.*/./; q'`

# CDPATH.
$as_unset CDPATH


if test "x$CONFIG_SHELL" = x; then
  if (eval ":") 2>/dev/null; then
  as_have_required=yes
else
  as_have_required=no
fi

  if test $as_have_required = yes && 	 (eval ":
(as_func_return () {
  (exit \$1)
}
as_func_success () {
  as_func_return 0
}
as_func_failure () {
  as_func_return 1
}
as_func_ret_success () {
  return 0
}
as_func_ret_failure () {
  return 1
}

exitcode=0
if as_func_success; then
  :
else
  exitcode=1
  echo as_func_success failed.
fi

if as_func_failure; then
  exitcode=1
  echo as_func_failure succeeded.
fi

if as_func_ret_success; then
  :
else
  exitcode=1
  echo as_func_ret_success failed.
fi

if as_func_ret_failure; then
  exitcode=1
  echo as_func_ret_failure succeeded.
fi

if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
  :
else
  exitcode=1
  echo positional parameters were not saved.
fi

test \$exitcode = 0) || { (exit 1); exit 1; }

(
  as_lineno_1=\$LINENO
  as_lineno_2=\$LINENO
  test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
  test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
") 2> /dev/null; then
  :
else
  as_candidate_shells=
    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in /usr/bin/posix$PATH_SEPARATOR/bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
do
  IFS=$as_save_IFS
  test -z "$as_dir" && as_dir=.
  case $as_dir in
	 /*)
	   for as_base in sh bash ksh sh5; do
	     as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
	   done;;
       esac
done
IFS=$as_save_IFS


      for as_shell in $as_candidate_shells $SHELL; do
	 # Try only shells which exist, to save several forks.
	 if test -f "$as_shell" &&
		{ ("$as_shell") 2> /dev/null <<\_ASEOF
# Be Bourne compatible
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
  emulate sh
  NULLCMD=:
  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
  # is contrary to our usage.  Disable this feature.
  alias -g '${1+"$@"}'='"$@"'
  setopt NO_GLOB_SUBST
else
  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
fi
BIN_SH=xpg4; export BIN_SH # for Tru64
DUALCASE=1; export DUALCASE # for MKS sh

:
_ASEOF
}; then
  CONFIG_SHELL=$as_shell
	       as_have_required=yes
	       if { "$as_shell" 2> /dev/null <<\_ASEOF
# Be Bourne compatible
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
  emulate sh
  NULLCMD=:
  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
  # is contrary to our usage.  Disable this feature.
  alias -g '${1+"$@"}'='"$@"'
  setopt NO_GLOB_SUBST
else
  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
fi
BIN_SH=xpg4; export BIN_SH # for Tru64
DUALCASE=1; export DUALCASE # for MKS sh

:
(as_func_return () {
  (exit $1)
}
as_func_success () {
  as_func_return 0
}
as_func_failure () {
  as_func_return 1
}
as_func_ret_success () {
  return 0
}
as_func_ret_failure () {
  return 1
}

exitcode=0
if as_func_success; then
  :
else
  exitcode=1
  echo as_func_success failed.
fi

if as_func_failure; then
  exitcode=1
  echo as_func_failure succeeded.
fi

if as_func_ret_success; then
  :
else
  exitcode=1
  echo as_func_ret_success failed.
fi

if as_func_ret_failure; then
  exitcode=1
  echo as_func_ret_failure succeeded.
fi

if ( set x; as_func_ret_success y && test x = "$1" ); then
  :
else
  exitcode=1
  echo positional parameters were not saved.
fi

test $exitcode = 0) || { (exit 1); exit 1; }

(
  as_lineno_1=$LINENO
  as_lineno_2=$LINENO
  test "x$as_lineno_1" != "x$as_lineno_2" &&
  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }

_ASEOF
}; then
  break
fi

fi

      done

      if test "x$CONFIG_SHELL" != x; then
  for as_var in BASH_ENV ENV
        do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
        done
        export CONFIG_SHELL
        exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
fi


    if test $as_have_required = no; then
  echo This script requires a shell more modern than all the
      echo shells that I found on your system.  Please install a
      echo modern shell, or manually run the script under such a
      echo shell if you do have one.
      { (exit 1); exit 1; }
fi


fi

fi



(eval "as_func_return () {
  (exit \$1)
}
as_func_success () {
  as_func_return 0
}
as_func_failure () {
  as_func_return 1
}
as_func_ret_success () {
  return 0
}
as_func_ret_failure () {
  return 1
}

exitcode=0
if as_func_success; then
  :
else
  exitcode=1
  echo as_func_success failed.
fi

if as_func_failure; then
  exitcode=1
  echo as_func_failure succeeded.
fi

if as_func_ret_success; then
  :
else
  exitcode=1
  echo as_func_ret_success failed.
fi

if as_func_ret_failure; then
  exitcode=1
  echo as_func_ret_failure succeeded.
fi

if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
  :
else
  exitcode=1
  echo positional parameters were not saved.
fi

test \$exitcode = 0") || {
  echo No shell found that supports shell functions.
  echo Please tell autoconf@gnu.org about your system,
  echo including any error possibly output before this
  echo message
}



  as_lineno_1=$LINENO
  as_lineno_2=$LINENO
  test "x$as_lineno_1" != "x$as_lineno_2" &&
  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {

  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
  # uniformly replaced by the line number.  The first 'sed' inserts a
  # line-number line after each line using $LINENO; the second 'sed'
  # does the real work.  The second script uses 'N' to pair each
  # line-number line with the line containing $LINENO, and appends
  # trailing '-' during substitution so that $LINENO is not a special
  # case at line end.
  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
  # scripts with optimization help from Paolo Bonzini.  Blame Lee
  # E. McMahon (1931-1989) for sed's syntax.  :-)
  sed -n '
    p
    /[$]LINENO/=
  ' <$as_myself |
    sed '
      s/[$]LINENO.*/&-/
      t lineno
      b
      :lineno
      N
      :loop
      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
      t loop
      s/-\n.*//
    ' >$as_me.lineno &&
  chmod +x "$as_me.lineno" ||
    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
   { (exit 1); exit 1; }; }

  # Don't try to exec as it changes $[0], causing all sort of problems
  # (the dirname of $[0] is not the place where we might find the
  # original and so on.  Autoconf is especially sensitive to this).
  . "./$as_me.lineno"
  # Exit status is that of the last command.
  exit
}


if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
  as_dirname=dirname
else
  as_dirname=false
fi

ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in
-n*)
  case `echo 'x\c'` in
  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
  *)   ECHO_C='\c';;
  esac;;
*)
  ECHO_N='-n';;
esac

if expr a : '\(a\)' >/dev/null 2>&1 &&
   test "X`expr 00001 : '.*\(...\)'`" = X001; then
  as_expr=expr
else
  as_expr=false
fi

rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
  rm -f conf$$.dir/conf$$.file
else
  rm -f conf$$.dir
  mkdir conf$$.dir
fi
echo >conf$$.file
if ln -s conf$$.file conf$$ 2>/dev/null; then
  as_ln_s='ln -s'
  # ... but there are two gotchas:
  # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
  # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
  # In both cases, we have to default to `cp -p'.
  ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
    as_ln_s='cp -p'
elif ln conf$$.file conf$$ 2>/dev/null; then
  as_ln_s=ln
else
  as_ln_s='cp -p'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null

if mkdir -p . 2>/dev/null; then
  as_mkdir_p=:
else
  test -d ./-p && rmdir ./-p
  as_mkdir_p=false
fi

# Find out whether ``test -x'' works.  Don't use a zero-byte file, as
# systems may use methods other than mode bits to determine executability.
cat >conf$$.file <<_ASEOF
#! /bin/sh
exit 0
_ASEOF
chmod +x conf$$.file
if test -x conf$$.file >/dev/null 2>&1; then
  as_executable_p="test -x"
else
  as_executable_p=:
fi
rm -f conf$$.file

# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"

# Sed expression to map a string onto a valid variable name.
as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"



SHELL=${CONFIG_SHELL-/bin/sh}

# How were we run?
at_cli_args="$@"

# Load the config file.
for at_file in atconfig atlocal
do
  test -r $at_file || continue
  . ./$at_file || { echo "$as_me: error: invalid content: $at_file" >&2
   { (exit 1); exit 1; }; }
done

# Autoconf <=2.59b set at_top_builddir instead of at_top_build_prefix:
: ${at_top_build_prefix=$at_top_builddir}

# atconfig delivers names relative to the directory the test suite is
# in, but the groups themselves are run in testsuite-dir/group-dir.
if test -n "$at_top_srcdir"; then
  builddir=../..
  for at_dir in srcdir top_srcdir top_build_prefix
  do
    at_val=`eval echo '${'at_$at_dir'}'`
    eval "$at_dir=\$at_val/../.."
  done
fi

# Not all shells have the 'times' builtin; the subshell is needed to make
# sure we discard the 'times: not found' message from the shell.
at_times_p=false
(times) >/dev/null 2>&1 && at_times_p=:

# CLI Arguments to pass to the debugging scripts.
at_debug_args=
# -e sets to true
at_errexit_p=false
# Shall we be verbose?
at_verbose=:
at_quiet=echo

# Shall we keep the debug scripts?  Must be `:' when the suite is
# run by a debug script, so that the script doesn't remove itself.
at_debug_p=false
# Display help message?
at_help_p=false
# Display the version message?
at_version_p=false
# List test groups?
at_list_p=false
# Test groups to run
at_groups=

# The directory we are in.
at_dir=`pwd`
# The directory the whole suite works in.
# Should be absolutely to let the user `cd' at will.
at_suite_dir=$at_dir/$as_me.dir
# The file containing the suite.
at_suite_log=$at_dir/$as_me.log
# The file containing the location of the last AT_CHECK.
at_check_line_file=$at_suite_dir/at-check-line
# The file containing the exit status of the last command.
at_status_file=$at_suite_dir/at-status
# The files containing the output of the tested commands.
at_stdout=$at_suite_dir/at-stdout
at_stder1=$at_suite_dir/at-stder1
at_stderr=$at_suite_dir/at-stderr
# The file containing dates.
at_times_file=$at_suite_dir/at-times

# List of the tested programs.
at_tested='mtn'
# List of the all the test groups.
at_groups_all=' 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347'
# As many question marks as there are digits in the last test group number.
# Used to normalize the test group numbers so that `ls' lists them in
# numerical order.
at_format='???'
# Description of all the test groups.
at_help_all='1;t_null.at:3;basic invocations and options;;
2;t_scan.at:3;scanning trees;;
3;t_import.at:3;importing a file;;
4;t_genkey.at:3;generating and extracting keys and certs;;
5;t_unidiff.at:3;calculation of unidiffs;;
6;t_persist_phrase.at:3;persistence of passphrase;;
7;t_versions.at:3;multiple version committing;;
8;t_fork.at:3;creating a fork;;
9;t_update.at:3;creating a fork and updating;;
10;t_merge.at:3;creating a fork and merging;;
11;t_merge_add.at:1;merging adds;;
12;t_related_merge2_data.at:1;merging data in unrelated files;;
13;t_merge2_add.at:1;merging adds in unrelated revisions;;
14;t_merge2_data.at:1;merging data in unrelated revisions;;
15;t_unidiff2.at:3;calculation of incorrect unidiffs;;
16;t_cwork.at:3;delete work file on checkout;;
17;t_revert.at:3;revert file to base version;;
18;t_add.at:3;addition of files and directories;;
19;t_drop.at:3;add and then drop file does nothing;;
20;t_drop_missing.at:3;drop missing and unknown files;;
21;t_cross.at:3;creating a bad criss-cross merge;;
22;t_rename.at:3;renaming a file;;
23;t_renamed.at:3;renaming a directory;;
24;t_erename.at:3;renaming and editing a file;;
25;t_cvsimport.at:3;importing CVS files;;
26;t_i18n_file.at:3;importing files with non-english names;;
27;t_fmerge.at:3;external unit test of the line merger;;
28;t_netsync.at:3;exchanging work via netsync;netsync;
29;t_netsync_single.at:3;single manifest netsync;netsync;
30;t_netsync_pubkey.at:1;netsync transfers public keys;netsync;
31;t_netsync_repeated.at:1;repeatedly exchanging work via netsync;netsync;
32;t_netsync_unrelated.at:1;(normal) netsync on partially unrelated revisions;netsync;
33;t_disapprove.at:3;disapproving of a revision;;
34;t_testresult.at:3;creating a good and bad test result;;
35;t_singlecvs.at:3;importing a CVS file with one version;;
36;t_ls_missing.at:3;list missing files;;
37;t_attributes.at:3;attr set/get commands;;
38;t_single_char_filenames.at:6;single character filename support;;
39;t_restrictions.at:3;manifest restrictions;;
40;t_subdirs.at:3;subdirectory restrictions;;
41;t_movepatch.at:3;renaming a patched file;;
42;t_movedel.at:3;renaming a deleted file;;
43;t_remerge.at:3;merging a rename twice;;
44;t_update_missing.at:3;updating from a merge which adds a file;;
45;t_chkeypass.at:3;changing passphrase of a private key;;
46;t_diff_added_file.at:3;diffing a revision with an added file;;
47;t_update_to_revision.at:3;updating to a given revision;;
48;t_heads.at:3;'heads';;
49;t_heads_discontinuous_branch.at:3;'heads' with discontinuous branches;;
50;t_merge_1.at:1;test a merge;;
51;t_merge_2.at:1;test a merge 2;;
52;t_tags.at:3;tags and tagging of revisions;;
53;t_add_dot.at:1;mtn add .;;
54;t_cleanup_empty_dir.at:1;(minor) update cleans emptied directories;;
55;t_merge_add_del.at:3;merging <add a> with <add a, drop a>;;
56;t_add_edge.at:1;merging an add edge;;
57;t_patch_drop_add.at:1;merge(<>, <patch a, drop a, add a>);;
58;t_add_drop_add.at:1;merge(<>, <add a, drop a, add a>);;
59;t_merge2_add_drop_add.at:1;merge(<add a>, <add a, drop a, add a>);;
60;t_add_patch_drop_add.at:1;merge(<>, <add a, patch a, drop a, add a>);;
61;t_patch_vs_drop_add.at:1;merge(<patch a>, <drop a, add a>);;
62;t_explicit_merge.at:1;explicit_merge;;
63;t_ambig_update.at:1;update with multiple candidates;;
64;t_checkout_dir.at:1;checkout validates target directory;;
65;t_checkout_options.at:1;checkout creates right _MTN/options;;
66;t_trusted.at:1;trust hooks and 'trusted' command;;
67;t_attr.at:1;attr set/attr get;;
68;t_rcfile_required.at:1;--rcfile requires extant file;;
69;t_persistent_server_revision.at:1;persistent netsync server - revs & certs;netsync;
70;t_persistent_server_keys.at:1;persistent netsync server - keys;netsync;
71;t_fmerge_normalize.at:1;first extent normalization pass;;
72;t_delete_dir.at:1;(imp) deleting directories;;
73;t_migrate_schema.at:1;schema migration;;
74;t_dump_load.at:1;database dump/load;;
75;t_no_change_deltas.at:1;no-change deltas disappear;;
76;t_drop_rename_patch.at:1;merge(<>, <drop a, rename b a, patch a>);;
77;t_cmdline_options.at:1;verification of command line options;;
78;t_log_nonexistent.at:1;log hides deleted/renamed files;;
79;t_crlf.at:1;CRLF line normalization;;
80;t_netsync_diffbranch.at:1;pull a netsync branch which has a parent from another branch;netsync;
81;t_netsync_nocerts.at:1;(normal) netsync revision with no certs;;
82;t_check_same_db_contents.at:1;check_same_db_contents macro;;
83;t_merge_ancestor.at:1;merge rev with ancestor;;
84;t_propagate_desc.at:1;propagate a descendent;;
85;t_propagate_anc.at:1;propagate an ancestor;;
86;t_status_missing.at:1;status with missing files;;
87;t_persistent_server_keys_2.at:1;(imp) persistent netsync server - keys 2;netsync;
88;t_update_1.at:1;update 1;;
89;t_vcheck.at:1;(todo) vcheck;;
90;t_db_with_dots.at:1;--db with ..;;
91;t_subdir_add.at:1;add in subdir;;
92;t_subdir_drop.at:1;(minor) drop in subdir;;
93;t_subdir_revert.at:1;revert in subdirs;;
94;t_subdir_rename.at:1;rename in subdir;;
95;t_subdir_attr.at:3;attr command in subdirs;;
96;t_lca_1.at:1;(minor) an lca;;
97;t_update_2.at:1;(normal) update 2;;
98;t_rename_dir_cross_level.at:1;rename_dir to non-sibling;;
99;t_rename_added_in_rename.at:1;merge with add, rename file, and rename dir;;
100;t_rename_conflict.at:1;merge(<rename a b>, <rename a c>);;
101;t_rename_dir_patch.at:1;merge(<patch foo/a>, <rename foo/ bar/>);;
102;t_delete_dir_patch.at:1;(imp) merge(<patch foo/a>, <delete foo/>);;
103;t_revert_dirs.at:1;revert directories;;
104;t_revert_rename.at:1;revert renames;;
105;t_revert_unchanged.at:3;revert unchanged file preserves mtime;;
106;t_cdiff.at:1;(minor) context diff;;
107;t_no_rename_overwrite.at:1;rename cannot overwrite files;;
108;t_checkout_noop_on_fail.at:1;failed checkout is a no-op;;
109;t_monotone_agent.at:1;(todo) write monotone-agent;;
110;t_approval_semantics.at:1;(todo) design approval semantics;;
111;t_i18n_changelog.at:3;committing with a non-english message;;
112;t_restrictions_warn_on_unknown.at:1;warn on bad restriction;;
113;t_need_mt_revision.at:1;_MTN/revision is required;;
114;t_update_null_revision.at:1;update no-ops when no parent revision;;
115;t_branch_checkout.at:1;branch-based checkout;;
116;t_load_into_existing.at:1;db load must create a new db;;
117;t_automate_version.at:1;automate automate_version;;
118;t_automate_heads.at:1;automate heads;;
119;t_merge_normalization_edge_case.at:1;merge normalization edge case;;
120;t_undo_update.at:1;(todo) undo_update command;;
121;t_change_empty_file.at:3;modification of an empty file;;
122;t_largish_file.at:1;largish file;;
123;t_add_intermediate__MTN_path.at:3;files with intermediate _MTN path elements;;
124;t_merge_3.at:1;(minor) test a merge 3;;
125;t_merge_4.at:1;(minor) test a merge 4;;
126;t_db_missing.at:1;db missing;;
127;t_database_check.at:3;database check;;
128;t_add_owndb.at:1;(minor) add own db;;
129;t_can_execute.at:1;can execute things;;
130;t_diff_binary.at:1;diff a binary file;;
131;t_command_completion.at:1;command completion;;
132;t_merge_rename_file_and_rename_dir.at:3;merge rename file and rename dir;;
133;t_diff_restrict.at:1;diff respects restrictions;;
134;t_cat_file_by_name.at:1;cat -r REV PATH;;
135;t_epoch.at:1;client absorbs and checks epochs;netsync;
136;t_epoch_server.at:1;server absorbs and checks epochs;netsync;
137;t_epoch_unidirectional.at:1;epochs are not sent upstream by pull;netsync;
138;t_vars.at:1;vars;;
139;t_netsync_defaults.at:1;default server/pattern;netsync;
140;t_netsync_set_defaults.at:1;default server/pattern setting;netsync;
141;t_netsync_absorbs.at:1;client absorbs server key;netsync;
142;t_netsync_checks_server_key.at:1;netsync verifies server keys;;
143;t_merge_5.at:1;test a merge 5;;
144;t_empty_id_completion.at:1;empty id completion;;
145;t_empty_path.at:1;empty string as a path name;;
146;t_empty_env.at:1;empty environment;;
147;t_short_opts.at:5;short options work correctly;;
148;t_netsync_sigpipe.at:3;netsync is not interrupted by SIGPIPE;netsync;
149;t_setup_creates_log.at:3;setup creates _MTN/log;;
150;t_checkout_creates_log.at:3;checkout creates _MTN/log;;
151;t_commit_log_1.at:3;commit using _MTN/log;;
152;t_commit_log_2.at:3;commit w/o _MTN/log being present;;
153;t_commit_validate.at:4;commit validation lua hook;;
154;t_dropkey_1.at:3;drop a public key;;
155;t_dropkey_2.at:3;drop a public and private key;;
156;t_rename_attr.at:1;rename moves attributes;;
157;t_automate_ancestors.at:1;automate ancestors;;
158;t_automate_descendents.at:1;automate descendents;;
159;t_automate_erase_ancestors.at:1;automate erase_ancestors;;
160;t_automate_toposort.at:1;automate toposort;;
161;t_diff_first_rev.at:1;diff in a never-committed project;;
162;t_automate_ancestry_difference.at:1;automate ancestry_difference;;
163;t_automate_leaves.at:1;automate leaves;;
164;t_log_last_next.at:1;log --last=N/--next=N;;
165;t_commit_log_3.at:3;commit using _MTN/log and --message;;
166;t_at_sign.at:1;check that --xargs / -@ behave correctly;;
167;t_db_execute.at:1;db execute;;
168;t_sql_gunzip.at:1;sql function gunzip (which replaced unpack);;
169;t_final_space.at:1;files with spaces at the end;;
170;t_inodeprints.at:1;inodeprints;;
171;t_inodeprints_update.at:1;update updates inodeprints;;
172;t_ls_known.at:3;listing workspace manifests;;
173;t_cvsimport_samelog.at:3;importing CVS files with identical logs;;
174;t_sticky_branch.at:1;sticky branches;;
175;t_checkout_id_sets_branch.at:1;checkout without --branch sets branch;;
176;t_netsync_largish_file.at:1;netsync largish file;netsync;
177;t_update_off_branch.at:1;update to off-branch rev;;
178;t_setup_checkout_modify_new_dir.at:1;setup/checkout touch new _MTN/options only;;
179;t_rename_dir_add_dir_with_old_name.at:3;renaming a directory and then adding a new with the old name;;
180;t_rcs_import.at:1;test problematic cvs import;;
181;t_cvsimport2.at:1;cvs_import with file added on a branch;;
182;t_lf_crlf.at:1;use get_linesep_conv hook;;
183;t_add_vs_commit.at:1;add workspace commit in another;;
184;t_update_nonexistent.at:1;update to non-existent rev;;
185;t_override_author_date.at:1;--author, --date;;
186;t_add_stomp_file.at:1;update does not stomp non-monotone files;;
187;t_database_check_minor.at:1;db check and non-serious errors;;
188;t_db_kill_rev_locally.at:1;db kill_rev_locally command;;
189;t_drop_attr.at:1;drop removes attributes;;
190;t_attr_drop.at:1;attr drop;;
191;t_log_depth_single.at:1;log --last=N FILENAME;;
192;t_attr_init.at:1;attr init functions;;
193;t_add_executable.at:1;add executable;;
194;t_inodeprints_hook.at:1;use_inodeprints hook;;
195;t_bad_packets.at:1;bad packet args;;
196;t_multiple_heads_msg.at:3;commit/update multiple heads message;;
197;t_diff_currev.at:3;diffing with explicit rev same as wc rev;;
198;t_normalized_filenames.at:1;normalized filenames;;
199;t_automate_inventory.at:1;workspace inventory;;
200;t_rename_file_to_dir.at:1;rename file to dir;;
201;t_replace_file_with_dir.at:1;replace file with dir;;
202;t_replace_dir_with_file.at:1;replace dir with file;;
203;t_parents_children.at:1;automate parents, automate children;;
204;t_automate_graph.at:1;automate graph;;
205;t_i18n_file_data.at:1;files with non-utf8 data;;
206;t_cvsimport_manifest_cycle.at:3;cvs import, file dead on head and branch;cvs;
207;t_select_cert.at:1;selecting arbitrary certs;;
208;t_automate_select.at:1;check automate select;;
209;t_refresh_inodeprints.at:1;refresh_inodeprints;;
210;t_merge_6.at:1;test a merge 6;;
211;t_annotate.at:1;test annotate command;;
212;t_annotate_add_collision.at:1;annotate file added on different forks;;
213;t_annotate_branch_collision.at:1;annotate file on multirooted branch;;
214;t_netsync_error.at:1;netsync badhost gives nice error;;
215;t_options.at:3;checking a few command specific options;;
216;t_annotate_copy_all.at:1;annotate where one parent is full copy;;
217;t_cvsimport_deleted_invar.at:3;cvs import, deleted file invariant;cvs;
218;t_rcfile_stdin.at:1;--rcfile=-;;
219;t_monotone_up.at:1;mtn up;;
220;t_drop_vs_patch_rename.at:1;merge(<drop a>, <rename a b, patch b>);;
221;t_unreadable__MTN.at:3;fail cleanly on unreadable _MTN/options;;
222;t_cvsimport3.at:3;importing CVS with vendor imports and branches;;
223;t_commit_message_file.at:1;commit with --message-file;;
224;t_automate_attributes.at:1;automate attributes;;
225;t_unidiff3.at:1;diff against empty file;;
226;t_netsync_permissions.at:3;netsync permissions;;
227;t_update_with_blocked_rename.at:1;update with blocked rename;;
228;t_drop_vs_dropadd.at:2;merge(<drop a>, <drop a, add a>);;
229;t_annotate_lineage_dependent.at:1;annotate where lineage depends on traversal;;
230;t_annotate_split_line.at:1;annotate where line splits;;
231;t_automate_certs.at:3;automate certs;;
232;t_selector_later_earlier.at:1;check later and earlier selectors;;
233;t_automate_stdio.at:1;automate stdio;;
234;t_cvsimport_drepper.at:3;importing a small, real CVS repository;;
235;t_update_with_pending_drop.at:3;update with pending drop;;
236;t_update_with_pending_add.at:3;update with pending add;;
237;t_update_with_pending_rename.at:3;update with pending rename;;
238;t_restricted_commit_with_inodeprints.at:3;restricted commit with inodeprints;;
239;t_merge_manual.at:1;merge manual file;;
240;t_revert_restrict.at:3;revert works with restrictions;;
241;t_status.at:1;status with missing files;;
242;t_cvsimport_drepper2.at:3;a tricky CVS repository with tags;;
243;t_rcfile_dir.at:1;--rcfile=directory;;
244;t_lua_includedir.at:1;include() and includedir() lua functions;;
245;t_existsonpath.at:1;lua function existsonpath;;
246;t_db_kill_branch_certs_locally.at:1;db kill_branch_certs_locally command;;
247;t_netsync_globs.at:1;netsync with globs;;
248;t_set_default.at:1;--set-default;netsync;
249;t_netsync_read_permissions.at:1;get_netsync_read_permitted;;
250;t_netsync_exclude.at:1;serve/pull with --exclude;netsync;
251;t_netsync_exclude_default.at:1;--exclude defaults;netsync;
252;t_ambiguous_tags.at:1;ls tags with ambiguous tags;;
253;t_kill_tag_locally.at:1;db kill_tag_locally;;
254;t_restricted_diff_unchanged.at:1;diff -rREV1 -rREV2 UNCHANGED-FILE;;
255;t_selector_globbing.at:1;b: and t: selector globbing;;
256;t_diff_external.at:1;diff --external;;
257;t_migrate_broken_schema.at:1;db migrate on bad schema;;
258;t_ls_branches.at:3;list branches;;
259;t_database_check_normalized.at:3;database check for normalization;;
260;t_annotate_no_rev.at:1;annotate with no revs;;
261;t_merge_add_rename_add.at:3;merging <add a, rename a b> with <add b>;;
262;t_update_branch.at:1;update -b foo updates _MTN/options correctly;;
263;t_commit_cancelled.at:1;_MTN/* handled correctly in aborted commit;;
264;t_merge_7.at:1;test a merge 7;;
265;t_commit_log_writeback.at:1;commit writes message back to _MTN/log;;
266;t_log_brief.at:1;log --brief;;
267;t_explicit_merge_with_anc.at:1;explicit_merge LEFT RIGHT ANC BRANCH;;
268;t_drop_execute.at:3;drop with actual removal;;
269;t_rename_execute.at:3;rename with actual file rename;;
270;t_read_from_file.at:1;mtn read FILE;;
271;t_setup_existing_path.at:1;setup on existing path;;
272;t_mtn_ignore.at:1;things in .mtn-ignore get ignored;;
273;t_automate_get_file.at:3;automate get_file;;
274;t_automate_get_manifest_of.at:3;automate get_manifest_of;;
275;t_automate_get_revision.at:3;automate get_revision;;
276;t_unreadable_db.at:1;fail cleanly on unreadable db;;
277;t_restriction_with_exclude.at:1;use restrictions with --exclude;;
278;t_restriction_with_exclude_iprint.at:1;use restrictions with --exclude and inodeprints;;
279;t_rename_diff_names.at:1;filenames in diff after rename;;
280;t_key_management_without_db.at:1;key management without a database;;
281;t_automate_keys.at:1;automate keys;;
282;t_diff_outside_workspace.at:3;diffing a file within revision outside a workspace;;
283;t_log_outside_workspace.at:3;logging a file within revision outside a workspace;;
284;t_add_inside__MTN.at:1;add inside _MTN/;;
285;t_annotate_renames.at:1;annotate file whose name changed;;
286;t_config_confdir.at:1;--confdir option and get_confdir lua function work;;
287;t_database_sig_cleanup.at:3;database is closed on signal exit;;
288;t_update_switch_branch.at:1;update -b switches branches even when noop;;
289;t_migrate_rosterify.at:1;migrate + rosterify;;
290;t_rosterify_attrs.at:1;rosterify migrates file/dir attrs;;
291;t_rosterify_rename.at:1;db rosterify preserves renames;;
292;t_mixed_case_pwd.at:1;restrictions when pwd is mixed case;;
293;t_read_privkey.at:1;read and convert old privkey packet;;
294;t_restricted_commands_consistent.at:1;restricted commands are consistent;;
295;t_rosterify_drop_attrs.at:1;rosterify --drop-attr;;
296;t_rosterify_one_rev.at:1;rosterify on a db with 1 rev;;
297;t_selectors_b_h.at:1;b: and h: selectors;;
298;t_revert_ignored.at:1;revert ignored files;;
299;t_no_persist_phrase.at:3;disallowing persistence of passphrase;;
300;t_check_db_format.at:1;db data format checking;;
301;t_rename_destdir.at:3;rename files into a directory;;
302;t_ls_changed.at:3;listing changed files;;
303;t_revert_new_project.at:3;revert file in new project;;
304;t_db_kill_rev_locally_2.at:1;db kill_rev_locally command 2;;
305;t_log_nofiles_nomerges.at:1;log --no-files and --merges;;
306;t_cvsimport_branch.at:3;importing CVS branches with correct ancestory;;
307;t_log_to_file.at:3;check --log;;
308;t_log_selectors.at:1;log and selectors returning multiple rids;;
309;t_pivot_root.at:1;pivot_root;;
310;t_pivot_root_revert.at:1;reverting a pivot_root;;
311;t_pivot_root_update.at:1;updating through a pivot_root;;
312;t_rosterify_root_suture.at:1;db rosterify on a db with a root suture;;
313;t_log_dir.at:1;log dir;;
314;t_show_conflicts.at:1;show_conflicts;;
315;t_merge_into_dir.at:1;merge a project into a subdirectory of an unrelated project;;
316;t_restriction_excludes_parent.at:1;restriction excludes parent dir;;
317;t_revert_move_to_renamed_dir.at:1;revert moving a file to a renamed directory;;
318;t_sink_has_extra_epochs.at:1;one-way netsync where the sink has more epochs;;
319;t_disapprove_branch.at:1;branch handling in disapprove;;
320;t_serve_ignores_mt_options.at:3;checking that certain commands ignores the contents of _MTN/options;;
321;t_netsync_notes.at:3;exchanging work via netsync, with notes;netsync;
322;t_rosterify_on_rosterified_db.at:1;db rosterify twice gives an error second time;;
323;t_case_insensitive__MTN.at:1;_MTN case-folding security patch;;
324;t_rosterify_mt_ignore.at:1;rosterify handles .mt-ignore files;;
325;t_revert_file_blocked_by_dir.at:1;revert file blocked by unversioned directory;;
326;t_pidfile.at:1;pid file cleanup;;
327;t_rosterify_empty_manifest.at:1;rosterify on a db with an empty manifest;;
328;t_netsync_no_include.at:1;"sync server --exclude foo";;
329;t_pidfile_log_permissions.at:1;pid file and log handles open failures;;
330;t_executable_umask.at:1;mtn:execute attr respects umask;;
331;t_setup_workspace_in_workspace.at:1;setup in subdirectory;;
332;t_help.at:1;test the help command;;
333;t_approve.at:1;test the approve command;;
334;t_checkout_heads.at:1;checkout fails with multiple heads;;
335;t_ls_epochs.at:1;ls epochs;;
336;t_hook_helpers.at:1;test some hook helper functions;;
337;t_no_log_password.at:3;(imp) do not log the result of hook_get_passphrase;;
338;t_quiet.at:3;quiet turns off tickers but not warnings;;
339;t_reallyquiet.at:3;reallyquiet turns off tickers and warnings;;
340;t_escaped_selectors.at:1;escaped selectors;;
341;t_automate_get_base_revision_id.at:3;automate get_base_revision_id;;
342;t_automate_get_current_revision_id.at:3;automate get_current_revision_id;;
343;t_log_diffs.at:1;log --diffs;;
344;t_db_init_info.at:3;db info of new database;;
345;t_automate_common_ancestors.at:1;automate common_ancestors;;
346;t_invalid_root.at:3;invalid --root settings;;
347;t_netsync_pipe.at:1;netsync over pipes;;
'

at_prev=
for at_option
do
  # If the previous option needs an argument, assign it.
  if test -n "$at_prev"; then
    at_option=$at_prev=$at_option
    at_prev=
  fi

  case $at_option in
  *=*) at_optarg=`expr "x$at_option" : 'x[^=]*=\(.*\)'` ;;
  *)   at_optarg= ;;
  esac

  # Accept the important Cygnus configure options, so we can diagnose typos.

  case $at_option in
    --help | -h )
	at_help_p=:
	;;

    --list | -l )
	at_list_p=:
	;;

    --version | -V )
	at_version_p=:
	;;

    --clean | -c )
	test -d "$at_suite_dir" &&
	  find "$at_suite_dir" -type d ! -perm -700 -exec chmod u+rwx \{\} \;
	rm -f -r "$at_suite_dir" "$at_suite_log"
	exit 0
	;;

    --debug | -d )
	at_debug_p=:
	;;

    --errexit | -e )
	at_debug_p=:
	at_errexit_p=:
	;;

    --verbose | -v )
	at_verbose=echo; at_quiet=:
	;;

    --trace | -x )
	at_traceon='set -x'; at_traceoff='set +x'
	;;

    [0-9] | [0-9][0-9] | [0-9][0-9][0-9] | [0-9][0-9][0-9][0-9])
	at_groups="$at_groups$at_option "
	;;

    # Ranges
    [0-9]- | [0-9][0-9]- | [0-9][0-9][0-9]- | [0-9][0-9][0-9][0-9]-)
	at_range_start=`echo $at_option |tr -d X-`
	at_range=`echo " $at_groups_all " | \
	  sed -e 's/^.* \('$at_range_start' \)/\1/'`
	at_groups="$at_groups$at_range "
	;;

    -[0-9] | -[0-9][0-9] | -[0-9][0-9][0-9] | -[0-9][0-9][0-9][0-9])
	at_range_end=`echo $at_option |tr -d X-`
	at_range=`echo " $at_groups_all " | \
	  sed -e 's/\( '$at_range_end'\) .*$/\1/'`
	at_groups="$at_groups$at_range "
	;;

    [0-9]-[0-9] | [0-9]-[0-9][0-9] | [0-9]-[0-9][0-9][0-9] | \
    [0-9]-[0-9][0-9][0-9][0-9] | [0-9][0-9]-[0-9][0-9] | \
    [0-9][0-9]-[0-9][0-9][0-9] | [0-9][0-9]-[0-9][0-9][0-9][0-9] | \
    [0-9][0-9][0-9]-[0-9][0-9][0-9] | \
    [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9] | \
    [0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9] )
	at_range_start=`expr $at_option : '\(.*\)-'`
	at_range_end=`expr $at_option : '.*-\(.*\)'`
	if test $at_range_start -gt $at_range_end; then
	  at_tmp=$at_range_end
	  at_range_end=$at_range_start
	  at_range_start=$at_tmp
	fi
	at_range=`echo " $at_groups_all " | \
	  sed -e 's/^.*\( '$at_range_start' \)/\1/' \
	      -e 's/\( '$at_range_end'\) .*$/\1/'`
	at_groups="$at_groups$at_range "
	;;

    # Keywords.
    --keywords | -k )
	at_prev=--keywords
	;;
    --keywords=* )
	at_groups_selected=$at_help_all
	at_save_IFS=$IFS
	IFS=,
	set X $at_optarg
	shift
	IFS=$at_save_IFS
	for at_keyword
	do
	  at_invert=
	  case $at_keyword in
	  '!'*)
	    at_invert="-v"
	    at_keyword=`expr "X$at_keyword" : 'X!\(.*\)'`
	    ;;
	  esac
	  # It is on purpose that we match the test group titles too.
	  at_groups_selected=`echo "$at_groups_selected" |
	      grep -i $at_invert "^[1-9][^;]*;.*[; ]$at_keyword[ ;]"`
	done
	at_groups_selected=`echo "$at_groups_selected" | sed 's/;.*//'`
	# Smash the newlines.
	at_groups="$at_groups`echo $at_groups_selected` "
	;;

    *=*)
	at_envvar=`expr "x$at_option" : 'x\([^=]*\)='`
	# Reject names that are not valid shell variable names.
	expr "x$at_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
	  { echo "$as_me: error: invalid variable name: $at_envvar" >&2
   { (exit 1); exit 1; }; }
	at_value=`echo "$at_optarg" | sed "s/'/'\\\\\\\\''/g"`
	eval "$at_envvar='$at_value'"
	export $at_envvar
	# Propagate to debug scripts.
	at_debug_args="$at_debug_args $at_envvar='$at_value'"
	;;

     *) echo "$as_me: invalid option: $at_option" >&2
	echo "Try \`$0 --help' for more information." >&2
	exit 1
	;;
  esac
done

# Selected test groups.
if test -z "$at_groups"; then
  at_groups=$at_groups_all
else
  # Sort the tests, removing duplicates:
  at_groups=`echo $at_groups | tr ' ' "$as_nl" | sort -nu`
  # and add banners.  (Passing at_groups_all is tricky--see the comment
  # starting with "Passing at_groups is tricky.")
  at_groups=`echo "$at_groups$as_nl $at_groups_all" |
    awk 'BEGIN { FS = "@" } # Effectively switch off field splitting.
	/^$/ { next }  # Ignore the empty line.
	!/ / { groups++; selected[$ 0] = 1; next }
	# The last line, containing at_groups_all.
	{
		n = split($ 0, a, " ")
		# If there are several tests, select their banners:
		if (groups > 1) {
			for (i = 1; i <= n; i++) {
				if (a[i] ~ /^banner-/)
					banner = a[i]
				else if (banner != "" && selected[a[i]] == 1)
					selected[banner] = 1
			}
		}
		for (i = 1; i <= n; i++)
			if (selected[a[i]] == 1)
				list = list " " a[i]
		print list
	}'`
fi

# Help message.
if $at_help_p; then
  cat <<_ATEOF
Usage: $0 [OPTION]... [VARIABLE=VALUE]... [TESTS]

Run all the tests, or the selected TESTS, given by numeric ranges, and
save a detailed log file.  Upon failure, create debugging scripts.

You should not change environment variables unless explicitly passed
as command line arguments.  Set \`AUTOTEST_PATH' to select the executables
to exercise.  Each relative directory is expanded as build and source
directories relatively to the top level of this distribution.  E.g.,

  $ $0 AUTOTEST_PATH=bin

possibly amounts into

  PATH=/tmp/foo-1.0/bin:/src/foo-1.0/bin:\$PATH
_ATEOF
cat <<_ATEOF

Operation modes:
  -h, --help     print the help message, then exit
  -V, --version  print version number, then exit
  -c, --clean    remove all the files this test suite might create and exit
  -l, --list     describes all the tests, or the selected TESTS
_ATEOF
cat <<_ATEOF

Execution tuning:
  -k, --keywords=KEYWORDS
	         select the tests matching all the comma-separated KEYWORDS
	         multiple \`-k' accumulate; prefixed \`!' negates a KEYWORD
  -e, --errexit  abort as soon as a test fails; implies --debug
  -v, --verbose  force more detailed output
	         default for debugging scripts
  -d, --debug    inhibit clean up and top-level logging
	         default for debugging scripts
  -x, --trace    enable tests shell tracing
_ATEOF
cat <<_ATEOF

Report bugs to <monotone-devel@nongnu.org>.
_ATEOF
  exit 0
fi

# List of tests.
if $at_list_p; then
  cat <<_ATEOF
monotone 0.27 test suite: integration tests test groups:

 NUM: FILE-NAME:LINE     TEST-GROUP-NAME
      KEYWORDS

_ATEOF
  # Passing at_groups is tricky.  We cannot use it to form a literal string
  # or regexp because of the limitation of AIX awk.  And Solaris' awk
  # doesn't grok more than 99 fields in a record, so we have to use `split'.
  echo "$at_groups$as_nl$at_help_all" |
    awk 'BEGIN { FS = ";" }
	 NR == 1 {
	   for (n = split($ 0, a, " "); n; n--) selected[a[n]] = 1
	   next
	 }
	 {
	   if (selected[$ 1]) {
	     printf " %3d: %-18s %s\n", $ 1, $ 2, $ 3
	     if ($ 4) printf "      %s\n", $ 4
	   }
	 }'
  exit 0
fi
if $at_version_p; then
  echo "$as_me (monotone 0.27)"
  cat <<\_ACEOF

Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software
Foundation, Inc.
This test suite is free software; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
_ACEOF
  exit 0
fi

# Don't take risks: use only absolute directories in PATH.
#
# For stand-alone test suites, AUTOTEST_PATH is relative to `.'.
#
# For embedded test suites, AUTOTEST_PATH is relative to the top level
# of the package.  Then expand it into build/src parts, since users
# may create executables in both places.
AUTOTEST_PATH=`echo $AUTOTEST_PATH | sed "s&:&$PATH_SEPARATOR&g"`
at_path=
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $AUTOTEST_PATH $PATH
do
  IFS=$as_save_IFS
  test -z "$as_dir" && as_dir=.
  test -n "$at_path" && at_path=$at_path$PATH_SEPARATOR
case $as_dir in
  [\\/]* | ?:[\\/]* )
    at_path=$at_path$as_dir
    ;;
  * )
    if test -z "$at_top_build_prefix"; then
      # Stand-alone test suite.
      at_path=$at_path$as_dir
    else
      # Embedded test suite.
      at_path=$at_path$at_top_build_prefix$as_dir$PATH_SEPARATOR
      at_path=$at_path$at_top_srcdir/$as_dir
    fi
    ;;
esac
done
IFS=$as_save_IFS


# Now build and simplify PATH.
#
# There might be directories that don't exist, but don't redirect
# builtins' (eg., cd) stderr directly: Ultrix's sh hates that.
PATH=
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $at_path
do
  IFS=$as_save_IFS
  test -z "$as_dir" && as_dir=.
  as_dir=`(cd "$as_dir" && pwd) 2>/dev/null`
test -d "$as_dir" || continue
case $PATH in
	          $as_dir                 | \
	          $as_dir$PATH_SEPARATOR* | \
  *$PATH_SEPARATOR$as_dir                 | \
  *$PATH_SEPARATOR$as_dir$PATH_SEPARATOR* ) ;;

  '') PATH=$as_dir ;;
   *) PATH=$PATH$PATH_SEPARATOR$as_dir ;;
esac
done
IFS=$as_save_IFS

export PATH

# Setting up the FDs.
# 5 is the log file.  Not to be overwritten if `-d'.

if $at_debug_p; then
  at_suite_log=/dev/null
else
  : >"$at_suite_log"
fi
exec 5>>"$at_suite_log"

# Banners and logs.
cat <<\_ASBOX
## -------------------------------------------- ##
## monotone 0.27 test suite: integration tests. ##
## -------------------------------------------- ##
_ASBOX
{
  cat <<\_ASBOX
## -------------------------------------------- ##
## monotone 0.27 test suite: integration tests. ##
## -------------------------------------------- ##
_ASBOX
  echo

  echo "$as_me: command line was:"
  echo "  $ $0 $at_cli_args"
  echo

  # Try to find a few ChangeLogs in case it might help determining the
  # exact version.  Use the relative dir: if the top dir is a symlink,
  # find will not follow it (and options to follow the links are not
  # portable), which would result in no output here.
  if test -n "$at_top_srcdir"; then
    cat <<\_ASBOX
## ----------- ##
## ChangeLogs. ##
## ----------- ##
_ASBOX
    echo
    for at_file in `find "$at_top_srcdir" -name ChangeLog -print`
    do
      echo "$as_me: $at_file:"
      sed 's/^/| /;10q' $at_file
      echo
    done

    {
cat <<_ASUNAME
## --------- ##
## Platform. ##
## --------- ##

hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
uname -m = `(uname -m) 2>/dev/null || echo unknown`
uname -r = `(uname -r) 2>/dev/null || echo unknown`
uname -s = `(uname -s) 2>/dev/null || echo unknown`
uname -v = `(uname -v) 2>/dev/null || echo unknown`

/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`

/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`

_ASUNAME

as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
  IFS=$as_save_IFS
  test -z "$as_dir" && as_dir=.
  echo "PATH: $as_dir"
done
IFS=$as_save_IFS

}
    echo
  fi

  # Contents of the config files.
  for at_file in atconfig atlocal
  do
    test -r $at_file || continue
    echo "$as_me: $at_file:"
    sed 's/^/| /' $at_file
    echo
  done

  cat <<\_ASBOX
## ---------------- ##
## Tested programs. ##
## ---------------- ##
_ASBOX
  echo
} >&5

# Report what programs are being tested.
for at_program in : $at_tested
do
  test "$at_program" = : && continue
  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
  IFS=$as_save_IFS
  test -z "$as_dir" && as_dir=.
  test -f "$as_dir/$at_program" && break
done
IFS=$as_save_IFS

  if test -f "$as_dir/$at_program"; then
    {
      echo "$at_srcdir/testsuite.at:12: $as_dir/$at_program --version"
      "$as_dir/$at_program" --version
      echo
    } >&5 2>&1
  else
    { { echo "$as_me:$LINENO: error: cannot find $at_program" >&5
echo "$as_me: error: cannot find $at_program" >&2;}
   { (exit 1); exit 1; }; }
  fi
done

{
  cat <<\_ASBOX
## ------------------ ##
## Running the tests. ##
## ------------------ ##
_ASBOX
} >&5

at_start_date=`date`
at_start_time=`date +%s 2>/dev/null`
echo "$as_me: starting at: $at_start_date" >&5
at_xpass_list=
at_xfail_list=
at_pass_list=
at_fail_list=
at_skip_list=
at_group_count=0

# Create the master directory if it doesn't already exist.
test -d "$at_suite_dir" ||
  mkdir "$at_suite_dir" ||
  { { echo "$as_me:$LINENO: error: cannot create '$at_suite_dir'" >&5
echo "$as_me: error: cannot create '$at_suite_dir'" >&2;}
   { (exit 1); exit 1; }; }

# Can we diff with `/dev/null'?  DU 5.0 refuses.
if diff /dev/null /dev/null >/dev/null 2>&1; then
  at_devnull=/dev/null
else
  at_devnull=$at_suite_dir/devnull
  >"$at_devnull"
fi

# Use `diff -u' when possible.
if at_diff=`diff -u "$at_devnull" "$at_devnull" 2>&1` && test -z "$at_diff"
then
  at_diff='diff -u'
else
  at_diff=diff
fi


for at_group in $at_groups
do
  # Be sure to come back to the top test directory.
  cd "$at_suite_dir"

  case $at_group in
    banner-*)
      at_group_log=$at_suite_log
      ;;

    *)
      at_group_normalized=$at_group

  while :; do
    case $at_group_normalized in #(
    $at_format*) break;;
    esac
    at_group_normalized=0$at_group_normalized
  done


      # Create a fresh directory for the next test group, and enter.
      at_group_dir=$at_suite_dir/$at_group_normalized
      at_group_log=$at_group_dir/$as_me.log
      if test -d "$at_group_dir"; then
	find "$at_group_dir" -type d ! -perm -700 -exec chmod u+rwx \{\} \;
	rm -fr "$at_group_dir"
      fi
      # Be tolerant if the above `rm' was not able to remove the directory.
      { as_dir=$at_group_dir
  case $as_dir in #(
  -*) as_dir=./$as_dir;;
  esac
  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
    as_dirs=
    while :; do
      case $as_dir in #(
      *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
      *) as_qdir=$as_dir;;
      esac
      as_dirs="'$as_qdir' $as_dirs"
      as_dir=`$as_dirname -- "$as_dir" ||
$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
	 X"$as_dir" : 'X\(//\)[^/]' \| \
	 X"$as_dir" : 'X\(//\)$' \| \
	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
echo X"$as_dir" |
    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
	    s//\1/
	    q
	  }
	  /^X\(\/\/\)[^/].*/{
	    s//\1/
	    q
	  }
	  /^X\(\/\/\)$/{
	    s//\1/
	    q
	  }
	  /^X\(\/\).*/{
	    s//\1/
	    q
	  }
	  s/.*/./; q'`
      test -d "$as_dir" && break
    done
    test -z "$as_dirs" || eval "mkdir $as_dirs"
  } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
echo "$as_me: error: cannot create directory $as_dir" >&2;}
   { (exit 1); exit 1; }; }; }
      cd $at_group_dir
      ;;
  esac

  echo 0 > "$at_status_file"

  # Clearly separate the test groups when verbose.
  test $at_group_count != 0 && $at_verbose

  # In verbose mode, append to the log file *and* show on
  # the standard output; in quiet mode only write to the log
  if test $at_verbose = echo; then
    at_tee_pipe='tee -a "$at_group_log"'
  else
    at_tee_pipe='cat >> "$at_group_log"'
  fi

  case $at_group in
  1 ) # 1. t_null.at:3: basic invocations and options
    at_setup_line='t_null.at:3'
    at_desc='basic invocations and options'
    $at_quiet $ECHO_N "  1: basic invocations and options                $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "1. t_null.at:3: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_null.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_null.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_null.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_null.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_null.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_null.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_null.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_null.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_null.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_null.at:4: rm test_keys"
echo t_null.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_null.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_null.at:6: $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --norc"
echo t_null.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --norc ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --norc ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_null.at:6: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_null.at:7: $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --help"
echo t_null.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --help ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --help ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_null.at:7: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_null.at:8: $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --version"
echo t_null.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --version ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --version ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_null.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_null.at:9: $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --nostd   --help"
echo t_null.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --nostd   --help ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --nostd   --help ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_null.at:9: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_null.at:10: $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --norc    --help"
echo t_null.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --norc    --help ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --norc    --help ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_null.at:10: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_null.at:11: $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --debug --help"
echo t_null.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --debug --help ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --debug --help ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_null.at:11: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_null.at:12: $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --quiet   --help"
echo t_null.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --quiet   --help ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --quiet   --help ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_null.at:12: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_null.at:13: $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --db=foo.db   --help"
echo t_null.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --db=foo.db   --help ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --db=foo.db   --help ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_null.at:13: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_null.at:14: $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --db foo.db   --help"
echo t_null.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --db foo.db   --help ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --db foo.db   --help ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_null.at:14: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_null.at:15: $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --key=someone@foo.com   --help"
echo t_null.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --key=someone@foo.com   --help ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --key=someone@foo.com   --help ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_null.at:15: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_null.at:16: $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --key someone@foo.com   --help"
echo t_null.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --key someone@foo.com   --help ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --key someone@foo.com   --help ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_null.at:16: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  2 ) # 2. t_scan.at:3: scanning trees
    at_setup_line='t_scan.at:3'
    at_desc='scanning trees'
    $at_quiet $ECHO_N "  2: scanning trees                               $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "2. t_scan.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_scan.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_scan.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_scan.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_scan.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_scan.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_scan.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_scan.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_scan.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_scan.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_scan.at:5: rm test_keys"
echo t_scan.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_scan.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_scan.at:7: mkdir foo"
echo t_scan.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_scan.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_scan.at:8: mkdir foo/bar"
echo t_scan.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir foo/bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir foo/bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_scan.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >testfile0 <<'_ATEOF'
version 0 of first test file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_scan.at:11:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o testfile0
fi
"
echo t_scan.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o testfile0
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o testfile0
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_scan.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# Needed if this file (t_scan.at) was checked out using CR+LF

cat >foo/testfile1 <<'_ATEOF'
version 0 of second test file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_scan.at:16:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o foo/testfile1
fi
"
echo t_scan.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o foo/testfile1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o foo/testfile1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_scan.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >foo/bar/testfile2 <<'_ATEOF'
version 0 of third test file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_scan.at:20:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o foo/bar/testfile2
fi
"
echo t_scan.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o foo/bar/testfile2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o foo/bar/testfile2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_scan.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >manifest <<'_ATEOF'
format_version "1"

dir ""

dir "foo"

dir "foo/bar"

   file "foo/bar/testfile2"
content [85d521304e3660f05bbb458b05d0efc6e981f832]

   file "foo/testfile1"
content [14c5b672e2181377e41e6d8c5ce21457d8342667]

   file "testfile0"
content [5c39de9ca49b3aa34fa21f5778954665d947476c]
_ATEOF


$at_traceoff
echo "$at_srcdir/t_scan.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile0 foo"
echo t_scan.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile0 foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile0 foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile0 foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_scan.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_scan.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah'"
echo t_scan.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_scan.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_scan.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of"
echo t_scan.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_scan.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_scan.at:43:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_scan.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_scan.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_scan.at:44: cmp stdout manifest"
echo t_scan.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_scan.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  3 ) # 3. t_import.at:3: importing a file
    at_setup_line='t_import.at:3'
    at_desc='importing a file'
    $at_quiet $ECHO_N "  3: importing a file                             $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "3. t_import.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_import.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_import.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_import.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_import.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_import.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_import.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_import.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_import.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_import.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_import.at:5: rm test_keys"
echo t_import.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_import.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >importme <<'_ATEOF'
version 0 of test file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_import.at:9:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o importme
fi
"
echo t_import.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o importme
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o importme
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_import.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


TSHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify importme`

$at_traceoff
echo "$at_srcdir/t_import.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add importme"
echo t_import.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add importme" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add importme ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add importme ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_import.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_import.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah'"
echo t_import.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_import.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_import.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_file \$TSHA"
echo t_import.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_import.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_import.at:16:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_import.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_import.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_import.at:17: cmp importme stdout"
echo t_import.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp importme stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp importme stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_import.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  4 ) # 4. t_genkey.at:3: generating and extracting keys and certs
    at_setup_line='t_genkey.at:3'
    at_desc='generating and extracting keys and certs'
    $at_quiet $ECHO_N "  4: generating and extracting keys and certs     $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "4. t_genkey.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_genkey.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_genkey.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_genkey.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_genkey.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_genkey.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_genkey.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_genkey.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_genkey.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_genkey.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_genkey.at:5: rm test_keys"
echo t_genkey.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_genkey.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



TKEY=happy@bogus.com

# fail to enter a passphrase
$at_traceoff
echo "$at_srcdir/t_genkey.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net genkey \$TKEY </dev/null"
echo t_genkey.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $TKEY </dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $TKEY </dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $TKEY </dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_genkey.at:10: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# fail to enter passphrase twice
$at_traceoff
echo "$at_srcdir/t_genkey.at:13: echo \$TKEY | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net genkey \$TKEY"
echo t_genkey.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $TKEY | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $TKEY" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $TKEY | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $TKEY ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $TKEY | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $TKEY ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_genkey.at:13: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# generate a new key
$at_traceoff
echo "$at_srcdir/t_genkey.at:16: (echo \$TKEY; echo \$TKEY) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net genkey \$TKEY"
echo t_genkey.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo $TKEY; echo $TKEY) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $TKEY" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo $TKEY; echo $TKEY) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $TKEY ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo $TKEY; echo $TKEY) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $TKEY ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_genkey.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check key exists
$at_traceoff
echo "$at_srcdir/t_genkey.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls keys"
echo t_genkey.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_genkey.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_genkey.at:20: grep \$TKEY stdout"
echo t_genkey.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $TKEY stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $TKEY stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $TKEY stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_genkey.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check globbing on name works
$at_traceoff
echo "$at_srcdir/t_genkey.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls keys happy\\*"
echo t_genkey.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls keys happy\\*" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls keys happy\* ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls keys happy\* ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_genkey.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_genkey.at:24: grep \$TKEY stdout"
echo t_genkey.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $TKEY stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $TKEY stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $TKEY stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_genkey.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check globbing on bogus name misses key
$at_traceoff
echo "$at_srcdir/t_genkey.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls keys burp\\*"
echo t_genkey.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls keys burp\\*" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls keys burp\* ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls keys burp\* ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_genkey.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_genkey.at:28: grep \$TKEY stdout"
echo t_genkey.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $TKEY stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $TKEY stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $TKEY stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_genkey.at:28: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# second section, check making certs with this key

cat >input.txt <<'_ATEOF'
blah blah blah
_ATEOF


$at_traceoff
echo "$at_srcdir/t_genkey.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add input.txt"
echo t_genkey.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_genkey.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_genkey.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah'"
echo t_genkey.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_genkey.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

TSHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_genkey.at:39: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --key=\$TKEY cert \$TSHA color pink"
echo t_genkey.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --key=$TKEY cert $TSHA color pink" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --key=$TKEY cert $TSHA color pink ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --key=$TKEY cert $TSHA color pink ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_genkey.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_genkey.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls certs \$TSHA"
echo t_genkey.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $TSHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $TSHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $TSHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_genkey.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_genkey.at:41: grep pink stdout"
echo t_genkey.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep pink stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep pink stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_genkey.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >cert-data <<'_ATEOF'
yellow
_ATEOF

$at_traceoff
echo "$at_srcdir/t_genkey.at:45: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --key=\$TKEY cert \$TSHA color < cert-data"
echo t_genkey.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --key=$TKEY cert $TSHA color < cert-data" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --key=$TKEY cert $TSHA color < cert-data ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --key=$TKEY cert $TSHA color < cert-data ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_genkey.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_genkey.at:46: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls certs \$TSHA"
echo t_genkey.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $TSHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $TSHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $TSHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_genkey.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_genkey.at:47: grep pink stdout"
echo t_genkey.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep pink stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep pink stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_genkey.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_genkey.at:48: grep yellow stdout"
echo t_genkey.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep yellow stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep yellow stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_genkey.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# third section, keys with a + in the user portion work, keys with a
# + in the domain portion don't work.
GOODKEY=test+thing@example.com

$at_traceoff
echo "$at_srcdir/t_genkey.at:54: (echo \$GOODKEY; echo \$GOODKEY) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net genkey \$GOODKEY"
echo t_genkey.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo $GOODKEY; echo $GOODKEY) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $GOODKEY" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo $GOODKEY; echo $GOODKEY) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $GOODKEY ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo $GOODKEY; echo $GOODKEY) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $GOODKEY ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_genkey.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

#exists
$at_traceoff
echo "$at_srcdir/t_genkey.at:56: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls keys"
echo t_genkey.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_genkey.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_genkey.at:57: grep \$GOODKEY stdout"
echo t_genkey.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $GOODKEY stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $GOODKEY stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $GOODKEY stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_genkey.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# bad keys fail
BADKEY1=test+thing@example+456.com
$at_traceoff
echo "$at_srcdir/t_genkey.at:61: (echo \$BADKEY1; echo \$BADKEY1) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net genkey \$BADKEY1"
echo t_genkey.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo $BADKEY1; echo $BADKEY1) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $BADKEY1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo $BADKEY1; echo $BADKEY1) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $BADKEY1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo $BADKEY1; echo $BADKEY1) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $BADKEY1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_genkey.at:61: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

BADKEY2=testthing@example+123.com
$at_traceoff
echo "$at_srcdir/t_genkey.at:63: (echo \$BADKEY2; echo \$BADKEY2) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net genkey \$BADKEY2"
echo t_genkey.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo $BADKEY2; echo $BADKEY2) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $BADKEY2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo $BADKEY2; echo $BADKEY2) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $BADKEY2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo $BADKEY2; echo $BADKEY2) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $BADKEY2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_genkey.at:63: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# fourth section, keys with all supported characters (for the user portion)
# in the user portion work, keys with the same in the domain portion don't
# work.
GOODKEY=test_a_+thing.ie@example.com

$at_traceoff
echo "$at_srcdir/t_genkey.at:70: (echo \$GOODKEY; echo \$GOODKEY) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net genkey \$GOODKEY"
echo t_genkey.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo $GOODKEY; echo $GOODKEY) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $GOODKEY" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo $GOODKEY; echo $GOODKEY) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $GOODKEY ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo $GOODKEY; echo $GOODKEY) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $GOODKEY ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_genkey.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

#exists
$at_traceoff
echo "$at_srcdir/t_genkey.at:72: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls keys"
echo t_genkey.at:72 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_genkey.at:72: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_genkey.at:73: grep \$GOODKEY stdout"
echo t_genkey.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $GOODKEY stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $GOODKEY stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $GOODKEY stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_genkey.at:73: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# bad keys fail
BADKEY1=test_a_+thing.ie@exa_m+p.le.com
$at_traceoff
echo "$at_srcdir/t_genkey.at:77: (echo \$BADKEY1; echo \$BADKEY1) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net genkey \$BADKEY1"
echo t_genkey.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo $BADKEY1; echo $BADKEY1) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $BADKEY1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo $BADKEY1; echo $BADKEY1) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $BADKEY1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo $BADKEY1; echo $BADKEY1) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $BADKEY1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_genkey.at:77: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

BADKEY2=testthing@exa_m+p.le123.com
$at_traceoff
echo "$at_srcdir/t_genkey.at:79: (echo \$BADKEY2; echo \$BADKEY2) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net genkey \$BADKEY2"
echo t_genkey.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo $BADKEY2; echo $BADKEY2) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $BADKEY2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo $BADKEY2; echo $BADKEY2) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $BADKEY2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo $BADKEY2; echo $BADKEY2) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $BADKEY2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_genkey.at:79: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  5 ) # 5. t_unidiff.at:3: calculation of unidiffs
    at_setup_line='t_unidiff.at:3'
    at_desc='calculation of unidiffs'
    $at_quiet $ECHO_N "  5: calculation of unidiffs                      $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "5. t_unidiff.at:3: testing ..."
      $at_traceon



if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_unidiff.at:5: echo \$UNB64_COMMAND"
echo t_unidiff.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_unidiff.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_unidiff.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_unidiff.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_unidiff.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff.at:7: rm test_keys"
echo t_unidiff.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >firstfile.b64 <<'_ATEOF'
LyogU3Vicm91dGluZXMgc2hhcmVkIGJ5IGFsbCBsYW5ndWFnZXMgdGhhdCBhcmUgdmFyaWFu
dHMgb2YgQy4KICAgQ29weXJpZ2h0IChDKSAxOTkyLCA5MywgOTQsIDk1LCA5NiwgMTk5NyBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KClRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdO
VSBDQy4KCkdOVSBDQyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IgbW9kaWZ5Cml0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKYW55IGxhdGVy
IHZlcnNpb24uCgpHTlUgQ0MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQpHTlUgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKYWxvbmcgd2l0aCBHTlUgQ0M7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0bwp0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCkJvc3Rvbiwg
TUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KCiNpbmNsdWRlICJjb25maWcuaCIKI2luY2x1ZGUg
InRyZWUuaCIKI2luY2x1ZGUgImMtbGV4LmgiCiNpbmNsdWRlICJjLXRyZWUuaCIKI2luY2x1
ZGUgImZsYWdzLmgiCiNpbmNsdWRlICJvYnN0YWNrLmgiCiNpbmNsdWRlIDxzdGRpby5oPgoj
aW5jbHVkZSA8Y3R5cGUuaD4KCiNpZm5kZWYgV0NIQVJfVFlQRV9TSVpFCiNpZmRlZiBJTlRf
VFlQRV9TSVpFCiNkZWZpbmUgV0NIQVJfVFlQRV9TSVpFIElOVF9UWVBFX1NJWkUKI2Vsc2UK
I2RlZmluZSBXQ0hBUl9UWVBFX1NJWkUJQklUU19QRVJfV09SRAojZW5kaWYKI2VuZGlmCgpl
eHRlcm4gc3RydWN0IG9ic3RhY2sgcGVybWFuZW50X29ic3RhY2s7CgovKiBOb256ZXJvIG1l
YW5zIHRoZSBleHByZXNzaW9uIGJlaW5nIHBhcnNlZCB3aWxsIG5ldmVyIGJlIGV2YWx1YXRl
ZC4KICAgVGhpcyBpcyBhIGNvdW50LCBzaW5jZSB1bmV2YWx1YXRlZCBleHByZXNzaW9ucyBj
YW4gbmVzdC4gICovCmludCBza2lwX2V2YWx1YXRpb247CgplbnVtIGF0dHJzIHtBX1BBQ0tF
RCwgQV9OT0NPTU1PTiwgQV9DT01NT04sIEFfTk9SRVRVUk4sIEFfQ09OU1QsIEFfVF9VTklP
TiwKCSAgICBBX0NPTlNUUlVDVE9SLCBBX0RFU1RSVUNUT1IsIEFfTU9ERSwgQV9TRUNUSU9O
LCBBX0FMSUdORUQsCgkgICAgQV9VTlVTRUQsIEFfRk9STUFULCBBX0ZPUk1BVF9BUkcsIEFf
V0VBSywgQV9BTElBU307CgpzdGF0aWMgdm9pZCBkZWNsYXJlX2hpZGRlbl9jaGFyX2FycmF5
CVBST1RPKChjaGFyICosIGNoYXIgKikpOwpzdGF0aWMgdm9pZCBhZGRfYXR0cmlidXRlCQlQ
Uk9UTygoZW51bSBhdHRycywgY2hhciAqLAoJCQkJCSAgICAgICBpbnQsIGludCwgaW50KSk7
CnN0YXRpYyB2b2lkIGluaXRfYXR0cmlidXRlcwkJUFJPVE8oKHZvaWQpKTsKc3RhdGljIHZv
aWQgcmVjb3JkX2ludGVybmF0aW9uYWxfZm9ybWF0CVBST1RPKCh0cmVlLCB0cmVlLCBpbnQp
KTsKCi8qIE1ha2UgYmluZGluZ3MgZm9yIF9fRlVOQ1RJT05fXyBhbmQgX19QUkVUVFlfRlVO
Q1RJT05fXy4gICovCgp2b2lkCmRlY2xhcmVfZnVuY3Rpb25fbmFtZSAoKQp7CiAgY2hhciAq
bmFtZSwgKnByaW50YWJsZV9uYW1lOwoKICBpZiAoY3VycmVudF9mdW5jdGlvbl9kZWNsID09
IE5VTEwpCiAgICB7CiAgICAgIG5hbWUgPSAiIjsKICAgICAgcHJpbnRhYmxlX25hbWUgPSAi
dG9wIGxldmVsIjsKICAgIH0KICBlbHNlCiAgICB7CiAgICAgIC8qIEFsbG93IGZ1bmN0aW9u
cyB0byBiZSBuYW1lbGVzcyAoc3VjaCBhcyBhcnRpZmljaWFsIG9uZXMpLiAgKi8KICAgICAg
aWYgKERFQ0xfTkFNRSAoY3VycmVudF9mdW5jdGlvbl9kZWNsKSkKICAgICAgICBuYW1lID0g
SURFTlRJRklFUl9QT0lOVEVSIChERUNMX05BTUUgKGN1cnJlbnRfZnVuY3Rpb25fZGVjbCkp
OwogICAgICBlbHNlCgluYW1lID0gIiI7CiAgICAgIHByaW50YWJsZV9uYW1lID0gKCpkZWNs
X3ByaW50YWJsZV9uYW1lKSAoY3VycmVudF9mdW5jdGlvbl9kZWNsLCAyKTsKICAgIH0KCiAg
ZGVjbGFyZV9oaWRkZW5fY2hhcl9hcnJheSAoIl9fRlVOQ1RJT05fXyIsIG5hbWUpOwogIGRl
Y2xhcmVfaGlkZGVuX2NoYXJfYXJyYXkgKCJfX1BSRVRUWV9GVU5DVElPTl9fIiwgcHJpbnRh
YmxlX25hbWUpOwp9CgpzdGF0aWMgdm9pZApkZWNsYXJlX2hpZGRlbl9jaGFyX2FycmF5IChu
YW1lLCB2YWx1ZSkKICAgICBjaGFyICpuYW1lLCAqdmFsdWU7CnsKICB0cmVlIGRlY2wsIHR5
cGUsIGluaXQ7CiAgaW50IHZsZW47CgogIC8qIElmIHRoZSBkZWZhdWx0IHNpemUgb2YgY2hh
ciBhcnJheXMgaXNuJ3QgYmlnIGVub3VnaCBmb3IgdGhlIG5hbWUsCiAgICAgb3IgaWYgd2Ug
d2FudCB0byBnaXZlIHdhcm5pbmdzIGZvciBsYXJnZSBvYmplY3RzLCBtYWtlIGEgYmlnZ2Vy
IG9uZS4gICovCiAgdmxlbiA9IHN0cmxlbiAodmFsdWUpICsgMTsKICB0eXBlID0gY2hhcl9h
cnJheV90eXBlX25vZGU7CiAgaWYgKFRSRUVfSU5UX0NTVF9MT1cgKFRZUEVfTUFYX1ZBTFVF
IChUUkVFX1RZUEUgKHR5cGUpKSkgPCB2bGVuCiAgICAgIHx8IHdhcm5fbGFyZ2VyX3RoYW4p
CiAgICB0eXBlID0gYnVpbGRfYXJyYXlfdHlwZSAoY2hhcl90eXBlX25vZGUsCgkJCSAgICAg
YnVpbGRfaW5kZXhfdHlwZSAoYnVpbGRfaW50XzIgKHZsZW4sIDApKSk7CiAgcHVzaF9vYnN0
YWNrc19ub2NoYW5nZSAoKTsKICBkZWNsID0gYnVpbGRfZGVjbCAoVkFSX0RFQ0wsIGdldF9p
ZGVudGlmaWVyIChuYW1lKSwgdHlwZSk7CiAgVFJFRV9TVEFUSUMgKGRlY2wpID0gMTsKICBU
UkVFX1JFQURPTkxZIChkZWNsKSA9IDE7CiAgVFJFRV9BU01fV1JJVFRFTiAoZGVjbCkgPSAx
OwogIERFQ0xfU09VUkNFX0xJTkUgKGRlY2wpID0gMDsKICBERUNMX0FSVElGSUNJQUwgKGRl
Y2wpID0gMTsKICBERUNMX0lOX1NZU1RFTV9IRUFERVIgKGRlY2wpID0gMTsKICBERUNMX0lH
Tk9SRURfUCAoZGVjbCkgPSAxOwogIGluaXQgPSBidWlsZF9zdHJpbmcgKHZsZW4sIHZhbHVl
KTsKICBUUkVFX1RZUEUgKGluaXQpID0gdHlwZTsKICBERUNMX0lOSVRJQUwgKGRlY2wpID0g
aW5pdDsKICBmaW5pc2hfZGVjbCAocHVzaGRlY2wgKGRlY2wpLCBpbml0LCBOVUxMX1RSRUUp
Owp9CgovKiBHaXZlbiBhIGNoYWluIG9mIFNUUklOR19DU1Qgbm9kZXMsCiAgIGNvbmNhdGVu
YXRlIHRoZW0gaW50byBvbmUgU1RSSU5HX0NTVAogICBhbmQgZ2l2ZSBpdCBhIHN1aXRhYmxl
IGFycmF5LW9mLWNoYXJzIGRhdGEgdHlwZS4gICovCgp0cmVlCmNvbWJpbmVfc3RyaW5ncyAo
c3RyaW5ncykKICAgICB0cmVlIHN0cmluZ3M7CnsKICByZWdpc3RlciB0cmVlIHZhbHVlLCB0
OwogIHJlZ2lzdGVyIGludCBsZW5ndGggPSAxOwogIGludCB3aWRlX2xlbmd0aCA9IDA7CiAg
aW50IHdpZGVfZmxhZyA9IDA7CiAgaW50IHdjaGFyX2J5dGVzID0gVFlQRV9QUkVDSVNJT04g
KHdjaGFyX3R5cGVfbm9kZSkgLyBCSVRTX1BFUl9VTklUOwogIGludCBuY2hhcnM7CgogIGlm
IChUUkVFX0NIQUlOIChzdHJpbmdzKSkKICAgIHsKICAgICAgLyogTW9yZSB0aGFuIG9uZSBp
biB0aGUgY2hhaW4sIHNvIGNvbmNhdGVuYXRlLiAgKi8KICAgICAgcmVnaXN0ZXIgY2hhciAq
cCwgKnE7CgogICAgICAvKiBEb24ndCBpbmNsdWRlIHRoZSBcMCBhdCB0aGUgZW5kIG9mIGVh
Y2ggc3Vic3RyaW5nLAoJIGV4Y2VwdCBmb3IgdGhlIGxhc3Qgb25lLgoJIENvdW50IHdpZGUg
c3RyaW5ncyBhbmQgb3JkaW5hcnkgc3RyaW5ncyBzZXBhcmF0ZWx5LiAgKi8KICAgICAgZm9y
ICh0ID0gc3RyaW5nczsgdDsgdCA9IFRSRUVfQ0hBSU4gKHQpKQoJewoJICBpZiAoVFJFRV9U
WVBFICh0KSA9PSB3Y2hhcl9hcnJheV90eXBlX25vZGUpCgkgICAgewoJICAgICAgd2lkZV9s
ZW5ndGggKz0gKFRSRUVfU1RSSU5HX0xFTkdUSCAodCkgLSB3Y2hhcl9ieXRlcyk7CgkgICAg
ICB3aWRlX2ZsYWcgPSAxOwoJICAgIH0KCSAgZWxzZQoJICAgIGxlbmd0aCArPSAoVFJFRV9T
VFJJTkdfTEVOR1RIICh0KSAtIDEpOwoJfQoKICAgICAgLyogSWYgYW55dGhpbmcgaXMgd2lk
ZSwgdGhlIG5vbi13aWRlcyB3aWxsIGJlIGNvbnZlcnRlZCwKCSB3aGljaCBtYWtlcyB0aGVt
IHRha2UgbW9yZSBzcGFjZS4gICovCiAgICAgIGlmICh3aWRlX2ZsYWcpCglsZW5ndGggPSBs
ZW5ndGggKiB3Y2hhcl9ieXRlcyArIHdpZGVfbGVuZ3RoOwoKICAgICAgcCA9IHNhdmVhbGxv
YyAobGVuZ3RoKTsKCiAgICAgIC8qIENvcHkgdGhlIGluZGl2aWR1YWwgc3RyaW5ncyBpbnRv
IHRoZSBuZXcgY29tYmluZWQgc3RyaW5nLgoJIElmIHRoZSBjb21iaW5lZCBzdHJpbmcgaXMg
d2lkZSwgY29udmVydCB0aGUgY2hhcnMgdG8gaW50cwoJIGZvciBhbnkgaW5kaXZpZHVhbCBz
dHJpbmdzIHRoYXQgYXJlIG5vdCB3aWRlLiAgKi8KCiAgICAgIHEgPSBwOwogICAgICBmb3Ig
KHQgPSBzdHJpbmdzOyB0OyB0ID0gVFJFRV9DSEFJTiAodCkpCgl7CgkgIGludCBsZW4gPSAo
VFJFRV9TVFJJTkdfTEVOR1RIICh0KQoJCSAgICAgLSAoKFRSRUVfVFlQRSAodCkgPT0gd2No
YXJfYXJyYXlfdHlwZV9ub2RlKQoJCQk/IHdjaGFyX2J5dGVzIDogMSkpOwoJICBpZiAoKFRS
RUVfVFlQRSAodCkgPT0gd2NoYXJfYXJyYXlfdHlwZV9ub2RlKSA9PSB3aWRlX2ZsYWcpCgkg
ICAgewoJICAgICAgYmNvcHkgKFRSRUVfU1RSSU5HX1BPSU5URVIgKHQpLCBxLCBsZW4pOwoJ
ICAgICAgcSArPSBsZW47CgkgICAgfQoJICBlbHNlCgkgICAgewoJICAgICAgaW50IGk7Cgkg
ICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCgkJewoJCSAgaWYgKFdDSEFSX1RZUEVf
U0laRSA9PSBIT1NUX0JJVFNfUEVSX1NIT1JUKQoJCSAgICAoKHNob3J0ICopIHEpW2ldID0g
VFJFRV9TVFJJTkdfUE9JTlRFUiAodClbaV07CgkJICBlbHNlCgkJICAgICgoaW50ICopIHEp
W2ldID0gVFJFRV9TVFJJTkdfUE9JTlRFUiAodClbaV07CgkJfQoJICAgICAgcSArPSBsZW4g
KiB3Y2hhcl9ieXRlczsKCSAgICB9Cgl9CiAgICAgIGlmICh3aWRlX2ZsYWcpCgl7CgkgIGlu
dCBpOwoJICBmb3IgKGkgPSAwOyBpIDwgd2NoYXJfYnl0ZXM7IGkrKykKCSAgICAqcSsrID0g
MDsKCX0KICAgICAgZWxzZQoJKnEgPSAwOwoKICAgICAgdmFsdWUgPSBtYWtlX25vZGUgKFNU
UklOR19DU1QpOwogICAgICBUUkVFX1NUUklOR19QT0lOVEVSICh2YWx1ZSkgPSBwOwogICAg
ICBUUkVFX1NUUklOR19MRU5HVEggKHZhbHVlKSA9IGxlbmd0aDsKICAgICAgVFJFRV9DT05T
VEFOVCAodmFsdWUpID0gMTsKICAgIH0KICBlbHNlCiAgICB7CiAgICAgIHZhbHVlID0gc3Ry
aW5nczsKICAgICAgbGVuZ3RoID0gVFJFRV9TVFJJTkdfTEVOR1RIICh2YWx1ZSk7CiAgICAg
IGlmIChUUkVFX1RZUEUgKHZhbHVlKSA9PSB3Y2hhcl9hcnJheV90eXBlX25vZGUpCgl3aWRl
X2ZsYWcgPSAxOwogICAgfQoKICAvKiBDb21wdXRlIHRoZSBudW1iZXIgb2YgZWxlbWVudHMs
IGZvciB0aGUgYXJyYXkgdHlwZS4gICovIAogIG5jaGFycyA9IHdpZGVfZmxhZyA/IGxlbmd0
aCAvIHdjaGFyX2J5dGVzIDogbGVuZ3RoOwoKICAvKiBDcmVhdGUgdGhlIGFycmF5IHR5cGUg
Zm9yIHRoZSBzdHJpbmcgY29uc3RhbnQuCiAgICAgLVd3cml0ZS1zdHJpbmdzIHNheXMgbWFr
ZSB0aGUgc3RyaW5nIGNvbnN0YW50IGFuIGFycmF5IG9mIGNvbnN0IGNoYXIKICAgICBzbyB0
aGF0IGNvcHlpbmcgaXQgdG8gYSBub24tY29uc3QgcG9pbnRlciB3aWxsIGdldCBhIHdhcm5p
bmcuICAqLwogIGlmICh3YXJuX3dyaXRlX3N0cmluZ3MKICAgICAgJiYgKCEgZmxhZ190cmFk
aXRpb25hbCAgJiYgISBmbGFnX3dyaXRhYmxlX3N0cmluZ3MpKQogICAgewogICAgICB0cmVl
IGVsZW1lbnRzCgk9IGJ1aWxkX3R5cGVfdmFyaWFudCAod2lkZV9mbGFnID8gd2NoYXJfdHlw
ZV9ub2RlIDogY2hhcl90eXBlX25vZGUsCgkJCSAgICAgIDEsIDApOwogICAgICBUUkVFX1RZ
UEUgKHZhbHVlKQoJPSBidWlsZF9hcnJheV90eXBlIChlbGVtZW50cywKCQkJICAgIGJ1aWxk
X2luZGV4X3R5cGUgKGJ1aWxkX2ludF8yIChuY2hhcnMgLSAxLCAwKSkpOwogICAgfQogIGVs
c2UKICAgIFRSRUVfVFlQRSAodmFsdWUpCiAgICAgID0gYnVpbGRfYXJyYXlfdHlwZSAod2lk
ZV9mbGFnID8gd2NoYXJfdHlwZV9ub2RlIDogY2hhcl90eXBlX25vZGUsCgkJCSAgYnVpbGRf
aW5kZXhfdHlwZSAoYnVpbGRfaW50XzIgKG5jaGFycyAtIDEsIDApKSk7CiAgVFJFRV9DT05T
VEFOVCAodmFsdWUpID0gMTsKICBUUkVFX1NUQVRJQyAodmFsdWUpID0gMTsKICByZXR1cm4g
dmFsdWU7Cn0KDAovKiBUbyBzcGVlZCB1cCBwcm9jZXNzaW5nIG9mIGF0dHJpYnV0ZXMsIHdl
IG1haW50YWluIGFuIGFycmF5IG9mCiAgIElERU5USUZJRVJfTk9ERVMgYW5kIHRoZSBjb3Jy
ZXNwb25kaW5nIGF0dHJpYnV0ZSB0eXBlcy4gICovCgovKiBBcnJheSB0byBob2xkIGF0dHJp
YnV0ZSBpbmZvcm1hdGlvbi4gICovCgpzdGF0aWMgc3RydWN0IHtlbnVtIGF0dHJzIGlkOyB0
cmVlIG5hbWU7IGludCBtaW4sIG1heCwgZGVjbF9yZXE7fSBhdHRydGFiWzUwXTsKCnN0YXRp
YyBpbnQgYXR0cnRhYl9pZHggPSAwOwoKLyogQWRkIGFuIGVudHJ5IHRvIHRoZSBhdHRyaWJ1
dGUgdGFibGUgYWJvdmUuICAqLwoKc3RhdGljIHZvaWQKYWRkX2F0dHJpYnV0ZSAoaWQsIHN0
cmluZywgbWluX2xlbiwgbWF4X2xlbiwgZGVjbF9yZXEpCiAgICAgZW51bSBhdHRycyBpZDsK
ICAgICBjaGFyICpzdHJpbmc7CiAgICAgaW50IG1pbl9sZW4sIG1heF9sZW47CiAgICAgaW50
IGRlY2xfcmVxOwp7CiAgY2hhciBidWZbMTAwXTsKCiAgYXR0cnRhYlthdHRydGFiX2lkeF0u
aWQgPSBpZDsKICBhdHRydGFiW2F0dHJ0YWJfaWR4XS5uYW1lID0gZ2V0X2lkZW50aWZpZXIg
KHN0cmluZyk7CiAgYXR0cnRhYlthdHRydGFiX2lkeF0ubWluID0gbWluX2xlbjsKICBhdHRy
dGFiW2F0dHJ0YWJfaWR4XS5tYXggPSBtYXhfbGVuOwogIGF0dHJ0YWJbYXR0cnRhYl9pZHgr
K10uZGVjbF9yZXEgPSBkZWNsX3JlcTsKCiAgc3ByaW50ZiAoYnVmLCAiX18lc19fIiwgc3Ry
aW5nKTsKCiAgYXR0cnRhYlthdHRydGFiX2lkeF0uaWQgPSBpZDsKICBhdHRydGFiW2F0dHJ0
YWJfaWR4XS5uYW1lID0gZ2V0X2lkZW50aWZpZXIgKGJ1Zik7CiAgYXR0cnRhYlthdHRydGFi
X2lkeF0ubWluID0gbWluX2xlbjsKICBhdHRydGFiW2F0dHJ0YWJfaWR4XS5tYXggPSBtYXhf
bGVuOwogIGF0dHJ0YWJbYXR0cnRhYl9pZHgrK10uZGVjbF9yZXEgPSBkZWNsX3JlcTsKfQoK
LyogSW5pdGlhbGl6ZSBhdHRyaWJ1dGUgdGFibGUuICAqLwoKc3RhdGljIHZvaWQKaW5pdF9h
dHRyaWJ1dGVzICgpCnsKICBhZGRfYXR0cmlidXRlIChBX1BBQ0tFRCwgInBhY2tlZCIsIDAs
IDAsIDApOwogIGFkZF9hdHRyaWJ1dGUgKEFfTk9DT01NT04sICJub2NvbW1vbiIsIDAsIDAs
IDEpOwogIGFkZF9hdHRyaWJ1dGUgKEFfQ09NTU9OLCAiY29tbW9uIiwgMCwgMCwgMSk7CiAg
YWRkX2F0dHJpYnV0ZSAoQV9OT1JFVFVSTiwgIm5vcmV0dXJuIiwgMCwgMCwgMSk7CiAgYWRk
X2F0dHJpYnV0ZSAoQV9OT1JFVFVSTiwgInZvbGF0aWxlIiwgMCwgMCwgMSk7CiAgYWRkX2F0
dHJpYnV0ZSAoQV9VTlVTRUQsICJ1bnVzZWQiLCAwLCAwLCAxKTsKICBhZGRfYXR0cmlidXRl
IChBX0NPTlNULCAiY29uc3QiLCAwLCAwLCAxKTsKICBhZGRfYXR0cmlidXRlIChBX1RfVU5J
T04sICJ0cmFuc3BhcmVudF91bmlvbiIsIDAsIDAsIDApOwogIGFkZF9hdHRyaWJ1dGUgKEFf
Q09OU1RSVUNUT1IsICJjb25zdHJ1Y3RvciIsIDAsIDAsIDEpOwogIGFkZF9hdHRyaWJ1dGUg
KEFfREVTVFJVQ1RPUiwgImRlc3RydWN0b3IiLCAwLCAwLCAxKTsKICBhZGRfYXR0cmlidXRl
IChBX01PREUsICJtb2RlIiwgMSwgMSwgMSk7CiAgYWRkX2F0dHJpYnV0ZSAoQV9TRUNUSU9O
LCAic2VjdGlvbiIsIDEsIDEsIDEpOwogIGFkZF9hdHRyaWJ1dGUgKEFfQUxJR05FRCwgImFs
aWduZWQiLCAwLCAxLCAwKTsKICBhZGRfYXR0cmlidXRlIChBX0ZPUk1BVCwgImZvcm1hdCIs
IDMsIDMsIDEpOwogIGFkZF9hdHRyaWJ1dGUgKEFfRk9STUFUX0FSRywgImZvcm1hdF9hcmci
LCAxLCAxLCAxKTsKICBhZGRfYXR0cmlidXRlIChBX1dFQUssICJ3ZWFrIiwgMCwgMCwgMSk7
CiAgYWRkX2F0dHJpYnV0ZSAoQV9BTElBUywgImFsaWFzIiwgMSwgMSwgMSk7Cn0KDAovKiBQ
cm9jZXNzIHRoZSBhdHRyaWJ1dGVzIGxpc3RlZCBpbiBBVFRSSUJVVEVTIGFuZCBQUkVGSVhf
QVRUUklCVVRFUwogICBhbmQgaW5zdGFsbCB0aGVtIGluIE5PREUsIHdoaWNoIGlzIGVpdGhl
ciBhIERFQ0wgKGluY2x1ZGluZyBhIFRZUEVfREVDTCkKICAgb3IgYSBUWVBFLiAgUFJFRklY
X0FUVFJJQlVURVMgY2FuIGFwcGVhciBhZnRlciB0aGUgZGVjbGFyYXRpb24gc3BlY2lmaWVy
cwogICBhbmQgZGVjbGFyYXRpb24gbW9kaWZpZXJzIGJ1dCBiZWZvcmUgdGhlIGRlY2xhcmF0
aW9uIHByb3Blci4gICovCgp2b2lkCmRlY2xfYXR0cmlidXRlcyAobm9kZSwgYXR0cmlidXRl
cywgcHJlZml4X2F0dHJpYnV0ZXMpCiAgICAgdHJlZSBub2RlLCBhdHRyaWJ1dGVzLCBwcmVm
aXhfYXR0cmlidXRlczsKewogIHRyZWUgZGVjbCA9IDAsIHR5cGU7CiAgaW50IGlzX3R5cGU7
CiAgdHJlZSBhOwoKICBpZiAoYXR0cnRhYl9pZHggPT0gMCkKICAgIGluaXRfYXR0cmlidXRl
cyAoKTsKCiAgaWYgKFRSRUVfQ09ERV9DTEFTUyAoVFJFRV9DT0RFIChub2RlKSkgPT0gJ2Qn
KQogICAgewogICAgICBkZWNsID0gbm9kZTsKICAgICAgdHlwZSA9IFRSRUVfVFlQRSAoZGVj
bCk7CiAgICAgIGlzX3R5cGUgPSBUUkVFX0NPREUgKG5vZGUpID09IFRZUEVfREVDTDsKICAg
IH0KICBlbHNlIGlmIChUUkVFX0NPREVfQ0xBU1MgKFRSRUVfQ09ERSAobm9kZSkpID09ICd0
JykKICAgIHR5cGUgPSBub2RlLCBpc190eXBlID0gMTsKCiAgYXR0cmlidXRlcyA9IGNoYWlu
b24gKHByZWZpeF9hdHRyaWJ1dGVzLCBhdHRyaWJ1dGVzKTsKCiAgZm9yIChhID0gYXR0cmli
dXRlczsgYTsgYSA9IFRSRUVfQ0hBSU4gKGEpKQogICAgewogICAgICB0cmVlIG5hbWUgPSBU
UkVFX1BVUlBPU0UgKGEpOwogICAgICB0cmVlIGFyZ3MgPSBUUkVFX1ZBTFVFIChhKTsKICAg
ICAgaW50IGk7CiAgICAgIGVudW0gYXR0cnMgaWQ7CiAgICAgIAogICAgICBmb3IgKGkgPSAw
OyBpIDwgYXR0cnRhYl9pZHg7IGkrKykKCWlmIChhdHRydGFiW2ldLm5hbWUgPT0gbmFtZSkK
CSAgYnJlYWs7CgogICAgICBpZiAoaSA9PSBhdHRydGFiX2lkeCkKCXsKCSAgaWYgKCEgdmFs
aWRfbWFjaGluZV9hdHRyaWJ1dGUgKG5hbWUsIGFyZ3MsIGRlY2wsIHR5cGUpKQoJICAgIHdh
cm5pbmcgKCJgJXMnIGF0dHJpYnV0ZSBkaXJlY3RpdmUgaWdub3JlZCIsCgkJICAgICBJREVO
VElGSUVSX1BPSU5URVIgKG5hbWUpKTsKCSAgZWxzZSBpZiAoZGVjbCAhPSAwKQoJICAgIHR5
cGUgPSBUUkVFX1RZUEUgKGRlY2wpOwoJICBjb250aW51ZTsKCX0KICAgICAgZWxzZSBpZiAo
YXR0cnRhYltpXS5kZWNsX3JlcSAmJiBkZWNsID09IDApCgl7CgkgIHdhcm5pbmcgKCJgJXMn
IGF0dHJpYnV0ZSBkb2VzIG5vdCBhcHBseSB0byB0eXBlcyIsCgkJICAgSURFTlRJRklFUl9Q
T0lOVEVSIChuYW1lKSk7CgkgIGNvbnRpbnVlOwoJfQogICAgICBlbHNlIGlmIChsaXN0X2xl
bmd0aCAoYXJncykgPCBhdHRydGFiW2ldLm1pbgoJICAgICAgIHx8IGxpc3RfbGVuZ3RoIChh
cmdzKSA+IGF0dHJ0YWJbaV0ubWF4KQoJewoJICBlcnJvciAoIndyb25nIG51bWJlciBvZiBh
cmd1bWVudHMgc3BlY2lmaWVkIGZvciBgJXMnIGF0dHJpYnV0ZSIsCgkJIElERU5USUZJRVJf
UE9JTlRFUiAobmFtZSkpOwoJICBjb250aW51ZTsKCX0KCiAgICAgIGlkID0gYXR0cnRhYltp
XS5pZDsKICAgICAgc3dpdGNoIChpZCkKCXsKCWNhc2UgQV9QQUNLRUQ6CgkgIGlmIChpc190
eXBlKQoJICAgIFRZUEVfUEFDS0VEICh0eXBlKSA9IDE7CgkgIGVsc2UgaWYgKFRSRUVfQ09E
RSAoZGVjbCkgPT0gRklFTERfREVDTCkKCSAgICBERUNMX1BBQ0tFRCAoZGVjbCkgPSAxOwoJ
ICAvKiBXZSBjYW4ndCBzZXQgREVDTF9QQUNLRUQgZm9yIGEgVkFSX0RFQ0wsIGJlY2F1c2Ug
dGhlIGJpdCBpcwoJICAgICB1c2VkIGZvciBERUNMX1JFR0lTVEVSLiAgSXQgd291bGRuJ3Qg
bWVhbiBhbnl0aGluZyBhbnl3YXkuICAqLwoJICBlbHNlCgkgICAgd2FybmluZyAoImAlcycg
YXR0cmlidXRlIGlnbm9yZWQiLCBJREVOVElGSUVSX1BPSU5URVIgKG5hbWUpKTsKCSAgYnJl
YWs7CgoJY2FzZSBBX05PQ09NTU9OOgoJICBpZiAoVFJFRV9DT0RFIChkZWNsKSA9PSBWQVJf
REVDTCkKCSAgICBERUNMX0NPTU1PTiAoZGVjbCkgPSAwOwoJICBlbHNlCgkgICAgd2Fybmlu
ZyAoImAlcycgYXR0cmlidXRlIGlnbm9yZWQiLCBJREVOVElGSUVSX1BPSU5URVIgKG5hbWUp
KTsKCSAgYnJlYWs7CgoJY2FzZSBBX0NPTU1PTjoKCSAgaWYgKFRSRUVfQ09ERSAoZGVjbCkg
PT0gVkFSX0RFQ0wpCgkgICAgREVDTF9DT01NT04gKGRlY2wpID0gMTsKCSAgZWxzZQoJICAg
IHdhcm5pbmcgKCJgJXMnIGF0dHJpYnV0ZSBpZ25vcmVkIiwgSURFTlRJRklFUl9QT0lOVEVS
IChuYW1lKSk7CgkgIGJyZWFrOwoKCWNhc2UgQV9OT1JFVFVSTjoKCSAgaWYgKFRSRUVfQ09E
RSAoZGVjbCkgPT0gRlVOQ1RJT05fREVDTCkKCSAgICBUUkVFX1RISVNfVk9MQVRJTEUgKGRl
Y2wpID0gMTsKCSAgZWxzZSBpZiAoVFJFRV9DT0RFICh0eXBlKSA9PSBQT0lOVEVSX1RZUEUK
CQkgICAmJiBUUkVFX0NPREUgKFRSRUVfVFlQRSAodHlwZSkpID09IEZVTkNUSU9OX1RZUEUp
CgkgICAgVFJFRV9UWVBFIChkZWNsKSA9IHR5cGUgCgkgICAgICA9IGJ1aWxkX3BvaW50ZXJf
dHlwZQoJCShidWlsZF90eXBlX3ZhcmlhbnQgKFRSRUVfVFlQRSAodHlwZSksCgkJCQkgICAg
IFRSRUVfUkVBRE9OTFkgKFRSRUVfVFlQRSAodHlwZSkpLCAxKSk7CgkgIGVsc2UKCSAgICB3
YXJuaW5nICgiYCVzJyBhdHRyaWJ1dGUgaWdub3JlZCIsIElERU5USUZJRVJfUE9JTlRFUiAo
bmFtZSkpOwoJICBicmVhazsKCgljYXNlIEFfVU5VU0VEOgoJICBpZiAoVFJFRV9DT0RFIChk
ZWNsKSA9PSBQQVJNX0RFQ0wgfHwgVFJFRV9DT0RFIChkZWNsKSA9PSBWQVJfREVDTAoJICAg
ICAgfHwgVFJFRV9DT0RFIChkZWNsKSA9PSBGVU5DVElPTl9ERUNMKQoJICAgIFRSRUVfVVNF
RCAoZGVjbCkgPSAxOwoJICBlbHNlCgkgICAgd2FybmluZyAoImAlcycgYXR0cmlidXRlIGln
bm9yZWQiLCBJREVOVElGSUVSX1BPSU5URVIgKG5hbWUpKTsKCSAgYnJlYWs7CgoJY2FzZSBB
X0NPTlNUOgoJICBpZiAoVFJFRV9DT0RFIChkZWNsKSA9PSBGVU5DVElPTl9ERUNMKQoJICAg
IFRSRUVfUkVBRE9OTFkgKGRlY2wpID0gMTsKCSAgZWxzZSBpZiAoVFJFRV9DT0RFICh0eXBl
KSA9PSBQT0lOVEVSX1RZUEUKCQkgICAmJiBUUkVFX0NPREUgKFRSRUVfVFlQRSAodHlwZSkp
ID09IEZVTkNUSU9OX1RZUEUpCgkgICAgVFJFRV9UWVBFIChkZWNsKSA9IHR5cGUKCSAgICAg
ID0gYnVpbGRfcG9pbnRlcl90eXBlCgkJKGJ1aWxkX3R5cGVfdmFyaWFudCAoVFJFRV9UWVBF
ICh0eXBlKSwgMSwKCQkJCSAgICAgVFJFRV9USElTX1ZPTEFUSUxFIChUUkVFX1RZUEUgKHR5
cGUpKSkpOwoJICBlbHNlCgkgICAgd2FybmluZyAoICJgJXMnIGF0dHJpYnV0ZSBpZ25vcmVk
IiwgSURFTlRJRklFUl9QT0lOVEVSIChuYW1lKSk7CgkgIGJyZWFrOwoKCWNhc2UgQV9UX1VO
SU9OOgoJICBpZiAoaXNfdHlwZQoJICAgICAgJiYgVFJFRV9DT0RFICh0eXBlKSA9PSBVTklP
Tl9UWVBFCgkgICAgICAmJiAoZGVjbCA9PSAwCgkJICB8fCAoVFlQRV9GSUVMRFMgKHR5cGUp
ICE9IDAKCQkgICAgICAmJiBUWVBFX01PREUgKHR5cGUpID09IERFQ0xfTU9ERSAoVFlQRV9G
SUVMRFMgKHR5cGUpKSkpKQoJICAgIFRZUEVfVFJBTlNQQVJFTlRfVU5JT04gKHR5cGUpID0g
MTsKCSAgZWxzZSBpZiAoZGVjbCAhPSAwICYmIFRSRUVfQ09ERSAoZGVjbCkgPT0gUEFSTV9E
RUNMCgkJICAgJiYgVFJFRV9DT0RFICh0eXBlKSA9PSBVTklPTl9UWVBFCgkJICAgJiYgVFlQ
RV9NT0RFICh0eXBlKSA9PSBERUNMX01PREUgKFRZUEVfRklFTERTICh0eXBlKSkpCgkgICAg
REVDTF9UUkFOU1BBUkVOVF9VTklPTiAoZGVjbCkgPSAxOwoJICBlbHNlCgkgICAgd2Fybmlu
ZyAoImAlcycgYXR0cmlidXRlIGlnbm9yZWQiLCBJREVOVElGSUVSX1BPSU5URVIgKG5hbWUp
KTsKCSAgYnJlYWs7CgoJY2FzZSBBX0NPTlNUUlVDVE9SOgoJICBpZiAoVFJFRV9DT0RFIChk
ZWNsKSA9PSBGVU5DVElPTl9ERUNMCgkgICAgICAmJiBUUkVFX0NPREUgKHR5cGUpID09IEZV
TkNUSU9OX1RZUEUKCSAgICAgICYmIGRlY2xfZnVuY3Rpb25fY29udGV4dCAoZGVjbCkgPT0g
MCkKCSAgICB7CgkgICAgICBERUNMX1NUQVRJQ19DT05TVFJVQ1RPUiAoZGVjbCkgPSAxOwoJ
ICAgICAgVFJFRV9VU0VEIChkZWNsKSA9IDE7CgkgICAgfQoJICBlbHNlCgkgICAgd2Fybmlu
ZyAoImAlcycgYXR0cmlidXRlIGlnbm9yZWQiLCBJREVOVElGSUVSX1BPSU5URVIgKG5hbWUp
KTsKCSAgYnJlYWs7CgoJY2FzZSBBX0RFU1RSVUNUT1I6CgkgIGlmIChUUkVFX0NPREUgKGRl
Y2wpID09IEZVTkNUSU9OX0RFQ0wKCSAgICAgICYmIFRSRUVfQ09ERSAodHlwZSkgPT0gRlVO
Q1RJT05fVFlQRQoJICAgICAgJiYgZGVjbF9mdW5jdGlvbl9jb250ZXh0IChkZWNsKSA9PSAw
KQoJICAgIHsKCSAgICAgIERFQ0xfU1RBVElDX0RFU1RSVUNUT1IgKGRlY2wpID0gMTsKCSAg
ICAgIFRSRUVfVVNFRCAoZGVjbCkgPSAxOwoJICAgIH0KCSAgZWxzZQoJICAgIHdhcm5pbmcg
KCJgJXMnIGF0dHJpYnV0ZSBpZ25vcmVkIiwgSURFTlRJRklFUl9QT0lOVEVSIChuYW1lKSk7
CgkgIGJyZWFrOwoKCWNhc2UgQV9NT0RFOgoJICBpZiAoVFJFRV9DT0RFIChUUkVFX1ZBTFVF
IChhcmdzKSkgIT0gSURFTlRJRklFUl9OT0RFKQoJICAgIHdhcm5pbmcgKCJgJXMnIGF0dHJp
YnV0ZSBpZ25vcmVkIiwgSURFTlRJRklFUl9QT0lOVEVSIChuYW1lKSk7CgkgIGVsc2UKCSAg
ICB7CgkgICAgICBpbnQgajsKCSAgICAgIGNoYXIgKnAgPSBJREVOVElGSUVSX1BPSU5URVIg
KFRSRUVfVkFMVUUgKGFyZ3MpKTsKCSAgICAgIGludCBsZW4gPSBzdHJsZW4gKHApOwoJICAg
ICAgZW51bSBtYWNoaW5lX21vZGUgbW9kZSA9IFZPSURtb2RlOwoJICAgICAgdHJlZSB0eXBl
Zm07CgoJICAgICAgaWYgKGxlbiA+IDQgJiYgcFswXSA9PSAnXycgJiYgcFsxXSA9PSAnXycK
CQkgICYmIHBbbGVuIC0gMV0gPT0gJ18nICYmIHBbbGVuIC0gMl0gPT0gJ18nKQoJCXsKCQkg
IGNoYXIgKm5ld3AgPSAoY2hhciAqKSBhbGxvY2EgKGxlbiAtIDEpOwoKCQkgIHN0cmNweSAo
bmV3cCwgJnBbMl0pOwoJCSAgbmV3cFtsZW4gLSA0XSA9ICdcMCc7CgkJICBwID0gbmV3cDsK
CQl9CgoJICAgICAgLyogR2l2ZSB0aGlzIGRlY2wgYSB0eXBlIHdpdGggdGhlIHNwZWNpZmll
ZCBtb2RlLgoJCSBGaXJzdCBjaGVjayBmb3IgdGhlIHNwZWNpYWwgbW9kZXMuICAqLwoJICAg
ICAgaWYgKCEgc3RyY21wIChwLCAiYnl0ZSIpKQoJCW1vZGUgPSBieXRlX21vZGU7CgkgICAg
ICBlbHNlIGlmICghc3RyY21wIChwLCAid29yZCIpKQoJCW1vZGUgPSB3b3JkX21vZGU7Cgkg
ICAgICBlbHNlIGlmICghIHN0cmNtcCAocCwgInBvaW50ZXIiKSkKCQltb2RlID0gcHRyX21v
ZGU7CgkgICAgICBlbHNlCgkJZm9yIChqID0gMDsgaiA8IE5VTV9NQUNISU5FX01PREVTOyBq
KyspCgkJICBpZiAoIXN0cmNtcCAocCwgR0VUX01PREVfTkFNRSAoaikpKQoJCSAgICBtb2Rl
ID0gKGVudW0gbWFjaGluZV9tb2RlKSBqOwoKCSAgICAgIGlmIChtb2RlID09IFZPSURtb2Rl
KQoJCWVycm9yICgidW5rbm93biBtYWNoaW5lIG1vZGUgYCVzJyIsIHApOwoJICAgICAgZWxz
ZSBpZiAoMCA9PSAodHlwZWZtID0gdHlwZV9mb3JfbW9kZSAobW9kZSwKCQkJCQkJICAgICBU
UkVFX1VOU0lHTkVEICh0eXBlKSkpKQoJCWVycm9yICgibm8gZGF0YSB0eXBlIGZvciBtb2Rl
IGAlcyciLCBwKTsKCSAgICAgIGVsc2UKCQl7CgkJICBUUkVFX1RZUEUgKGRlY2wpID0gdHlw
ZSA9IHR5cGVmbTsKCQkgIERFQ0xfU0laRSAoZGVjbCkgPSAwOwoJCSAgbGF5b3V0X2RlY2wg
KGRlY2wsIDApOwoJCX0KCSAgICB9CgkgIGJyZWFrOwoKCWNhc2UgQV9TRUNUSU9OOgojaWZk
ZWYgQVNNX09VVFBVVF9TRUNUSU9OX05BTUUKCSAgaWYgKChUUkVFX0NPREUgKGRlY2wpID09
IEZVTkNUSU9OX0RFQ0wKCSAgICAgICB8fCBUUkVFX0NPREUgKGRlY2wpID09IFZBUl9ERUNM
KQoJICAgICAgJiYgVFJFRV9DT0RFIChUUkVFX1ZBTFVFIChhcmdzKSkgPT0gU1RSSU5HX0NT
VCkKCSAgICB7CgkgICAgICBpZiAoVFJFRV9DT0RFIChkZWNsKSA9PSBWQVJfREVDTCAKCQkg
ICYmIGN1cnJlbnRfZnVuY3Rpb25fZGVjbCAhPSBOVUxMX1RSRUUKCQkgICYmICEgVFJFRV9T
VEFUSUMgKGRlY2wpKQoJCWVycm9yX3dpdGhfZGVjbCAoZGVjbCwKCQkgICJzZWN0aW9uIGF0
dHJpYnV0ZSBjYW5ub3QgYmUgc3BlY2lmaWVkIGZvciBsb2NhbCB2YXJpYWJsZXMiKTsKCSAg
ICAgIC8qIFRoZSBkZWNsIG1heSBoYXZlIGFscmVhZHkgYmVlbiBnaXZlbiBhIHNlY3Rpb24g
YXR0cmlidXRlIGZyb20KCQkgYSBwcmV2aW91cyBkZWNsYXJhdGlvbi4gIEVuc3VyZSB0aGV5
IG1hdGNoLiAgKi8KCSAgICAgIGVsc2UgaWYgKERFQ0xfU0VDVElPTl9OQU1FIChkZWNsKSAh
PSBOVUxMX1RSRUUKCQkgICAgICAgJiYgc3RyY21wIChUUkVFX1NUUklOR19QT0lOVEVSIChE
RUNMX1NFQ1RJT05fTkFNRSAoZGVjbCkpLAoJCQkJICBUUkVFX1NUUklOR19QT0lOVEVSIChU
UkVFX1ZBTFVFIChhcmdzKSkpICE9IDApCgkJZXJyb3Jfd2l0aF9kZWNsIChub2RlLAoJCQkJ
ICJzZWN0aW9uIG9mIGAlcycgY29uZmxpY3RzIHdpdGggcHJldmlvdXMgZGVjbGFyYXRpb24i
KTsKCSAgICAgIGVsc2UKCQlERUNMX1NFQ1RJT05fTkFNRSAoZGVjbCkgPSBUUkVFX1ZBTFVF
IChhcmdzKTsKCSAgICB9CgkgIGVsc2UKCSAgICBlcnJvcl93aXRoX2RlY2wgKG5vZGUsCgkJ
CSAgICJzZWN0aW9uIGF0dHJpYnV0ZSBub3QgYWxsb3dlZCBmb3IgYCVzJyIpOwojZWxzZQoJ
ICBlcnJvcl93aXRoX2RlY2wgKG5vZGUsCgkJICAic2VjdGlvbiBhdHRyaWJ1dGVzIGFyZSBu
b3Qgc3VwcG9ydGVkIGZvciB0aGlzIHRhcmdldCIpOwojZW5kaWYKCSAgYnJlYWs7CgoJY2Fz
ZSBBX0FMSUdORUQ6CgkgIHsKCSAgICB0cmVlIGFsaWduX2V4cHIKCSAgICAgID0gKGFyZ3Mg
PyBUUkVFX1ZBTFVFIChhcmdzKQoJCSA6IHNpemVfaW50IChCSUdHRVNUX0FMSUdOTUVOVCAv
IEJJVFNfUEVSX1VOSVQpKTsKCSAgICBpbnQgYWxpZ247CgoJICAgIC8qIFN0cmlwIGFueSBO
T1BzIG9mIGFueSBraW5kLiAgKi8KCSAgICB3aGlsZSAoVFJFRV9DT0RFIChhbGlnbl9leHBy
KSA9PSBOT1BfRVhQUgoJCSAgIHx8IFRSRUVfQ09ERSAoYWxpZ25fZXhwcikgPT0gQ09OVkVS
VF9FWFBSCgkJICAgfHwgVFJFRV9DT0RFIChhbGlnbl9leHByKSA9PSBOT05fTFZBTFVFX0VY
UFIpCgkgICAgICBhbGlnbl9leHByID0gVFJFRV9PUEVSQU5EIChhbGlnbl9leHByLCAwKTsK
CSAgCgkgICAgaWYgKFRSRUVfQ09ERSAoYWxpZ25fZXhwcikgIT0gSU5URUdFUl9DU1QpCgkg
ICAgICB7CgkJZXJyb3IgKCJyZXF1ZXN0ZWQgYWxpZ25tZW50IGlzIG5vdCBhIGNvbnN0YW50
Iik7CgkJY29udGludWU7CgkgICAgICB9CgoJICAgIGFsaWduID0gVFJFRV9JTlRfQ1NUX0xP
VyAoYWxpZ25fZXhwcikgKiBCSVRTX1BFUl9VTklUOwoKCSAgICBpZiAoZXhhY3RfbG9nMiAo
YWxpZ24pID09IC0xKQoJICAgICAgZXJyb3IgKCJyZXF1ZXN0ZWQgYWxpZ25tZW50IGlzIG5v
dCBhIHBvd2VyIG9mIDIiKTsKCSAgICBlbHNlIGlmIChpc190eXBlKQoJICAgICAgVFlQRV9B
TElHTiAodHlwZSkgPSBhbGlnbjsKCSAgICBlbHNlIGlmIChUUkVFX0NPREUgKGRlY2wpICE9
IFZBUl9ERUNMCgkJICAgICAmJiBUUkVFX0NPREUgKGRlY2wpICE9IEZJRUxEX0RFQ0wpCgkg
ICAgICBlcnJvcl93aXRoX2RlY2wgKGRlY2wsCgkJCSAgICAgICAiYWxpZ25tZW50IG1heSBu
b3QgYmUgc3BlY2lmaWVkIGZvciBgJXMnIik7CgkgICAgZWxzZQoJICAgICAgREVDTF9BTElH
TiAoZGVjbCkgPSBhbGlnbjsKCSAgfQoJICBicmVhazsKCgljYXNlIEFfRk9STUFUOgoJICB7
CgkgICAgdHJlZSBmb3JtYXRfdHlwZSA9IFRSRUVfVkFMVUUgKGFyZ3MpOwoJICAgIHRyZWUg
Zm9ybWF0X251bV9leHByID0gVFJFRV9WQUxVRSAoVFJFRV9DSEFJTiAoYXJncykpOwoJICAg
IHRyZWUgZmlyc3RfYXJnX251bV9leHByCgkgICAgICA9IFRSRUVfVkFMVUUgKFRSRUVfQ0hB
SU4gKFRSRUVfQ0hBSU4gKGFyZ3MpKSk7CgkgICAgaW50IGZvcm1hdF9udW07CgkgICAgaW50
IGZpcnN0X2FyZ19udW07CgkgICAgaW50IGlzX3NjYW47CgkgICAgdHJlZSBhcmd1bWVudDsK
CSAgICBpbnQgYXJnX251bTsKCQoJICAgIGlmIChUUkVFX0NPREUgKGRlY2wpICE9IEZVTkNU
SU9OX0RFQ0wpCgkgICAgICB7CgkJZXJyb3Jfd2l0aF9kZWNsIChkZWNsLAoJCQkgImFyZ3Vt
ZW50IGZvcm1hdCBzcGVjaWZpZWQgZm9yIG5vbi1mdW5jdGlvbiBgJXMnIik7CgkJY29udGlu
dWU7CgkgICAgICB9CgkKCSAgICBpZiAoVFJFRV9DT0RFIChmb3JtYXRfdHlwZSkgPT0gSURF
TlRJRklFUl9OT0RFCgkJJiYgKCFzdHJjbXAgKElERU5USUZJRVJfUE9JTlRFUiAoZm9ybWF0
X3R5cGUpLCAicHJpbnRmIikKCQkgICAgfHwgIXN0cmNtcCAoSURFTlRJRklFUl9QT0lOVEVS
IChmb3JtYXRfdHlwZSksCgkJCQkiX19wcmludGZfXyIpKSkKCSAgICAgIGlzX3NjYW4gPSAw
OwoJICAgIGVsc2UgaWYgKFRSRUVfQ09ERSAoZm9ybWF0X3R5cGUpID09IElERU5USUZJRVJf
Tk9ERQoJCSAgICAgJiYgKCFzdHJjbXAgKElERU5USUZJRVJfUE9JTlRFUiAoZm9ybWF0X3R5
cGUpLCAic2NhbmYiKQoJCQkgfHwgIXN0cmNtcCAoSURFTlRJRklFUl9QT0lOVEVSIChmb3Jt
YXRfdHlwZSksCgkJCQkgICAgICJfX3NjYW5mX18iKSkpCgkgICAgICBpc19zY2FuID0gMTsK
CSAgICBlbHNlIGlmIChUUkVFX0NPREUgKGZvcm1hdF90eXBlKSA9PSBJREVOVElGSUVSX05P
REUpCgkgICAgICB7CgkJZXJyb3IgKCJgJXMnIGlzIGFuIHVucmVjb2duaXplZCBmb3JtYXQg
ZnVuY3Rpb24gdHlwZSIsCgkJICAgICAgIElERU5USUZJRVJfUE9JTlRFUiAoZm9ybWF0X3R5
cGUpKTsKCQljb250aW51ZTsKCSAgICAgIH0KCSAgICBlbHNlCgkgICAgICB7CgkJZXJyb3Ig
KCJ1bnJlY29nbml6ZWQgZm9ybWF0IHNwZWNpZmllciIpOwoJCWNvbnRpbnVlOwoJICAgICAg
fQoKCSAgICAvKiBTdHJpcCBhbnkgY29udmVyc2lvbnMgZnJvbSB0aGUgc3RyaW5nIGluZGV4
IGFuZCBmaXJzdCBhcmcgbnVtYmVyCgkgICAgICAgYW5kIHZlcmlmeSB0aGV5IGFyZSBjb25z
dGFudHMuICAqLwoJICAgIHdoaWxlIChUUkVFX0NPREUgKGZvcm1hdF9udW1fZXhwcikgPT0g
Tk9QX0VYUFIKCQkgICB8fCBUUkVFX0NPREUgKGZvcm1hdF9udW1fZXhwcikgPT0gQ09OVkVS
VF9FWFBSCgkJICAgfHwgVFJFRV9DT0RFIChmb3JtYXRfbnVtX2V4cHIpID09IE5PTl9MVkFM
VUVfRVhQUikKCSAgICAgIGZvcm1hdF9udW1fZXhwciA9IFRSRUVfT1BFUkFORCAoZm9ybWF0
X251bV9leHByLCAwKTsKCgkgICAgd2hpbGUgKFRSRUVfQ09ERSAoZmlyc3RfYXJnX251bV9l
eHByKSA9PSBOT1BfRVhQUgoJCSAgIHx8IFRSRUVfQ09ERSAoZmlyc3RfYXJnX251bV9leHBy
KSA9PSBDT05WRVJUX0VYUFIKCQkgICB8fCBUUkVFX0NPREUgKGZpcnN0X2FyZ19udW1fZXhw
cikgPT0gTk9OX0xWQUxVRV9FWFBSKQoJICAgICAgZmlyc3RfYXJnX251bV9leHByID0gVFJF
RV9PUEVSQU5EIChmaXJzdF9hcmdfbnVtX2V4cHIsIDApOwoKCSAgICBpZiAoVFJFRV9DT0RF
IChmb3JtYXRfbnVtX2V4cHIpICE9IElOVEVHRVJfQ1NUCgkJfHwgVFJFRV9DT0RFIChmaXJz
dF9hcmdfbnVtX2V4cHIpICE9IElOVEVHRVJfQ1NUKQoJICAgICAgewoJCWVycm9yICgiZm9y
bWF0IHN0cmluZyBoYXMgbm9uLWNvbnN0YW50IG9wZXJhbmQgbnVtYmVyIik7CgkJY29udGlu
dWU7CgkgICAgICB9CgoJICAgIGZvcm1hdF9udW0gPSBUUkVFX0lOVF9DU1RfTE9XIChmb3Jt
YXRfbnVtX2V4cHIpOwoJICAgIGZpcnN0X2FyZ19udW0gPSBUUkVFX0lOVF9DU1RfTE9XIChm
aXJzdF9hcmdfbnVtX2V4cHIpOwoJICAgIGlmIChmaXJzdF9hcmdfbnVtICE9IDAgJiYgZmly
c3RfYXJnX251bSA8PSBmb3JtYXRfbnVtKQoJICAgICAgewoJCWVycm9yICgiZm9ybWF0IHN0
cmluZyBhcmcgZm9sbG93cyB0aGUgYXJncyB0byBiZSBmb3JtYXR0ZWQiKTsKCQljb250aW51
ZTsKCSAgICAgIH0KCgkgICAgLyogSWYgYSBwYXJhbWV0ZXIgbGlzdCBpcyBzcGVjaWZpZWQs
IHZlcmlmeSB0aGF0IHRoZSBmb3JtYXRfbnVtCgkgICAgICAgYXJndW1lbnQgaXMgYWN0dWFs
bHkgYSBzdHJpbmcsIGluIGNhc2UgdGhlIGZvcm1hdCBhdHRyaWJ1dGUKCSAgICAgICBpcyBp
biBlcnJvci4gICovCgkgICAgYXJndW1lbnQgPSBUWVBFX0FSR19UWVBFUyAodHlwZSk7Cgkg
ICAgaWYgKGFyZ3VtZW50KQoJICAgICAgewoJCWZvciAoYXJnX251bSA9IDE7IDsgKythcmdf
bnVtKQoJCSAgewoJCSAgICBpZiAoYXJndW1lbnQgPT0gMCB8fCBhcmdfbnVtID09IGZvcm1h
dF9udW0pCgkJICAgICAgYnJlYWs7CgkJICAgIGFyZ3VtZW50ID0gVFJFRV9DSEFJTiAoYXJn
dW1lbnQpOwoJCSAgfQoJCWlmICghIGFyZ3VtZW50CgkJICAgIHx8IFRSRUVfQ09ERSAoVFJF
RV9WQUxVRSAoYXJndW1lbnQpKSAhPSBQT0lOVEVSX1RZUEUKCQkgIHx8IChUWVBFX01BSU5f
VkFSSUFOVCAoVFJFRV9UWVBFIChUUkVFX1ZBTFVFIChhcmd1bWVudCkpKQoJCSAgICAgICE9
IGNoYXJfdHlwZV9ub2RlKSkKCQkgIHsKCQkgICAgZXJyb3IgKCJmb3JtYXQgc3RyaW5nIGFy
ZyBub3QgYSBzdHJpbmcgdHlwZSIpOwoJCSAgICBjb250aW51ZTsKCQkgIH0KCQlpZiAoZmly
c3RfYXJnX251bSAhPSAwKQoJCSAgewoJCSAgICAvKiBWZXJpZnkgdGhhdCBmaXJzdF9hcmdf
bnVtIHBvaW50cyB0byB0aGUgbGFzdCBhcmcsCgkJICAgICAgIHRoZSAuLi4gICovCgkJICAg
IHdoaWxlIChhcmd1bWVudCkKCQkgICAgICBhcmdfbnVtKyssIGFyZ3VtZW50ID0gVFJFRV9D
SEFJTiAoYXJndW1lbnQpOwoJCSAgaWYgKGFyZ19udW0gIT0gZmlyc3RfYXJnX251bSkKCQkg
ICAgewoJCSAgICAgIGVycm9yICgiYXJncyB0byBiZSBmb3JtYXR0ZWQgaXMgbm90IC4uLiIp
OwoJCSAgICAgIGNvbnRpbnVlOwoJCSAgICB9CgkJICB9CgkgICAgICB9CgoJICAgIHJlY29y
ZF9mdW5jdGlvbl9mb3JtYXQgKERFQ0xfTkFNRSAoZGVjbCksCgkJCQkgICAgREVDTF9BU1NF
TUJMRVJfTkFNRSAoZGVjbCksCgkJCQkgICAgaXNfc2NhbiwgZm9ybWF0X251bSwgZmlyc3Rf
YXJnX251bSk7CgkgICAgYnJlYWs7CgkgIH0KCgljYXNlIEFfRk9STUFUX0FSRzoKCSAgewoJ
ICAgIHRyZWUgZm9ybWF0X251bV9leHByID0gVFJFRV9WQUxVRSAoYXJncyk7CgkgICAgaW50
IGZvcm1hdF9udW0sIGFyZ19udW07CgkgICAgdHJlZSBhcmd1bWVudDsKCQoJICAgIGlmIChU
UkVFX0NPREUgKGRlY2wpICE9IEZVTkNUSU9OX0RFQ0wpCgkgICAgICB7CgkJZXJyb3Jfd2l0
aF9kZWNsIChkZWNsLAoJCQkgImFyZ3VtZW50IGZvcm1hdCBzcGVjaWZpZWQgZm9yIG5vbi1m
dW5jdGlvbiBgJXMnIik7CgkJY29udGludWU7CgkgICAgICB9CgkKCSAgICAvKiBTdHJpcCBh
bnkgY29udmVyc2lvbnMgZnJvbSB0aGUgZmlyc3QgYXJnIG51bWJlciBhbmQgdmVyaWZ5IGl0
CgkgICAgICAgaXMgYSBjb25zdGFudC4gICovCgkgICAgd2hpbGUgKFRSRUVfQ09ERSAoZm9y
bWF0X251bV9leHByKSA9PSBOT1BfRVhQUgoJCSAgIHx8IFRSRUVfQ09ERSAoZm9ybWF0X251
bV9leHByKSA9PSBDT05WRVJUX0VYUFIKCQkgICB8fCBUUkVFX0NPREUgKGZvcm1hdF9udW1f
ZXhwcikgPT0gTk9OX0xWQUxVRV9FWFBSKQoJICAgICAgZm9ybWF0X251bV9leHByID0gVFJF
RV9PUEVSQU5EIChmb3JtYXRfbnVtX2V4cHIsIDApOwoKCSAgICBpZiAoVFJFRV9DT0RFIChm
b3JtYXRfbnVtX2V4cHIpICE9IElOVEVHRVJfQ1NUKQoJICAgICAgewoJCWVycm9yICgiZm9y
bWF0IHN0cmluZyBoYXMgbm9uLWNvbnN0YW50IG9wZXJhbmQgbnVtYmVyIik7CgkJY29udGlu
dWU7CgkgICAgICB9CgoJICAgIGZvcm1hdF9udW0gPSBUUkVFX0lOVF9DU1RfTE9XIChmb3Jt
YXRfbnVtX2V4cHIpOwoKCSAgICAvKiBJZiBhIHBhcmFtZXRlciBsaXN0IGlzIHNwZWNpZmll
ZCwgdmVyaWZ5IHRoYXQgdGhlIGZvcm1hdF9udW0KCSAgICAgICBhcmd1bWVudCBpcyBhY3R1
YWxseSBhIHN0cmluZywgaW4gY2FzZSB0aGUgZm9ybWF0IGF0dHJpYnV0ZQoJICAgICAgIGlz
IGluIGVycm9yLiAgKi8KCSAgICBhcmd1bWVudCA9IFRZUEVfQVJHX1RZUEVTICh0eXBlKTsK
CSAgICBpZiAoYXJndW1lbnQpCgkgICAgICB7CgkJZm9yIChhcmdfbnVtID0gMTsgOyArK2Fy
Z19udW0pCgkJICB7CgkJICAgIGlmIChhcmd1bWVudCA9PSAwIHx8IGFyZ19udW0gPT0gZm9y
bWF0X251bSkKCQkgICAgICBicmVhazsKCQkgICAgYXJndW1lbnQgPSBUUkVFX0NIQUlOIChh
cmd1bWVudCk7CgkJICB9CgkJaWYgKCEgYXJndW1lbnQKCQkgICAgfHwgVFJFRV9DT0RFIChU
UkVFX1ZBTFVFIChhcmd1bWVudCkpICE9IFBPSU5URVJfVFlQRQoJCSAgfHwgKFRZUEVfTUFJ
Tl9WQVJJQU5UIChUUkVFX1RZUEUgKFRSRUVfVkFMVUUgKGFyZ3VtZW50KSkpCgkJICAgICAg
IT0gY2hhcl90eXBlX25vZGUpKQoJCSAgewoJCSAgICBlcnJvciAoImZvcm1hdCBzdHJpbmcg
YXJnIG5vdCBhIHN0cmluZyB0eXBlIik7CgkJICAgIGNvbnRpbnVlOwoJCSAgfQoJICAgICAg
fQoKCSAgICBpZiAoVFJFRV9DT0RFIChUUkVFX1RZUEUgKFRSRUVfVFlQRSAoZGVjbCkpKSAh
PSBQT0lOVEVSX1RZUEUKCQl8fCAoVFlQRV9NQUlOX1ZBUklBTlQgKFRSRUVfVFlQRSAoVFJF
RV9UWVBFIChUUkVFX1RZUEUgKGRlY2wpKSkpCgkJICAgICE9IGNoYXJfdHlwZV9ub2RlKSkK
CSAgICAgIHsKCQllcnJvciAoImZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBzdHJpbmcgdHlw
ZSIpOwoJCWNvbnRpbnVlOwoJICAgICAgfQoKCSAgICByZWNvcmRfaW50ZXJuYXRpb25hbF9m
b3JtYXQgKERFQ0xfTkFNRSAoZGVjbCksCgkJCQkJIERFQ0xfQVNTRU1CTEVSX05BTUUgKGRl
Y2wpLAoJCQkJCSBmb3JtYXRfbnVtKTsKCSAgICBicmVhazsKCSAgfQoKCWNhc2UgQV9XRUFL
OgoJICBkZWNsYXJlX3dlYWsgKGRlY2wpOwoJICBicmVhazsKCgljYXNlIEFfQUxJQVM6Cgkg
IGlmICgoVFJFRV9DT0RFIChkZWNsKSA9PSBGVU5DVElPTl9ERUNMICYmIERFQ0xfSU5JVElB
TCAoZGVjbCkpCgkgICAgICB8fCAoVFJFRV9DT0RFIChkZWNsKSAhPSBGVU5DVElPTl9ERUNM
ICYmICEgREVDTF9FWFRFUk5BTCAoZGVjbCkpKQoJICAgIGVycm9yX3dpdGhfZGVjbCAoZGVj
bCwKCQkJICAgICAiYCVzJyBkZWZpbmVkIGJvdGggbm9ybWFsbHkgYW5kIGFzIGFuIGFsaWFz
Iik7CgkgIGVsc2UgaWYgKGRlY2xfZnVuY3Rpb25fY29udGV4dCAoZGVjbCkgPT0gMCkKCSAg
ICB7CgkgICAgICB0cmVlIGlkID0gZ2V0X2lkZW50aWZpZXIgKFRSRUVfU1RSSU5HX1BPSU5U
RVIKCQkJCQkoVFJFRV9WQUxVRSAoYXJncykpKTsKCSAgICAgIGlmIChUUkVFX0NPREUgKGRl
Y2wpID09IEZVTkNUSU9OX0RFQ0wpCgkJREVDTF9JTklUSUFMIChkZWNsKSA9IGVycm9yX21h
cmtfbm9kZTsKCSAgICAgIGVsc2UKCQlERUNMX0VYVEVSTkFMIChkZWNsKSA9IDA7CgkgICAg
ICBhc3NlbWJsZV9hbGlhcyAoZGVjbCwgaWQpOwoJICAgIH0KCSAgZWxzZQoJICAgIHdhcm5p
bmcgKCJgJXMnIGF0dHJpYnV0ZSBpZ25vcmVkIiwgSURFTlRJRklFUl9QT0lOVEVSIChuYW1l
KSk7CgkgIGJyZWFrOwoJfQogICAgfQp9CgovKiBTcGxpdCBTUEVDU19BVFRSUywgYSBsaXN0
IG9mIGRlY2xzcGVjcyBhbmQgcHJlZml4IGF0dHJpYnV0ZXMsIGludG8gdHdvCiAgIGxpc3Rz
LiAgU1BFQ1NfQVRUUlMgbWF5IGFsc28gYmUganVzdCBhIHR5cGVzcGVjIChlZzogUkVDT1JE
X1RZUEUpLgoKICAgVGhlIGhlYWQgb2YgdGhlIGRlY2xzcGVjIGxpc3QgaXMgc3RvcmVkIGlu
IERFQ0xTUEVDUy4KICAgVGhlIGhlYWQgb2YgdGhlIGF0dHJpYnV0ZSBsaXN0IGlzIHN0b3Jl
ZCBpbiBQUkVGSVhfQVRUUklCVVRFUy4KCiAgIE5vdGUgdGhhdCBhdHRyaWJ1dGVzIGluIFNQ
RUNTX0FUVFJTIGFyZSBzdG9yZWQgaW4gdGhlIFRSRUVfUFVSUE9TRSBvZgogICB0aGUgbGlz
dCBlbGVtZW50cy4gIFdlIGRyb3AgdGhlIGNvbnRhaW5pbmcgVFJFRV9MSVNUIG5vZGVzIGFu
ZCBsaW5rIHRoZQogICByZXN1bHRpbmcgYXR0cmlidXRlcyB0b2dldGhlciB0aGUgd2F5IGRl
Y2xfYXR0cmlidXRlcyBleHBlY3RzIHRoZW0uICAqLwoKdm9pZApzcGxpdF9zcGVjc19hdHRy
cyAoc3BlY3NfYXR0cnMsIGRlY2xzcGVjcywgcHJlZml4X2F0dHJpYnV0ZXMpCiAgICAgdHJl
ZSBzcGVjc19hdHRyczsKICAgICB0cmVlICpkZWNsc3BlY3MsICpwcmVmaXhfYXR0cmlidXRl
czsKewogIHRyZWUgdCwgcywgYSwgbmV4dCwgc3BlY3MsIGF0dHJzOwoKICAvKiBUaGlzIGNh
biBoYXBwZW4gaW4gYysrIChlZzogZGVjbDogdHlwZXNwZWMgaW5pdGRlY2xzICc7JykuICAq
LwogIGlmIChzcGVjc19hdHRycyAhPSBOVUxMX1RSRUUKICAgICAgJiYgVFJFRV9DT0RFIChz
cGVjc19hdHRycykgIT0gVFJFRV9MSVNUKQogICAgewogICAgICAqZGVjbHNwZWNzID0gc3Bl
Y3NfYXR0cnM7CiAgICAgICpwcmVmaXhfYXR0cmlidXRlcyA9IE5VTExfVFJFRTsKICAgICAg
cmV0dXJuOwogICAgfQoKICAvKiBSZW1lbWJlciB0byBrZWVwIHRoZSBsaXN0cyBpbiB0aGUg
c2FtZSBvcmRlciwgZWxlbWVudC13aXNlLiAgKi8KCiAgc3BlY3MgPSBzID0gTlVMTF9UUkVF
OwogIGF0dHJzID0gYSA9IE5VTExfVFJFRTsKICBmb3IgKHQgPSBzcGVjc19hdHRyczsgdDsg
dCA9IG5leHQpCiAgICB7CiAgICAgIG5leHQgPSBUUkVFX0NIQUlOICh0KTsKICAgICAgLyog
RGVjbHNwZWNzIGhhdmUgYSBub24tTlVMTCBUUkVFX1ZBTFVFLiAgKi8KICAgICAgaWYgKFRS
RUVfVkFMVUUgKHQpICE9IE5VTExfVFJFRSkKCXsKCSAgaWYgKHNwZWNzID09IE5VTExfVFJF
RSkKCSAgICBzcGVjcyA9IHMgPSB0OwoJICBlbHNlCgkgICAgewoJICAgICAgVFJFRV9DSEFJ
TiAocykgPSB0OwoJICAgICAgcyA9IHQ7CgkgICAgfQoJfQogICAgICBlbHNlCgl7CgkgIGlm
IChhdHRycyA9PSBOVUxMX1RSRUUpCgkgICAgYXR0cnMgPSBhID0gVFJFRV9QVVJQT1NFICh0
KTsKCSAgZWxzZQoJICAgIHsKCSAgICAgIFRSRUVfQ0hBSU4gKGEpID0gVFJFRV9QVVJQT1NF
ICh0KTsKCSAgICAgIGEgPSBUUkVFX1BVUlBPU0UgKHQpOwoJICAgIH0KCSAgLyogTW9yZSBh
dHRycyBjYW4gYmUgbGlua2VkIGhlcmUsIG1vdmUgQSB0byB0aGUgZW5kLiAgKi8KCSAgd2hp
bGUgKFRSRUVfQ0hBSU4gKGEpICE9IE5VTExfVFJFRSkKCSAgICBhID0gVFJFRV9DSEFJTiAo
YSk7Cgl9CiAgICB9CgogIC8qIFRlcm1pbmF0ZSB0aGUgbGlzdHMuICAqLwogIGlmIChzICE9
IE5VTExfVFJFRSkKICAgIFRSRUVfQ0hBSU4gKHMpID0gTlVMTF9UUkVFOwogIGlmIChhICE9
IE5VTExfVFJFRSkKICAgIFRSRUVfQ0hBSU4gKGEpID0gTlVMTF9UUkVFOwoKICAvKiBBbGwg
ZG9uZS4gICovCiAgKmRlY2xzcGVjcyA9IHNwZWNzOwogICpwcmVmaXhfYXR0cmlidXRlcyA9
IGF0dHJzOwp9CgwKLyogQ2hlY2sgYSBwcmludGYvZnByaW50Zi9zcHJpbnRmL3NjYW5mL2Zz
Y2FuZi9zc2NhbmYgZm9ybWF0IGFnYWluc3QKICAgYSBwYXJhbWV0ZXIgbGlzdC4gICovCgoj
ZGVmaW5lIFRfSQkmaW50ZWdlcl90eXBlX25vZGUKI2RlZmluZSBUX0wJJmxvbmdfaW50ZWdl
cl90eXBlX25vZGUKI2RlZmluZSBUX0xMCSZsb25nX2xvbmdfaW50ZWdlcl90eXBlX25vZGUK
I2RlZmluZSBUX1MJJnNob3J0X2ludGVnZXJfdHlwZV9ub2RlCiNkZWZpbmUgVF9VSQkmdW5z
aWduZWRfdHlwZV9ub2RlCiNkZWZpbmUgVF9VTAkmbG9uZ191bnNpZ25lZF90eXBlX25vZGUK
I2RlZmluZSBUX1VMTAkmbG9uZ19sb25nX3Vuc2lnbmVkX3R5cGVfbm9kZQojZGVmaW5lIFRf
VVMJJnNob3J0X3Vuc2lnbmVkX3R5cGVfbm9kZQojZGVmaW5lIFRfRgkmZmxvYXRfdHlwZV9u
b2RlCiNkZWZpbmUgVF9ECSZkb3VibGVfdHlwZV9ub2RlCiNkZWZpbmUgVF9MRAkmbG9uZ19k
b3VibGVfdHlwZV9ub2RlCiNkZWZpbmUgVF9DCSZjaGFyX3R5cGVfbm9kZQojZGVmaW5lIFRf
Vgkmdm9pZF90eXBlX25vZGUKI2RlZmluZSBUX1cJJndjaGFyX3R5cGVfbm9kZQojZGVmaW5l
IFRfU1QgICAgJnNpemV0eXBlCgp0eXBlZGVmIHN0cnVjdCB7CiAgY2hhciAqZm9ybWF0X2No
YXJzOwogIGludCBwb2ludGVyX2NvdW50OwogIC8qIFR5cGUgb2YgYXJndW1lbnQgaWYgbm8g
bGVuZ3RoIG1vZGlmaWVyIGlzIHVzZWQuICAqLwogIHRyZWUgKm5vbGVuOwogIC8qIFR5cGUg
b2YgYXJndW1lbnQgaWYgbGVuZ3RoIG1vZGlmaWVyIGZvciBzaG9ydGVuaW5nIGlzIHVzZWQu
CiAgICAgSWYgTlVMTCwgdGhlbiB0aGlzIG1vZGlmaWVyIGlzIG5vdCBhbGxvd2VkLiAgKi8K
ICB0cmVlICpobGVuOwogIC8qIFR5cGUgb2YgYXJndW1lbnQgaWYgbGVuZ3RoIG1vZGlmaWVy
IGBsJyBpcyB1c2VkLgogICAgIElmIE5VTEwsIHRoZW4gdGhpcyBtb2RpZmllciBpcyBub3Qg
YWxsb3dlZC4gICovCiAgdHJlZSAqbGxlbjsKICAvKiBUeXBlIG9mIGFyZ3VtZW50IGlmIGxl
bmd0aCBtb2RpZmllciBgcScgb3IgYGxsJyBpcyB1c2VkLgogICAgIElmIE5VTEwsIHRoZW4g
dGhpcyBtb2RpZmllciBpcyBub3QgYWxsb3dlZC4gICovCiAgdHJlZSAqcWxlbjsKICAvKiBU
eXBlIG9mIGFyZ3VtZW50IGlmIGxlbmd0aCBtb2RpZmllciBgTCcgaXMgdXNlZC4KICAgICBJ
ZiBOVUxMLCB0aGVuIHRoaXMgbW9kaWZpZXIgaXMgbm90IGFsbG93ZWQuICAqLwogIHRyZWUg
KmJpZ2xsZW47CiAgLyogTGlzdCBvZiBvdGhlciBtb2RpZmllciBjaGFyYWN0ZXJzIGFsbG93
ZWQgd2l0aCB0aGVzZSBvcHRpb25zLiAgKi8KICBjaGFyICpmbGFnX2NoYXJzOwp9IGZvcm1h
dF9jaGFyX2luZm87CgpzdGF0aWMgZm9ybWF0X2NoYXJfaW5mbyBwcmludF9jaGFyX3RhYmxl
W10gPSB7CiAgeyAiZGkiLAkwLAlUX0ksCVRfSSwJVF9MLAlUX0xMLAlUX0xMLAkiLXdwMCAr
Igl9LAogIHsgIm94WCIsCTAsCVRfVUksCVRfVUksCVRfVUwsCVRfVUxMLAlUX1VMTCwJIi13
cDAjIgkJfSwKICB7ICJ1IiwJMCwJVF9VSSwJVF9VSSwJVF9VTCwJVF9VTEwsCVRfVUxMLAki
LXdwMCIJCX0sCi8qIFR3byBHTlUgZXh0ZW5zaW9ucy4gICovCiAgeyAiWiIsCTAsCVRfU1Qs
CU5VTEwsCU5VTEwsCU5VTEwsCU5VTEwsCSItd3AwIgkJfSwKICB7ICJtIiwJMCwJVF9WLAlO
VUxMLAlOVUxMLAlOVUxMLAlOVUxMLAkiLXdwIgkJfSwKICB7ICJmZUVnRyIsCTAsCVRfRCwJ
TlVMTCwJTlVMTCwJTlVMTCwJVF9MRCwJIi13cDAgKyMiCX0sCiAgeyAiYyIsCTAsCVRfSSwJ
TlVMTCwJVF9XLAlOVUxMLAlOVUxMLAkiLXciCQl9LAogIHsgIkMiLAkwLAlUX1csCU5VTEws
CU5VTEwsCU5VTEwsCU5VTEwsCSItdyIJCX0sCiAgeyAicyIsCTEsCVRfQywJTlVMTCwJVF9X
LAlOVUxMLAlOVUxMLAkiLXdwIgkJfSwKICB7ICJTIiwJMSwJVF9XLAlOVUxMLAlOVUxMLAlO
VUxMLAlOVUxMLAkiLXdwIgkJfSwKICB7ICJwIiwJMSwJVF9WLAlOVUxMLAlOVUxMLAlOVUxM
LAlOVUxMLAkiLXciCQl9LAogIHsgIm4iLAkxLAlUX0ksCVRfUywJVF9MLAlUX0xMLAlOVUxM
LAkiIgkJfSwKICB7IE5VTEwgfQp9OwoKc3RhdGljIGZvcm1hdF9jaGFyX2luZm8gc2Nhbl9j
aGFyX3RhYmxlW10gPSB7CiAgeyAiZGkiLAkxLAlUX0ksCVRfUywJVF9MLAlUX0xMLAlUX0xM
LAkiKiIJfSwKICB7ICJvdXhYIiwJMSwJVF9VSSwJVF9VUywJVF9VTCwJVF9VTEwsCVRfVUxM
LAkiKiIJfSwJCiAgeyAiZWZnRUciLAkxLAlUX0YsCU5VTEwsCVRfRCwJTlVMTCwJVF9MRCwJ
IioiCX0sCiAgeyAic2MiLAkxLAlUX0MsCU5VTEwsCVRfVywJTlVMTCwJTlVMTCwJIiphIgl9
LAogIHsgIlsiLAkxLAlUX0MsCU5VTEwsCU5VTEwsCU5VTEwsCU5VTEwsCSIqYSIJfSwKICB7
ICJDIiwJMSwJVF9XLAlOVUxMLAlOVUxMLAlOVUxMLAlOVUxMLAkiKiIJfSwKICB7ICJTIiwJ
MSwJVF9XLAlOVUxMLAlOVUxMLAlOVUxMLAlOVUxMLAkiKiIJfSwKICB7ICJwIiwJMiwJVF9W
LAlOVUxMLAlOVUxMLAlOVUxMLAlOVUxMLAkiKiIJfSwKICB7ICJuIiwJMSwJVF9JLAlUX1Ms
CVRfTCwJVF9MTCwJTlVMTCwJIiIJfSwKICB7IE5VTEwgfQp9OwoKdHlwZWRlZiBzdHJ1Y3Qg
ZnVuY3Rpb25fZm9ybWF0X2luZm8KewogIHN0cnVjdCBmdW5jdGlvbl9mb3JtYXRfaW5mbyAq
bmV4dDsgIC8qIG5leHQgc3RydWN0dXJlIG9uIHRoZSBsaXN0ICovCiAgdHJlZSBuYW1lOwkJ
CS8qIGlkZW50aWZpZXIgc3VjaCBhcyAicHJpbnRmIiAqLwogIHRyZWUgYXNzZW1ibGVyX25h
bWU7CQkvKiBvcHRpb25hbCBtYW5nbGVkIGlkZW50aWZpZXIgKGZvciBDKyspICovCiAgaW50
IGlzX3NjYW47CQkJLyogVFJVRSBpZiAqc2NhbmYgKi8KICBpbnQgZm9ybWF0X251bTsJCS8q
IG51bWJlciBvZiBmb3JtYXQgYXJndW1lbnQgKi8KICBpbnQgZmlyc3RfYXJnX251bTsJCS8q
IG51bWJlciBvZiBmaXJzdCBhcmcgKHplcm8gZm9yIHZhcmFyZ3MpICovCn0gZnVuY3Rpb25f
Zm9ybWF0X2luZm87CgpzdGF0aWMgZnVuY3Rpb25fZm9ybWF0X2luZm8gKmZ1bmN0aW9uX2Zv
cm1hdF9saXN0ID0gTlVMTDsKCnR5cGVkZWYgc3RydWN0IGludGVybmF0aW9uYWxfZm9ybWF0
X2luZm8KewogIHN0cnVjdCBpbnRlcm5hdGlvbmFsX2Zvcm1hdF9pbmZvICpuZXh0OyAgLyog
bmV4dCBzdHJ1Y3R1cmUgb24gdGhlIGxpc3QgKi8KICB0cmVlIG5hbWU7CQkJLyogaWRlbnRp
ZmllciBzdWNoIGFzICJnZXR0ZXh0IiAqLwogIHRyZWUgYXNzZW1ibGVyX25hbWU7CQkvKiBv
cHRpb25hbCBtYW5nbGVkIGlkZW50aWZpZXIgKGZvciBDKyspICovCiAgaW50IGZvcm1hdF9u
dW07CQkvKiBudW1iZXIgb2YgZm9ybWF0IGFyZ3VtZW50ICovCn0gaW50ZXJuYXRpb25hbF9m
b3JtYXRfaW5mbzsKCnN0YXRpYyBpbnRlcm5hdGlvbmFsX2Zvcm1hdF9pbmZvICppbnRlcm5h
dGlvbmFsX2Zvcm1hdF9saXN0ID0gTlVMTDsKCnN0YXRpYyB2b2lkIGNoZWNrX2Zvcm1hdF9p
bmZvCQlQUk9UTygoZnVuY3Rpb25fZm9ybWF0X2luZm8gKiwgdHJlZSkpOwoKLyogSW5pdGlh
bGl6ZSB0aGUgdGFibGUgb2YgZnVuY3Rpb25zIHRvIHBlcmZvcm0gZm9ybWF0IGNoZWNraW5n
IG9uLgogICBUaGUgQU5TSSBmdW5jdGlvbnMgYXJlIGFsd2F5cyBjaGVja2VkICh3aGV0aGVy
IDxzdGRpby5oPiBpcwogICBpbmNsdWRlZCBvciBub3QpLCBzaW5jZSBpdCBpcyBjb21tb24g
dG8gY2FsbCBwcmludGYgd2l0aG91dAogICBpbmNsdWRpbmcgPHN0ZGlvLmg+LiAgVGhlcmUg
c2hvdWxkbid0IGJlIGEgcHJvYmxlbSB3aXRoIHRoaXMsCiAgIHNpbmNlIEFOU0kgcmVzZXJ2
ZXMgdGhlc2UgZnVuY3Rpb24gbmFtZXMgd2hldGhlciB5b3UgaW5jbHVkZSB0aGUKICAgaGVh
ZGVyIGZpbGUgb3Igbm90LiAgSW4gYW55IGNhc2UsIHRoZSBjaGVja2luZyBpcyBoYXJtbGVz
cy4gCgogICBBbHNvIGluaXRpYWxpemUgdGhlIG5hbWUgb2YgZnVuY3Rpb24gdGhhdCBtb2Rp
ZnkgdGhlIGZvcm1hdCBzdHJpbmcgZm9yCiAgIGludGVybmF0aW9uYWxpemF0aW9uIHB1cnBv
c2VzLiAgKi8KCnZvaWQKaW5pdF9mdW5jdGlvbl9mb3JtYXRfaW5mbyAoKQp7CiAgcmVjb3Jk
X2Z1bmN0aW9uX2Zvcm1hdCAoZ2V0X2lkZW50aWZpZXIgKCJwcmludGYiKSwgTlVMTF9UUkVF
LCAwLCAxLCAyKTsKICByZWNvcmRfZnVuY3Rpb25fZm9ybWF0IChnZXRfaWRlbnRpZmllciAo
ImZwcmludGYiKSwgTlVMTF9UUkVFLCAwLCAyLCAzKTsKICByZWNvcmRfZnVuY3Rpb25fZm9y
bWF0IChnZXRfaWRlbnRpZmllciAoInNwcmludGYiKSwgTlVMTF9UUkVFLCAwLCAyLCAzKTsK
ICByZWNvcmRfZnVuY3Rpb25fZm9ybWF0IChnZXRfaWRlbnRpZmllciAoInNjYW5mIiksIE5V
TExfVFJFRSwgMSwgMSwgMik7CiAgcmVjb3JkX2Z1bmN0aW9uX2Zvcm1hdCAoZ2V0X2lkZW50
aWZpZXIgKCJmc2NhbmYiKSwgTlVMTF9UUkVFLCAxLCAyLCAzKTsKICByZWNvcmRfZnVuY3Rp
b25fZm9ybWF0IChnZXRfaWRlbnRpZmllciAoInNzY2FuZiIpLCBOVUxMX1RSRUUsIDEsIDIs
IDMpOwogIHJlY29yZF9mdW5jdGlvbl9mb3JtYXQgKGdldF9pZGVudGlmaWVyICgidnByaW50
ZiIpLCBOVUxMX1RSRUUsIDAsIDEsIDApOwogIHJlY29yZF9mdW5jdGlvbl9mb3JtYXQgKGdl
dF9pZGVudGlmaWVyICgidmZwcmludGYiKSwgTlVMTF9UUkVFLCAwLCAyLCAwKTsKICByZWNv
cmRfZnVuY3Rpb25fZm9ybWF0IChnZXRfaWRlbnRpZmllciAoInZzcHJpbnRmIiksIE5VTExf
VFJFRSwgMCwgMiwgMCk7CgogIHJlY29yZF9pbnRlcm5hdGlvbmFsX2Zvcm1hdCAoZ2V0X2lk
ZW50aWZpZXIgKCJnZXR0ZXh0IiksIE5VTExfVFJFRSwgMSk7CiAgcmVjb3JkX2ludGVybmF0
aW9uYWxfZm9ybWF0IChnZXRfaWRlbnRpZmllciAoImRnZXR0ZXh0IiksIE5VTExfVFJFRSwg
Mik7CiAgcmVjb3JkX2ludGVybmF0aW9uYWxfZm9ybWF0IChnZXRfaWRlbnRpZmllciAoImRj
Z2V0dGV4dCIpLCBOVUxMX1RSRUUsIDIpOwp9CgovKiBSZWNvcmQgaW5mb3JtYXRpb24gZm9y
IGFyZ3VtZW50IGZvcm1hdCBjaGVja2luZy4gIEZVTkNUSU9OX0lERU5UIGlzCiAgIHRoZSBp
ZGVudGlmaWVyIG5vZGUgZm9yIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB0byBjaGVjayAo
aXRzIGRlY2wKICAgbmVlZCBub3QgZXhpc3QgeWV0KS4gIElTX1NDQU4gaXMgdHJ1ZSBmb3Ig
c2NhbmYtdHlwZSBmb3JtYXQgY2hlY2tpbmc7CiAgIGZhbHNlIGluZGljYXRlcyBwcmludGYt
c3R5bGUgZm9ybWF0IGNoZWNraW5nLiAgRk9STUFUX05VTSBpcyB0aGUgbnVtYmVyCiAgIG9m
IHRoZSBhcmd1bWVudCB3aGljaCBpcyB0aGUgZm9ybWF0IGNvbnRyb2wgc3RyaW5nIChzdGFy
dGluZyBmcm9tIDEpLgogICBGSVJTVF9BUkdfTlVNIGlzIHRoZSBudW1iZXIgb2YgdGhlIGZp
cnN0IGFjdHVhbCBhcmd1bWVudCB0byBjaGVjawogICBhZ2FpbnN0IHRoZSBmb3JtYXQgc3Ry
aW5nLCBvciB6ZXJvIGlmIG5vIGNoZWNraW5nIGlzIG5vdCBiZSBkb25lCiAgIChlLmcuIGZv
ciB2YXJhcmdzIHN1Y2ggYXMgdmZwcmludGYpLiAgKi8KCnZvaWQKcmVjb3JkX2Z1bmN0aW9u
X2Zvcm1hdCAobmFtZSwgYXNzZW1ibGVyX25hbWUsIGlzX3NjYW4sCgkJCWZvcm1hdF9udW0s
IGZpcnN0X2FyZ19udW0pCiAgICAgIHRyZWUgbmFtZTsKICAgICAgdHJlZSBhc3NlbWJsZXJf
bmFtZTsKICAgICAgaW50IGlzX3NjYW47CiAgICAgIGludCBmb3JtYXRfbnVtOwogICAgICBp
bnQgZmlyc3RfYXJnX251bTsKewogIGZ1bmN0aW9uX2Zvcm1hdF9pbmZvICppbmZvOwoKICAv
KiBSZS11c2UgZXhpc3Rpbmcgc3RydWN0dXJlIGlmIGl0J3MgdGhlcmUuICAqLwoKICBmb3Ig
KGluZm8gPSBmdW5jdGlvbl9mb3JtYXRfbGlzdDsgaW5mbzsgaW5mbyA9IGluZm8tPm5leHQp
CiAgICB7CiAgICAgIGlmIChpbmZvLT5uYW1lID09IG5hbWUgJiYgaW5mby0+YXNzZW1ibGVy
X25hbWUgPT0gYXNzZW1ibGVyX25hbWUpCglicmVhazsKICAgIH0KICBpZiAoISBpbmZvKQog
ICAgewogICAgICBpbmZvID0gKGZ1bmN0aW9uX2Zvcm1hdF9pbmZvICopIHhtYWxsb2MgKHNp
emVvZiAoZnVuY3Rpb25fZm9ybWF0X2luZm8pKTsKICAgICAgaW5mby0+bmV4dCA9IGZ1bmN0
aW9uX2Zvcm1hdF9saXN0OwogICAgICBmdW5jdGlvbl9mb3JtYXRfbGlzdCA9IGluZm87Cgog
ICAgICBpbmZvLT5uYW1lID0gbmFtZTsKICAgICAgaW5mby0+YXNzZW1ibGVyX25hbWUgPSBh
c3NlbWJsZXJfbmFtZTsKICAgIH0KCiAgaW5mby0+aXNfc2NhbiA9IGlzX3NjYW47CiAgaW5m
by0+Zm9ybWF0X251bSA9IGZvcm1hdF9udW07CiAgaW5mby0+Zmlyc3RfYXJnX251bSA9IGZp
cnN0X2FyZ19udW07Cn0KCi8qIFJlY29yZCBpbmZvcm1hdGlvbiBmb3IgdGhlIG5hbWVzIG9m
IGZ1bmN0aW9uIHRoYXQgbW9kaWZ5IHRoZSBmb3JtYXQKICAgYXJndW1lbnQgdG8gZm9ybWF0
IGZ1bmN0aW9ucy4gIEZVTkNUSU9OX0lERU5UIGlzIHRoZSBpZGVudGlmaWVyIG5vZGUgZm9y
CiAgIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiAoaXRzIGRlY2wgbmVlZCBub3QgZXhpc3Qg
eWV0KSBhbmQgRk9STUFUX05VTSBpcwogICB0aGUgbnVtYmVyIG9mIHRoZSBhcmd1bWVudCB3
aGljaCBpcyB0aGUgZm9ybWF0IGNvbnRyb2wgc3RyaW5nIChzdGFydGluZwogICBmcm9tIDEp
LiAgKi8KCnN0YXRpYyB2b2lkCnJlY29yZF9pbnRlcm5hdGlvbmFsX2Zvcm1hdCAobmFtZSwg
YXNzZW1ibGVyX25hbWUsIGZvcm1hdF9udW0pCiAgICAgIHRyZWUgbmFtZTsKICAgICAgdHJl
ZSBhc3NlbWJsZXJfbmFtZTsKICAgICAgaW50IGZvcm1hdF9udW07CnsKICBpbnRlcm5hdGlv
bmFsX2Zvcm1hdF9pbmZvICppbmZvOwoKICAvKiBSZS11c2UgZXhpc3Rpbmcgc3RydWN0dXJl
IGlmIGl0J3MgdGhlcmUuICAqLwoKICBmb3IgKGluZm8gPSBpbnRlcm5hdGlvbmFsX2Zvcm1h
dF9saXN0OyBpbmZvOyBpbmZvID0gaW5mby0+bmV4dCkKICAgIHsKICAgICAgaWYgKGluZm8t
Pm5hbWUgPT0gbmFtZSAmJiBpbmZvLT5hc3NlbWJsZXJfbmFtZSA9PSBhc3NlbWJsZXJfbmFt
ZSkKCWJyZWFrOwogICAgfQoKICBpZiAoISBpbmZvKQogICAgewogICAgICBpbmZvCgk9IChp
bnRlcm5hdGlvbmFsX2Zvcm1hdF9pbmZvICopCgkgIHhtYWxsb2MgKHNpemVvZiAoaW50ZXJu
YXRpb25hbF9mb3JtYXRfaW5mbykpOwogICAgICBpbmZvLT5uZXh0ID0gaW50ZXJuYXRpb25h
bF9mb3JtYXRfbGlzdDsKICAgICAgaW50ZXJuYXRpb25hbF9mb3JtYXRfbGlzdCA9IGluZm87
CgogICAgICBpbmZvLT5uYW1lID0gbmFtZTsKICAgICAgaW5mby0+YXNzZW1ibGVyX25hbWUg
PSBhc3NlbWJsZXJfbmFtZTsKICAgIH0KCiAgaW5mby0+Zm9ybWF0X251bSA9IGZvcm1hdF9u
dW07Cn0KCnN0YXRpYyBjaGFyCXRmYWZmW10gPSAidG9vIGZldyBhcmd1bWVudHMgZm9yIGZv
cm1hdCI7CgwKLyogQ2hlY2sgdGhlIGFyZ3VtZW50IGxpc3Qgb2YgYSBjYWxsIHRvIHByaW50
Ziwgc2NhbmYsIGV0Yy4KICAgTkFNRSBpcyB0aGUgZnVuY3Rpb24gaWRlbnRpZmllci4KICAg
QVNTRU1CTEVSX05BTUUgaXMgdGhlIGZ1bmN0aW9uJ3MgYXNzZW1ibGVyIGlkZW50aWZpZXIu
CiAgIChFaXRoZXIgTkFNRSBvciBBU1NFTUJMRVJfTkFNRSwgYnV0IG5vdCBib3RoLCBtYXkg
YmUgTlVMTF9UUkVFLikKICAgUEFSQU1TIGlzIHRoZSBsaXN0IG9mIGFyZ3VtZW50IHZhbHVl
cy4gICovCgp2b2lkCmNoZWNrX2Z1bmN0aW9uX2Zvcm1hdCAobmFtZSwgYXNzZW1ibGVyX25h
bWUsIHBhcmFtcykKICAgICB0cmVlIG5hbWU7CiAgICAgdHJlZSBhc3NlbWJsZXJfbmFtZTsK
ICAgICB0cmVlIHBhcmFtczsKewogIGZ1bmN0aW9uX2Zvcm1hdF9pbmZvICppbmZvOwoKICAv
KiBTZWUgaWYgdGhpcyBmdW5jdGlvbiBpcyBhIGZvcm1hdCBmdW5jdGlvbi4gICovCiAgZm9y
IChpbmZvID0gZnVuY3Rpb25fZm9ybWF0X2xpc3Q7IGluZm87IGluZm8gPSBpbmZvLT5uZXh0
KQogICAgewogICAgICBpZiAoaW5mby0+YXNzZW1ibGVyX25hbWUKCSAgPyAoaW5mby0+YXNz
ZW1ibGVyX25hbWUgPT0gYXNzZW1ibGVyX25hbWUpCgkgIDogKGluZm8tPm5hbWUgPT0gbmFt
ZSkpCgl7CgkgIC8qIFl1cDsgY2hlY2sgaXQuICAqLwoJICBjaGVja19mb3JtYXRfaW5mbyAo
aW5mbywgcGFyYW1zKTsKCSAgYnJlYWs7Cgl9CiAgICB9Cn0KCi8qIENoZWNrIHRoZSBhcmd1
bWVudCBsaXN0IG9mIGEgY2FsbCB0byBwcmludGYsIHNjYW5mLCBldGMuCiAgIElORk8gcG9p
bnRzIHRvIHRoZSBmdW5jdGlvbl9mb3JtYXRfaW5mbyBzdHJ1Y3R1cmUuCiAgIFBBUkFNUyBp
cyB0aGUgbGlzdCBvZiBhcmd1bWVudCB2YWx1ZXMuICAqLwoKc3RhdGljIHZvaWQKY2hlY2tf
Zm9ybWF0X2luZm8gKGluZm8sIHBhcmFtcykKICAgICBmdW5jdGlvbl9mb3JtYXRfaW5mbyAq
aW5mbzsKICAgICB0cmVlIHBhcmFtczsKewogIGludCBpOwogIGludCBhcmdfbnVtOwogIGlu
dCBzdXBwcmVzc2VkLCB3aWRlLCBwcmVjaXNlOwogIGludCBsZW5ndGhfY2hhcjsKICBpbnQg
Zm9ybWF0X2NoYXI7CiAgaW50IGZvcm1hdF9sZW5ndGg7CiAgdHJlZSBmb3JtYXRfdHJlZTsK
ICB0cmVlIGN1cl9wYXJhbTsKICB0cmVlIGN1cl90eXBlOwogIHRyZWUgd2FudGVkX3R5cGU7
CiAgdHJlZSBmaXJzdF9maWxsaW5fcGFyYW07CiAgY2hhciAqZm9ybWF0X2NoYXJzOwogIGZv
cm1hdF9jaGFyX2luZm8gKmZjaTsKICBzdGF0aWMgY2hhciBtZXNzYWdlWzEzMl07CiAgY2hh
ciBmbGFnX2NoYXJzWzhdOwogIGludCBoYXNfb3BlcmFuZF9udW1iZXIgPSAwOwoKICAvKiBT
a2lwIHRvIGZvcm1hdCBhcmd1bWVudC4gIElmIHRoZSBhcmd1bWVudCBpc24ndCBhdmFpbGFi
bGUsIHRoZXJlJ3MKICAgICBubyB3b3JrIGZvciB1cyB0byBkbzsgcHJvdG90eXBlIGNoZWNr
aW5nIHdpbGwgY2F0Y2ggdGhlIHByb2JsZW0uICAqLwogIGZvciAoYXJnX251bSA9IDE7IDsg
KythcmdfbnVtKQogICAgewogICAgICBpZiAocGFyYW1zID09IDApCglyZXR1cm47CiAgICAg
IGlmIChhcmdfbnVtID09IGluZm8tPmZvcm1hdF9udW0pCglicmVhazsKICAgICAgcGFyYW1z
ID0gVFJFRV9DSEFJTiAocGFyYW1zKTsKICAgIH0KICBmb3JtYXRfdHJlZSA9IFRSRUVfVkFM
VUUgKHBhcmFtcyk7CiAgcGFyYW1zID0gVFJFRV9DSEFJTiAocGFyYW1zKTsKICBpZiAoZm9y
bWF0X3RyZWUgPT0gMCkKICAgIHJldHVybjsKCiAgLyogV2UgY2FuIG9ubHkgY2hlY2sgdGhl
IGZvcm1hdCBpZiBpdCdzIGEgc3RyaW5nIGNvbnN0YW50LiAgKi8KICB3aGlsZSAoVFJFRV9D
T0RFIChmb3JtYXRfdHJlZSkgPT0gTk9QX0VYUFIpCiAgICBmb3JtYXRfdHJlZSA9IFRSRUVf
T1BFUkFORCAoZm9ybWF0X3RyZWUsIDApOyAvKiBzdHJpcCBjb2VyY2lvbiAqLwoKICBpZiAo
VFJFRV9DT0RFIChmb3JtYXRfdHJlZSkgPT0gQ0FMTF9FWFBSCiAgICAgICYmIFRSRUVfQ09E
RSAoVFJFRV9PUEVSQU5EIChmb3JtYXRfdHJlZSwgMCkpID09IEFERFJfRVhQUgogICAgICAm
JiAoVFJFRV9DT0RFIChUUkVFX09QRVJBTkQgKFRSRUVfT1BFUkFORCAoZm9ybWF0X3RyZWUs
IDApLCAwKSkKCSAgPT0gRlVOQ1RJT05fREVDTCkpCiAgICB7CiAgICAgIHRyZWUgZnVuY3Rp
b24gPSBUUkVFX09QRVJBTkQgKFRSRUVfT1BFUkFORCAoZm9ybWF0X3RyZWUsIDApLCAwKTsK
CiAgICAgIC8qIFNlZSBpZiB0aGlzIGlzIGEgY2FsbCB0byBhIGtub3duIGludGVybmF0aW9u
YWxpemF0aW9uIGZ1bmN0aW9uCgkgdGhhdCBtb2RpZmllcyB0aGUgZm9ybWF0IGFyZy4gICov
CiAgICAgIGludGVybmF0aW9uYWxfZm9ybWF0X2luZm8gKmluZm87CgogICAgICBmb3IgKGlu
Zm8gPSBpbnRlcm5hdGlvbmFsX2Zvcm1hdF9saXN0OyBpbmZvOyBpbmZvID0gaW5mby0+bmV4
dCkKCWlmIChpbmZvLT5hc3NlbWJsZXJfbmFtZQoJICAgID8gKGluZm8tPmFzc2VtYmxlcl9u
YW1lID09IERFQ0xfQVNTRU1CTEVSX05BTUUgKGZ1bmN0aW9uKSkKCSAgICA6IChpbmZvLT5u
YW1lID09IERFQ0xfTkFNRSAoZnVuY3Rpb24pKSkKCSAgewoJICAgIHRyZWUgaW5uZXJfYXJn
czsKCSAgICBpbnQgaTsKCgkgICAgZm9yIChpbm5lcl9hcmdzID0gVFJFRV9PUEVSQU5EIChm
b3JtYXRfdHJlZSwgMSksIGkgPSAxOwoJCSBpbm5lcl9hcmdzICE9IDA7CgkJIGlubmVyX2Fy
Z3MgPSBUUkVFX0NIQUlOIChpbm5lcl9hcmdzKSwgaSsrKQoJICAgICAgaWYgKGkgPT0gaW5m
by0+Zm9ybWF0X251bSkKCQl7CgkJICBmb3JtYXRfdHJlZSA9IFRSRUVfVkFMVUUgKGlubmVy
X2FyZ3MpOwoKCQkgIHdoaWxlIChUUkVFX0NPREUgKGZvcm1hdF90cmVlKSA9PSBOT1BfRVhQ
UikKCQkgICAgZm9ybWF0X3RyZWUgPSBUUkVFX09QRVJBTkQgKGZvcm1hdF90cmVlLCAwKTsK
CQl9CgkgIH0KICAgIH0KCiAgaWYgKGludGVnZXJfemVyb3AgKGZvcm1hdF90cmVlKSkKICAg
IHsKICAgICAgd2FybmluZyAoIm51bGwgZm9ybWF0IHN0cmluZyIpOwogICAgICByZXR1cm47
CiAgICB9CiAgaWYgKFRSRUVfQ09ERSAoZm9ybWF0X3RyZWUpICE9IEFERFJfRVhQUikKICAg
IHJldHVybjsKICBmb3JtYXRfdHJlZSA9IFRSRUVfT1BFUkFORCAoZm9ybWF0X3RyZWUsIDAp
OwogIGlmIChUUkVFX0NPREUgKGZvcm1hdF90cmVlKSAhPSBTVFJJTkdfQ1NUKQogICAgcmV0
dXJuOwogIGZvcm1hdF9jaGFycyA9IFRSRUVfU1RSSU5HX1BPSU5URVIgKGZvcm1hdF90cmVl
KTsKICBmb3JtYXRfbGVuZ3RoID0gVFJFRV9TVFJJTkdfTEVOR1RIIChmb3JtYXRfdHJlZSk7
CiAgaWYgKGZvcm1hdF9sZW5ndGggPD0gMSkKICAgIHdhcm5pbmcgKCJ6ZXJvLWxlbmd0aCBm
b3JtYXQgc3RyaW5nIik7CiAgaWYgKGZvcm1hdF9jaGFyc1stLWZvcm1hdF9sZW5ndGhdICE9
IDApCiAgICB7CiAgICAgIHdhcm5pbmcgKCJ1bnRlcm1pbmF0ZWQgZm9ybWF0IHN0cmluZyIp
OwogICAgICByZXR1cm47CiAgICB9CiAgLyogU2tpcCB0byBmaXJzdCBhcmd1bWVudCB0byBj
aGVjay4gICovCiAgd2hpbGUgKGFyZ19udW0gKyAxIDwgaW5mby0+Zmlyc3RfYXJnX251bSkK
ICAgIHsKICAgICAgaWYgKHBhcmFtcyA9PSAwKQoJcmV0dXJuOwogICAgICBwYXJhbXMgPSBU
UkVFX0NIQUlOIChwYXJhbXMpOwogICAgICArK2FyZ19udW07CiAgICB9CgogIGZpcnN0X2Zp
bGxpbl9wYXJhbSA9IHBhcmFtczsKICB3aGlsZSAoMSkKICAgIHsKICAgICAgaW50IGFmbGFn
OwogICAgICBpZiAoKmZvcm1hdF9jaGFycyA9PSAwKQoJewoJICBpZiAoZm9ybWF0X2NoYXJz
IC0gVFJFRV9TVFJJTkdfUE9JTlRFUiAoZm9ybWF0X3RyZWUpICE9IGZvcm1hdF9sZW5ndGgp
CgkgICAgd2FybmluZyAoImVtYmVkZGVkIGBcXDAnIGluIGZvcm1hdCIpOwoJICBpZiAoaW5m
by0+Zmlyc3RfYXJnX251bSAhPSAwICYmIHBhcmFtcyAhPSAwICYmICEgaGFzX29wZXJhbmRf
bnVtYmVyKQoJICAgIHdhcm5pbmcgKCJ0b28gbWFueSBhcmd1bWVudHMgZm9yIGZvcm1hdCIp
OwoJICByZXR1cm47Cgl9CiAgICAgIGlmICgqZm9ybWF0X2NoYXJzKysgIT0gJyUnKQoJY29u
dGludWU7CiAgICAgIGlmICgqZm9ybWF0X2NoYXJzID09IDApCgl7CgkgIHdhcm5pbmcgKCJz
cHVyaW91cyB0cmFpbGluZyBgJSUnIGluIGZvcm1hdCIpOwoJICBjb250aW51ZTsKCX0KICAg
ICAgaWYgKCpmb3JtYXRfY2hhcnMgPT0gJyUnKQoJewoJICArK2Zvcm1hdF9jaGFyczsKCSAg
Y29udGludWU7Cgl9CiAgICAgIGZsYWdfY2hhcnNbMF0gPSAwOwogICAgICBzdXBwcmVzc2Vk
ID0gd2lkZSA9IHByZWNpc2UgPSBGQUxTRTsKICAgICAgaWYgKGluZm8tPmlzX3NjYW4pCgl7
CgkgIHN1cHByZXNzZWQgPSAqZm9ybWF0X2NoYXJzID09ICcqJzsKCSAgaWYgKHN1cHByZXNz
ZWQpCgkgICAgKytmb3JtYXRfY2hhcnM7CgkgIHdoaWxlIChpc2RpZ2l0ICgqZm9ybWF0X2No
YXJzKSkKCSAgICArK2Zvcm1hdF9jaGFyczsKCX0KICAgICAgZWxzZQoJewoJICAvKiBTZWUg
aWYgd2UgaGF2ZSBhIG51bWJlciBmb2xsb3dlZCBieSBhIGRvbGxhciBzaWduLiAgSWYgd2Ug
ZG8sCgkgICAgIGl0IGlzIGFuIG9wZXJhbmQgbnVtYmVyLCBzbyBzZXQgUEFSQU1TIHRvIHRo
YXQgb3BlcmFuZC4gICovCgkgIGlmICgqZm9ybWF0X2NoYXJzID49ICcwJyAmJiAqZm9ybWF0
X2NoYXJzIDw9ICc5JykKCSAgICB7CgkgICAgICBjaGFyICpwID0gZm9ybWF0X2NoYXJzOwoK
CSAgICAgIHdoaWxlICgqcCA+PSAnMCcgJiYgKnArKyA8PSAnOScpCgkJOwoKCSAgICAgIGlm
ICgqcCA9PSAnJCcpCgkJewoJCSAgaW50IG9wbnVtID0gYXRvaSAoZm9ybWF0X2NoYXJzKTsK
CgkJICBwYXJhbXMgPSBmaXJzdF9maWxsaW5fcGFyYW07CgkJICBmb3JtYXRfY2hhcnMgPSBw
ICsgMTsKCQkgIGhhc19vcGVyYW5kX251bWJlciA9IDE7CgoJCSAgZm9yIChpID0gMTsgaSA8
IG9wbnVtICYmIHBhcmFtcyAhPSAwOyBpKyspCgkJICAgIHBhcmFtcyA9IFRSRUVfQ0hBSU4g
KHBhcmFtcyk7CgoJCSAgaWYgKG9wbnVtID09IDAgfHwgcGFyYW1zID09IDApCgkJICAgIHsK
CQkgICAgICB3YXJuaW5nICgib3BlcmFuZCBudW1iZXIgb3V0IG9mIHJhbmdlIGluIGZvcm1h
dCIpOwoJCSAgICAgIHJldHVybjsKCQkgICAgfQoJCX0KCSAgICB9CgoJICB3aGlsZSAoKmZv
cm1hdF9jaGFycyAhPSAwICYmIGluZGV4ICgiICsjMC0iLCAqZm9ybWF0X2NoYXJzKSAhPSAw
KQoJICAgIHsKCSAgICAgIGlmIChpbmRleCAoZmxhZ19jaGFycywgKmZvcm1hdF9jaGFycykg
IT0gMCkKCQl7CgkJICBzcHJpbnRmIChtZXNzYWdlLCAicmVwZWF0ZWQgYCVjJyBmbGFnIGlu
IGZvcm1hdCIsCgkJCSAgICpmb3JtYXRfY2hhcnMpOwoJCSAgd2FybmluZyAobWVzc2FnZSk7
CgkJfQoJICAgICAgaSA9IHN0cmxlbiAoZmxhZ19jaGFycyk7CgkgICAgICBmbGFnX2NoYXJz
W2krK10gPSAqZm9ybWF0X2NoYXJzKys7CgkgICAgICBmbGFnX2NoYXJzW2ldID0gMDsKCSAg
ICB9CgkgIC8qICJJZiB0aGUgc3BhY2UgYW5kICsgZmxhZ3MgYm90aCBhcHBlYXIsIAoJICAg
ICB0aGUgc3BhY2UgZmxhZyB3aWxsIGJlIGlnbm9yZWQuIiAgKi8KCSAgaWYgKGluZGV4IChm
bGFnX2NoYXJzLCAnICcpICE9IDAKCSAgICAgICYmIGluZGV4IChmbGFnX2NoYXJzLCAnKycp
ICE9IDApCgkgICAgd2FybmluZyAoInVzZSBvZiBib3RoIGAgJyBhbmQgYCsnIGZsYWdzIGlu
IGZvcm1hdCIpOwoJICAvKiAiSWYgdGhlIDAgYW5kIC0gZmxhZ3MgYm90aCBhcHBlYXIsCgkg
ICAgIHRoZSAwIGZsYWcgd2lsbCBiZSBpZ25vcmVkLiIgICovCgkgIGlmIChpbmRleCAoZmxh
Z19jaGFycywgJzAnKSAhPSAwCgkgICAgICAmJiBpbmRleCAoZmxhZ19jaGFycywgJy0nKSAh
PSAwKQoJICAgIHdhcm5pbmcgKCJ1c2Ugb2YgYm90aCBgMCcgYW5kIGAtJyBmbGFncyBpbiBm
b3JtYXQiKTsKCSAgaWYgKCpmb3JtYXRfY2hhcnMgPT0gJyonKQoJICAgIHsKCSAgICAgIHdp
ZGUgPSBUUlVFOwoJICAgICAgLyogIi4uLmEgZmllbGQgd2lkdGguLi5tYXkgYmUgaW5kaWNh
dGVkIGJ5IGFuIGFzdGVyaXNrLgoJCSBJbiB0aGlzIGNhc2UsIGFuIGludCBhcmd1bWVudCBz
dXBwbGllcyB0aGUgZmllbGQgd2lkdGguLi4iICAqLwoJICAgICAgKytmb3JtYXRfY2hhcnM7
CgkgICAgICBpZiAocGFyYW1zID09IDApCgkJewoJCSAgd2FybmluZyAodGZhZmYpOwoJCSAg
cmV0dXJuOwoJCX0KCSAgICAgIGlmIChpbmZvLT5maXJzdF9hcmdfbnVtICE9IDApCgkJewoJ
CSAgY3VyX3BhcmFtID0gVFJFRV9WQUxVRSAocGFyYW1zKTsKCQkgIHBhcmFtcyA9IFRSRUVf
Q0hBSU4gKHBhcmFtcyk7CgkJICArK2FyZ19udW07CgkJICAvKiBzaXplX3QgaXMgZ2VuZXJh
bGx5IG5vdCB2YWxpZCBoZXJlLgoJCSAgICAgSXQgd2lsbCB3b3JrIG9uIG1vc3QgbWFjaGlu
ZXMsIGJlY2F1c2Ugc2l6ZV90IGFuZCBpbnQKCQkgICAgIGhhdmUgdGhlIHNhbWUgbW9kZS4g
IEJ1dCBtaWdodCBhcyB3ZWxsIHdhcm4gYW55d2F5LAoJCSAgICAgc2luY2UgaXQgd2lsbCBm
YWlsIG9uIG90aGVyIG1hY2hpbmVzLiAgKi8KCQkgIGlmICgoVFlQRV9NQUlOX1ZBUklBTlQg
KFRSRUVfVFlQRSAoY3VyX3BhcmFtKSkKCQkgICAgICAgIT0gaW50ZWdlcl90eXBlX25vZGUp
CgkJICAgICAgJiYKCQkgICAgICAoVFlQRV9NQUlOX1ZBUklBTlQgKFRSRUVfVFlQRSAoY3Vy
X3BhcmFtKSkKCQkgICAgICAgIT0gdW5zaWduZWRfdHlwZV9ub2RlKSkKCQkgICAgewoJCSAg
ICAgIHNwcmludGYgKG1lc3NhZ2UsCgkJCSAgICAgICAiZmllbGQgd2lkdGggaXMgbm90IHR5
cGUgaW50IChhcmcgJWQpIiwKCQkJICAgICAgIGFyZ19udW0pOwoJCSAgICAgIHdhcm5pbmcg
KG1lc3NhZ2UpOwoJCSAgICB9CgkJfQoJICAgIH0KCSAgZWxzZQoJICAgIHsKCSAgICAgIHdo
aWxlIChpc2RpZ2l0ICgqZm9ybWF0X2NoYXJzKSkKCQl7CgkJICB3aWRlID0gVFJVRTsKCQkg
ICsrZm9ybWF0X2NoYXJzOwoJCX0KCSAgICB9CgkgIGlmICgqZm9ybWF0X2NoYXJzID09ICcu
JykKCSAgICB7CgkgICAgICBwcmVjaXNlID0gVFJVRTsKCSAgICAgICsrZm9ybWF0X2NoYXJz
OwoJICAgICAgaWYgKCpmb3JtYXRfY2hhcnMgIT0gJyonICYmICFpc2RpZ2l0ICgqZm9ybWF0
X2NoYXJzKSkKCQl3YXJuaW5nICgiYC4nIG5vdCBmb2xsb3dlZCBieSBgKicgb3IgZGlnaXQg
aW4gZm9ybWF0Iik7CgkgICAgICAvKiAiLi4uYS4uLnByZWNpc2lvbi4uLm1heSBiZSBpbmRp
Y2F0ZWQgYnkgYW4gYXN0ZXJpc2suCgkJIEluIHRoaXMgY2FzZSwgYW4gaW50IGFyZ3VtZW50
IHN1cHBsaWVzIHRoZS4uLnByZWNpc2lvbi4iICAqLwoJICAgICAgaWYgKCpmb3JtYXRfY2hh
cnMgPT0gJyonKQoJCXsKCQkgIGlmIChpbmZvLT5maXJzdF9hcmdfbnVtICE9IDApCgkJICAg
IHsKCQkgICAgICArK2Zvcm1hdF9jaGFyczsKCQkgICAgICBpZiAocGFyYW1zID09IDApCgkJ
ICAgICAgICB7CgkJCSAgd2FybmluZyAodGZhZmYpOwoJCQkgIHJldHVybjsKCQkJfQoJCSAg
ICAgIGN1cl9wYXJhbSA9IFRSRUVfVkFMVUUgKHBhcmFtcyk7CgkJICAgICAgcGFyYW1zID0g
VFJFRV9DSEFJTiAocGFyYW1zKTsKCQkgICAgICArK2FyZ19udW07CgkJICAgICAgaWYgKFRZ
UEVfTUFJTl9WQVJJQU5UIChUUkVFX1RZUEUgKGN1cl9wYXJhbSkpCgkJCSAgIT0gaW50ZWdl
cl90eXBlX25vZGUpCgkJICAgICAgICB7CgkJICAgICAgICAgIHNwcmludGYgKG1lc3NhZ2Us
CgkJCQkgICAiZmllbGQgd2lkdGggaXMgbm90IHR5cGUgaW50IChhcmcgJWQpIiwKCQkJCSAg
IGFyZ19udW0pOwoJCSAgICAgICAgICB3YXJuaW5nIChtZXNzYWdlKTsKCQkgICAgICAgIH0K
CQkgICAgfQoJCX0KCSAgICAgIGVsc2UKCQl7CgkJICB3aGlsZSAoaXNkaWdpdCAoKmZvcm1h
dF9jaGFycykpCgkJICAgICsrZm9ybWF0X2NoYXJzOwoJCX0KCSAgICB9Cgl9CiAgICAgIGlm
ICgqZm9ybWF0X2NoYXJzID09ICdoJyB8fCAqZm9ybWF0X2NoYXJzID09ICdsJykKCWxlbmd0
aF9jaGFyID0gKmZvcm1hdF9jaGFycysrOwogICAgICBlbHNlIGlmICgqZm9ybWF0X2NoYXJz
ID09ICdxJyB8fCAqZm9ybWF0X2NoYXJzID09ICdMJykKCXsKCSAgbGVuZ3RoX2NoYXIgPSAq
Zm9ybWF0X2NoYXJzKys7CgkgIGlmIChwZWRhbnRpYykKCSAgICBwZWR3YXJuICgiQU5TSSBD
IGRvZXMgbm90IHN1cHBvcnQgdGhlIGAlYycgbGVuZ3RoIG1vZGlmaWVyIiwKCQkgICAgIGxl
bmd0aF9jaGFyKTsKCX0KICAgICAgZWxzZQoJbGVuZ3RoX2NoYXIgPSAwOwogICAgICBpZiAo
bGVuZ3RoX2NoYXIgPT0gJ2wnICYmICpmb3JtYXRfY2hhcnMgPT0gJ2wnKQoJewoJICBsZW5n
dGhfY2hhciA9ICdxJywgZm9ybWF0X2NoYXJzKys7CgkgIGlmIChwZWRhbnRpYykKCSAgICBw
ZWR3YXJuICgiQU5TSSBDIGRvZXMgbm90IHN1cHBvcnQgdGhlIGBsbCcgbGVuZ3RoIG1vZGlm
aWVyIik7Cgl9CiAgICAgIGFmbGFnID0gMDsKICAgICAgaWYgKCpmb3JtYXRfY2hhcnMgPT0g
J2EnKQoJewoJICBhZmxhZyA9IDE7CgkgIGZvcm1hdF9jaGFycysrOwoJfQogICAgICBpZiAo
c3VwcHJlc3NlZCAmJiBsZW5ndGhfY2hhciAhPSAwKQoJewoJICBzcHJpbnRmIChtZXNzYWdl
LAoJCSAgICJ1c2Ugb2YgYConIGFuZCBgJWMnIHRvZ2V0aGVyIGluIGZvcm1hdCIsCgkJICAg
bGVuZ3RoX2NoYXIpOwoJICB3YXJuaW5nIChtZXNzYWdlKTsKCX0KICAgICAgZm9ybWF0X2No
YXIgPSAqZm9ybWF0X2NoYXJzOwogICAgICBpZiAoZm9ybWF0X2NoYXIgPT0gMCB8fCBmb3Jt
YXRfY2hhciA9PSAnJScpCgl7CgkgIHdhcm5pbmcgKCJjb252ZXJzaW9uIGxhY2tzIHR5cGUg
YXQgZW5kIG9mIGZvcm1hdCIpOwoJICBjb250aW51ZTsKCX0KICAgICAgZm9ybWF0X2NoYXJz
Kys7CiAgICAgIGZjaSA9IGluZm8tPmlzX3NjYW4gPyBzY2FuX2NoYXJfdGFibGUgOiBwcmlu
dF9jaGFyX3RhYmxlOwogICAgICB3aGlsZSAoZmNpLT5mb3JtYXRfY2hhcnMgIT0gMAoJICAg
ICAmJiBpbmRleCAoZmNpLT5mb3JtYXRfY2hhcnMsIGZvcm1hdF9jaGFyKSA9PSAwKQoJICAr
K2ZjaTsKICAgICAgaWYgKGZjaS0+Zm9ybWF0X2NoYXJzID09IDApCgl7CgkgIGlmIChmb3Jt
YXRfY2hhciA+PSAwNDAgJiYgZm9ybWF0X2NoYXIgPCAwMTc3KQoJICAgIHNwcmludGYgKG1l
c3NhZ2UsCgkJICAgICAidW5rbm93biBjb252ZXJzaW9uIHR5cGUgY2hhcmFjdGVyIGAlYycg
aW4gZm9ybWF0IiwKCQkgICAgIGZvcm1hdF9jaGFyKTsKCSAgZWxzZQoJICAgIHNwcmludGYg
KG1lc3NhZ2UsCgkJICAgICAidW5rbm93biBjb252ZXJzaW9uIHR5cGUgY2hhcmFjdGVyIDB4
JXggaW4gZm9ybWF0IiwKCQkgICAgIGZvcm1hdF9jaGFyKTsKCSAgd2FybmluZyAobWVzc2Fn
ZSk7CgkgIGNvbnRpbnVlOwoJfQogICAgICBpZiAod2lkZSAmJiBpbmRleCAoZmNpLT5mbGFn
X2NoYXJzLCAndycpID09IDApCgl7CgkgIHNwcmludGYgKG1lc3NhZ2UsICJ3aWR0aCB1c2Vk
IHdpdGggYCVjJyBmb3JtYXQiLAoJCSAgIGZvcm1hdF9jaGFyKTsKCSAgd2FybmluZyAobWVz
c2FnZSk7Cgl9CiAgICAgIGlmIChwcmVjaXNlICYmIGluZGV4IChmY2ktPmZsYWdfY2hhcnMs
ICdwJykgPT0gMCkKCXsKCSAgc3ByaW50ZiAobWVzc2FnZSwgInByZWNpc2lvbiB1c2VkIHdp
dGggYCVjJyBmb3JtYXQiLAoJCSAgIGZvcm1hdF9jaGFyKTsKCSAgd2FybmluZyAobWVzc2Fn
ZSk7Cgl9CiAgICAgIGlmIChhZmxhZyAmJiBpbmRleCAoZmNpLT5mbGFnX2NoYXJzLCAnYScp
ID09IDApCgl7CgkgIHNwcmludGYgKG1lc3NhZ2UsICJgYScgZmxhZyB1c2VkIHdpdGggYCVj
JyBmb3JtYXQiLAoJCSAgIGZvcm1hdF9jaGFyKTsKCSAgd2FybmluZyAobWVzc2FnZSk7Cgkg
IC8qIFRvIHNpbXBsaWZ5IHRoZSBmb2xsb3dpbmcgY29kZS4gICovCgkgIGFmbGFnID0gMDsK
CX0KICAgICAgaWYgKGluZm8tPmlzX3NjYW4gJiYgZm9ybWF0X2NoYXIgPT0gJ1snKQoJewoJ
ICAvKiBTa2lwIG92ZXIgc2NhbiBzZXQsIGluIGNhc2UgaXQgaGFwcGVucyB0byBoYXZlICcl
JyBpbiBpdC4gICovCgkgIGlmICgqZm9ybWF0X2NoYXJzID09ICdeJykKCSAgICArK2Zvcm1h
dF9jaGFyczsKCSAgLyogRmluZCBjbG9zaW5nIGJyYWNrZXQ7IGlmIG9uZSBpcyBoaXQgaW1t
ZWRpYXRlbHksIHRoZW4KCSAgICAgaXQncyBwYXJ0IG9mIHRoZSBzY2FuIHNldCByYXRoZXIg
dGhhbiBhIHRlcm1pbmF0b3IuICAqLwoJICBpZiAoKmZvcm1hdF9jaGFycyA9PSAnXScpCgkg
ICAgKytmb3JtYXRfY2hhcnM7CgkgIHdoaWxlICgqZm9ybWF0X2NoYXJzICYmICpmb3JtYXRf
Y2hhcnMgIT0gJ10nKQoJICAgICsrZm9ybWF0X2NoYXJzOwoJICBpZiAoKmZvcm1hdF9jaGFy
cyAhPSAnXScpCgkgICAgICAvKiBUaGUgZW5kIG9mIHRoZSBmb3JtYXQgc3RyaW5nIHdhcyBy
ZWFjaGVkLiAgKi8KCSAgICAgIHdhcm5pbmcgKCJubyBjbG9zaW5nIGBdJyBmb3IgYCUlWycg
Zm9ybWF0Iik7Cgl9CiAgICAgIGlmIChzdXBwcmVzc2VkKQoJewoJICBpZiAoaW5kZXggKGZj
aS0+ZmxhZ19jaGFycywgJyonKSA9PSAwKQoJICAgIHsKCSAgICAgIHNwcmludGYgKG1lc3Nh
Z2UsCgkJICAgICAgICJzdXBwcmVzc2lvbiBvZiBgJWMnIGNvbnZlcnNpb24gaW4gZm9ybWF0
IiwKCQkgICAgICAgZm9ybWF0X2NoYXIpOwoJICAgICAgd2FybmluZyAobWVzc2FnZSk7Cgkg
ICAgfQoJICBjb250aW51ZTsKCX0KICAgICAgZm9yIChpID0gMDsgZmxhZ19jaGFyc1tpXSAh
PSAwOyArK2kpCgl7CgkgIGlmIChpbmRleCAoZmNpLT5mbGFnX2NoYXJzLCBmbGFnX2NoYXJz
W2ldKSA9PSAwKQoJICAgIHsKCSAgICAgIHNwcmludGYgKG1lc3NhZ2UsICJmbGFnIGAlYycg
dXNlZCB3aXRoIHR5cGUgYCVjJyIsCgkJICAgICAgIGZsYWdfY2hhcnNbaV0sIGZvcm1hdF9j
aGFyKTsKCSAgICAgIHdhcm5pbmcgKG1lc3NhZ2UpOwoJICAgIH0KCX0KICAgICAgaWYgKHBy
ZWNpc2UgJiYgaW5kZXggKGZsYWdfY2hhcnMsICcwJykgIT0gMAoJICAmJiAoZm9ybWF0X2No
YXIgPT0gJ2QnIHx8IGZvcm1hdF9jaGFyID09ICdpJwoJICAgICAgfHwgZm9ybWF0X2NoYXIg
PT0gJ28nIHx8IGZvcm1hdF9jaGFyID09ICd1JwoJICAgICAgfHwgZm9ybWF0X2NoYXIgPT0g
J3gnIHx8IGZvcm1hdF9jaGFyID09ICd4JykpCgl7CgkgIHNwcmludGYgKG1lc3NhZ2UsCgkJ
ICAgImAwJyBmbGFnIGlnbm9yZWQgd2l0aCBwcmVjaXNpb24gc3BlY2lmaWVyIGFuZCBgJWMn
IGZvcm1hdCIsCgkJICAgZm9ybWF0X2NoYXIpOwoJICB3YXJuaW5nIChtZXNzYWdlKTsKCX0K
ICAgICAgc3dpdGNoIChsZW5ndGhfY2hhcikKCXsKCWRlZmF1bHQ6IHdhbnRlZF90eXBlID0g
ZmNpLT5ub2xlbiA/ICooZmNpLT5ub2xlbikgOiAwOyBicmVhazsKCWNhc2UgJ2gnOiB3YW50
ZWRfdHlwZSA9IGZjaS0+aGxlbiA/ICooZmNpLT5obGVuKSA6IDA7IGJyZWFrOwoJY2FzZSAn
bCc6IHdhbnRlZF90eXBlID0gZmNpLT5sbGVuID8gKihmY2ktPmxsZW4pIDogMDsgYnJlYWs7
CgljYXNlICdxJzogd2FudGVkX3R5cGUgPSBmY2ktPnFsZW4gPyAqKGZjaS0+cWxlbikgOiAw
OyBicmVhazsKCWNhc2UgJ0wnOiB3YW50ZWRfdHlwZSA9IGZjaS0+YmlnbGxlbiA/ICooZmNp
LT5iaWdsbGVuKSA6IDA7IGJyZWFrOwoJfQogICAgICBpZiAod2FudGVkX3R5cGUgPT0gMCkK
CXsKCSAgc3ByaW50ZiAobWVzc2FnZSwKCQkgICAidXNlIG9mIGAlYycgbGVuZ3RoIGNoYXJh
Y3RlciB3aXRoIGAlYycgdHlwZSBjaGFyYWN0ZXIiLAoJCSAgIGxlbmd0aF9jaGFyLCBmb3Jt
YXRfY2hhcik7CgkgIHdhcm5pbmcgKG1lc3NhZ2UpOwoJfQoKICAgICAgLyoKICAgICAgICoq
IFhYWCAtLSBzaG91bGQga3ZldGNoIGFib3V0IHN0dWZmIHN1Y2ggYXMKICAgICAgICoqCXsK
ICAgICAgICoqCQljb25zdCBpbnQJaTsKICAgICAgICoqCiAgICAgICAqKgkJc2NhbmYgKCIl
ZCIsICZpKTsKICAgICAgICoqCX0KICAgICAgICovCgogICAgICAvKiBGaW5hbGx5LiAuIC5j
aGVjayB0eXBlIG9mIGFyZ3VtZW50IGFnYWluc3QgZGVzaXJlZCB0eXBlISAgKi8KICAgICAg
aWYgKGluZm8tPmZpcnN0X2FyZ19udW0gPT0gMCkKCWNvbnRpbnVlOwogICAgICBpZiAoZmNp
LT5wb2ludGVyX2NvdW50ID09IDAgJiYgd2FudGVkX3R5cGUgPT0gdm9pZF90eXBlX25vZGUp
CgkvKiBUaGlzIHNwZWNpZmllciB0YWtlcyBubyBhcmd1bWVudC4gICovCgljb250aW51ZTsK
ICAgICAgaWYgKHBhcmFtcyA9PSAwKQoJewoJICB3YXJuaW5nICh0ZmFmZik7CgkgIHJldHVy
bjsKCX0KICAgICAgY3VyX3BhcmFtID0gVFJFRV9WQUxVRSAocGFyYW1zKTsKICAgICAgcGFy
YW1zID0gVFJFRV9DSEFJTiAocGFyYW1zKTsKICAgICAgKythcmdfbnVtOwogICAgICBjdXJf
dHlwZSA9IFRSRUVfVFlQRSAoY3VyX3BhcmFtKTsKCiAgICAgIC8qIENoZWNrIHRoZSB0eXBl
cyBvZiBhbnkgYWRkaXRpb25hbCBwb2ludGVyIGFyZ3VtZW50cwoJIHRoYXQgcHJlY2VkZSB0
aGUgInJlYWwiIGFyZ3VtZW50LiAgKi8KICAgICAgZm9yIChpID0gMDsgaSA8IGZjaS0+cG9p
bnRlcl9jb3VudCArIGFmbGFnOyArK2kpCgl7CgkgIGlmIChUUkVFX0NPREUgKGN1cl90eXBl
KSA9PSBQT0lOVEVSX1RZUEUpCgkgICAgewoJICAgICAgY3VyX3R5cGUgPSBUUkVFX1RZUEUg
KGN1cl90eXBlKTsKCSAgICAgIGNvbnRpbnVlOwoJICAgIH0KCSAgaWYgKFRSRUVfQ09ERSAo
Y3VyX3R5cGUpICE9IEVSUk9SX01BUkspCgkgICAgewoJICAgICAgc3ByaW50ZiAobWVzc2Fn
ZSwKCQkgICAgICAgImZvcm1hdCBhcmd1bWVudCBpcyBub3QgYSAlcyAoYXJnICVkKSIsCgkJ
ICAgICAgICgoZmNpLT5wb2ludGVyX2NvdW50ICsgYWZsYWcgPT0gMSkKCQkJPyAicG9pbnRl
ciIgOiAicG9pbnRlciB0byBhIHBvaW50ZXIiKSwKCQkgICAgICAgYXJnX251bSk7CgkgICAg
ICB3YXJuaW5nIChtZXNzYWdlKTsKCSAgICB9CgkgIGJyZWFrOwoJfQoKICAgICAgLyogQ2hl
Y2sgdGhlIHR5cGUgb2YgdGhlICJyZWFsIiBhcmd1bWVudCwgaWYgdGhlcmUncyBhIHR5cGUg
d2Ugd2FudC4gICovCiAgICAgIGlmIChpID09IGZjaS0+cG9pbnRlcl9jb3VudCArIGFmbGFn
ICYmIHdhbnRlZF90eXBlICE9IDAKCSAgJiYgVFJFRV9DT0RFIChjdXJfdHlwZSkgIT0gRVJS
T1JfTUFSSwoJICAmJiB3YW50ZWRfdHlwZSAhPSBUWVBFX01BSU5fVkFSSUFOVCAoY3VyX3R5
cGUpCgkgIC8qIElmIHdlIHdhbnQgYHZvaWQgKicsIGFsbG93IGFueSBwb2ludGVyIHR5cGUu
CgkgICAgIChBbnl0aGluZyBlbHNlIHdvdWxkIGFscmVhZHkgaGF2ZSBnb3QgYSB3YXJuaW5n
LikgICovCgkgICYmICEgKHdhbnRlZF90eXBlID09IHZvaWRfdHlwZV9ub2RlCgkJJiYgZmNp
LT5wb2ludGVyX2NvdW50ID4gMCkKCSAgLyogRG9uJ3Qgd2FybiBhYm91dCBkaWZmZXJlbmNl
cyBtZXJlbHkgaW4gc2lnbmVkbmVzcy4gICovCgkgICYmICEoVFJFRV9DT0RFICh3YW50ZWRf
dHlwZSkgPT0gSU5URUdFUl9UWVBFCgkgICAgICAgJiYgVFJFRV9DT0RFIChUWVBFX01BSU5f
VkFSSUFOVCAoY3VyX3R5cGUpKSA9PSBJTlRFR0VSX1RZUEUKCSAgICAgICAmJiAoVFJFRV9V
TlNJR05FRCAod2FudGVkX3R5cGUpCgkJICAgPyB3YW50ZWRfdHlwZSA9PSAoY3VyX3R5cGUg
PSB1bnNpZ25lZF90eXBlIChjdXJfdHlwZSkpCgkJICAgOiB3YW50ZWRfdHlwZSA9PSAoY3Vy
X3R5cGUgPSBzaWduZWRfdHlwZSAoY3VyX3R5cGUpKSkpCgkgIC8qIExpa2V3aXNlLCAic2ln
bmVkIGNoYXIiLCAidW5zaWduZWQgY2hhciIgYW5kICJjaGFyIiBhcmUKCSAgICAgZXF1aXZh
bGVudCBidXQgdGhlIGFib3ZlIHRlc3Qgd29uJ3QgY29uc2lkZXIgdGhlbSBlcXVpdmFsZW50
LiAgKi8KCSAgJiYgISAod2FudGVkX3R5cGUgPT0gY2hhcl90eXBlX25vZGUKCQkmJiAoVFlQ
RV9NQUlOX1ZBUklBTlQgKGN1cl90eXBlKSA9PSBzaWduZWRfY2hhcl90eXBlX25vZGUKCQkg
ICAgfHwgVFlQRV9NQUlOX1ZBUklBTlQgKGN1cl90eXBlKSA9PSB1bnNpZ25lZF9jaGFyX3R5
cGVfbm9kZSkpKQoJewoJICByZWdpc3RlciBjaGFyICp0aGlzOwoJICByZWdpc3RlciBjaGFy
ICp0aGF0OwogIAoJICB0aGlzID0gSURFTlRJRklFUl9QT0lOVEVSIChERUNMX05BTUUgKFRZ
UEVfTkFNRSAod2FudGVkX3R5cGUpKSk7CgkgIHRoYXQgPSAwOwoJICBpZiAoVFJFRV9DT0RF
IChjdXJfdHlwZSkgIT0gRVJST1JfTUFSSwoJICAgICAgJiYgVFlQRV9OQU1FIChjdXJfdHlw
ZSkgIT0gMAoJICAgICAgJiYgVFJFRV9DT0RFIChjdXJfdHlwZSkgIT0gSU5URUdFUl9UWVBF
CgkgICAgICAmJiAhKFRSRUVfQ09ERSAoY3VyX3R5cGUpID09IFBPSU5URVJfVFlQRQoJCSAg
ICYmIFRSRUVfQ09ERSAoVFJFRV9UWVBFIChjdXJfdHlwZSkpID09IElOVEVHRVJfVFlQRSkp
CgkgICAgewoJICAgICAgaWYgKFRSRUVfQ09ERSAoVFlQRV9OQU1FIChjdXJfdHlwZSkpID09
IFRZUEVfREVDTAoJCSAgJiYgREVDTF9OQU1FIChUWVBFX05BTUUgKGN1cl90eXBlKSkgIT0g
MCkKCQl0aGF0ID0gSURFTlRJRklFUl9QT0lOVEVSIChERUNMX05BTUUgKFRZUEVfTkFNRSAo
Y3VyX3R5cGUpKSk7CgkgICAgICBlbHNlCgkJdGhhdCA9IElERU5USUZJRVJfUE9JTlRFUiAo
VFlQRV9OQU1FIChjdXJfdHlwZSkpOwoJICAgIH0KCgkgIC8qIEEgbmFtZWxlc3MgdHlwZSBj
YW4ndCBwb3NzaWJseSBtYXRjaCB3aGF0IHRoZSBmb3JtYXQgd2FudHMuCgkgICAgIFNvIHRo
ZXJlIHdpbGwgYmUgYSB3YXJuaW5nIGZvciBpdC4KCSAgICAgTWFrZSB1cCBhIHN0cmluZyB0
byBkZXNjcmliZSB2YWd1ZWx5IHdoYXQgaXQgaXMuICAqLwoJICBpZiAodGhhdCA9PSAwKQoJ
ICAgIHsKCSAgICAgIGlmIChUUkVFX0NPREUgKGN1cl90eXBlKSA9PSBQT0lOVEVSX1RZUEUp
CgkJdGhhdCA9ICJwb2ludGVyIjsKCSAgICAgIGVsc2UKCQl0aGF0ID0gImRpZmZlcmVudCB0
eXBlIjsKCSAgICB9CgoJICAvKiBNYWtlIHRoZSB3YXJuaW5nIGJldHRlciBpbiBjYXNlIG9m
IG1pc21hdGNoIG9mIGludCB2cyBsb25nLiAgKi8KCSAgaWYgKFRSRUVfQ09ERSAoY3VyX3R5
cGUpID09IElOVEVHRVJfVFlQRQoJICAgICAgJiYgVFJFRV9DT0RFICh3YW50ZWRfdHlwZSkg
PT0gSU5URUdFUl9UWVBFCgkgICAgICAmJiBUWVBFX1BSRUNJU0lPTiAoY3VyX3R5cGUpID09
IFRZUEVfUFJFQ0lTSU9OICh3YW50ZWRfdHlwZSkKCSAgICAgICYmIFRZUEVfTkFNRSAoY3Vy
X3R5cGUpICE9IDAKCSAgICAgICYmIFRSRUVfQ09ERSAoVFlQRV9OQU1FIChjdXJfdHlwZSkp
ID09IFRZUEVfREVDTCkKCSAgICB0aGF0ID0gSURFTlRJRklFUl9QT0lOVEVSIChERUNMX05B
TUUgKFRZUEVfTkFNRSAoY3VyX3R5cGUpKSk7CgoJICBpZiAoc3RyY21wICh0aGlzLCB0aGF0
KSAhPSAwKQoJICAgIHsKCSAgICAgIHNwcmludGYgKG1lc3NhZ2UsICIlcyBmb3JtYXQsICVz
IGFyZyAoYXJnICVkKSIsCgkJCXRoaXMsIHRoYXQsIGFyZ19udW0pOwoJICAgICAgd2Fybmlu
ZyAobWVzc2FnZSk7CgkgICAgfQoJfQogICAgfQp9CgwKLyogUHJpbnQgYSB3YXJuaW5nIGlm
IGEgY29uc3RhbnQgZXhwcmVzc2lvbiBoYWQgb3ZlcmZsb3cgaW4gZm9sZGluZy4KICAgSW52
b2tlIHRoaXMgZnVuY3Rpb24gb24gZXZlcnkgZXhwcmVzc2lvbiB0aGF0IHRoZSBsYW5ndWFn
ZQogICByZXF1aXJlcyB0byBiZSBhIGNvbnN0YW50IGV4cHJlc3Npb24uCiAgIE5vdGUgdGhl
IEFOU0kgQyBzdGFuZGFyZCBzYXlzIGl0IGlzIGVycm9uZW91cyBmb3IgYQogICBjb25zdGFu
dCBleHByZXNzaW9uIHRvIG92ZXJmbG93LiAgKi8KCnZvaWQKY29uc3RhbnRfZXhwcmVzc2lv
bl93YXJuaW5nICh2YWx1ZSkKICAgICB0cmVlIHZhbHVlOwp7CiAgaWYgKChUUkVFX0NPREUg
KHZhbHVlKSA9PSBJTlRFR0VSX0NTVCB8fCBUUkVFX0NPREUgKHZhbHVlKSA9PSBSRUFMX0NT
VAogICAgICAgfHwgVFJFRV9DT0RFICh2YWx1ZSkgPT0gQ09NUExFWF9DU1QpCiAgICAgICYm
IFRSRUVfQ09OU1RBTlRfT1ZFUkZMT1cgKHZhbHVlKSAmJiBwZWRhbnRpYykKICAgIHBlZHdh
cm4gKCJvdmVyZmxvdyBpbiBjb25zdGFudCBleHByZXNzaW9uIik7Cn0KCi8qIFByaW50IGEg
d2FybmluZyBpZiBhbiBleHByZXNzaW9uIGhhZCBvdmVyZmxvdyBpbiBmb2xkaW5nLgogICBJ
bnZva2UgdGhpcyBmdW5jdGlvbiBvbiBldmVyeSBleHByZXNzaW9uIHRoYXQKICAgKDEpIGFw
cGVhcnMgaW4gdGhlIHNvdXJjZSBjb2RlLCBhbmQKICAgKDIpIG1pZ2h0IGJlIGEgY29uc3Rh
bnQgZXhwcmVzc2lvbiB0aGF0IG92ZXJmbG93ZWQsIGFuZAogICAoMykgaXMgbm90IGFscmVh
ZHkgY2hlY2tlZCBieSBjb252ZXJ0X2FuZF9jaGVjazsKICAgaG93ZXZlciwgZG8gbm90IGlu
dm9rZSB0aGlzIGZ1bmN0aW9uIG9uIG9wZXJhbmRzIG9mIGV4cGxpY2l0IGNhc3RzLiAgKi8K
CnZvaWQKb3ZlcmZsb3dfd2FybmluZyAodmFsdWUpCiAgICAgdHJlZSB2YWx1ZTsKewogIGlm
ICgoVFJFRV9DT0RFICh2YWx1ZSkgPT0gSU5URUdFUl9DU1QKICAgICAgIHx8IChUUkVFX0NP
REUgKHZhbHVlKSA9PSBDT01QTEVYX0NTVAoJICAgJiYgVFJFRV9DT0RFIChUUkVFX1JFQUxQ
QVJUICh2YWx1ZSkpID09IElOVEVHRVJfQ1NUKSkKICAgICAgJiYgVFJFRV9PVkVSRkxPVyAo
dmFsdWUpKQogICAgewogICAgICBUUkVFX09WRVJGTE9XICh2YWx1ZSkgPSAwOwogICAgICBp
ZiAoc2tpcF9ldmFsdWF0aW9uID09IDApCgl3YXJuaW5nICgiaW50ZWdlciBvdmVyZmxvdyBp
biBleHByZXNzaW9uIik7CiAgICB9CiAgZWxzZSBpZiAoKFRSRUVfQ09ERSAodmFsdWUpID09
IFJFQUxfQ1NUCgkgICAgfHwgKFRSRUVfQ09ERSAodmFsdWUpID09IENPTVBMRVhfQ1NUCgkJ
JiYgVFJFRV9DT0RFIChUUkVFX1JFQUxQQVJUICh2YWx1ZSkpID09IFJFQUxfQ1NUKSkKCSAg
ICYmIFRSRUVfT1ZFUkZMT1cgKHZhbHVlKSkKICAgIHsKICAgICAgVFJFRV9PVkVSRkxPVyAo
dmFsdWUpID0gMDsKICAgICAgaWYgKHNraXBfZXZhbHVhdGlvbiA9PSAwKQoJd2FybmluZyAo
ImZsb2F0aW5nIHBvaW50IG92ZXJmbG93IGluIGV4cHJlc3Npb24iKTsKICAgIH0KfQoKLyog
UHJpbnQgYSB3YXJuaW5nIGlmIGEgbGFyZ2UgY29uc3RhbnQgaXMgdHJ1bmNhdGVkIHRvIHVu
c2lnbmVkLAogICBvciBpZiAtV2NvbnZlcnNpb24gaXMgdXNlZCBhbmQgYSBjb25zdGFudCA8
IDAgaXMgY29udmVydGVkIHRvIHVuc2lnbmVkLgogICBJbnZva2UgdGhpcyBmdW5jdGlvbiBv
biBldmVyeSBleHByZXNzaW9uIHRoYXQgbWlnaHQgYmUgaW1wbGljaXRseQogICBjb252ZXJ0
ZWQgdG8gYW4gdW5zaWduZWQgdHlwZS4gICovCgp2b2lkCnVuc2lnbmVkX2NvbnZlcnNpb25f
d2FybmluZyAocmVzdWx0LCBvcGVyYW5kKQogICAgIHRyZWUgcmVzdWx0LCBvcGVyYW5kOwp7
CiAgaWYgKFRSRUVfQ09ERSAob3BlcmFuZCkgPT0gSU5URUdFUl9DU1QKICAgICAgJiYgVFJF
RV9DT0RFIChUUkVFX1RZUEUgKHJlc3VsdCkpID09IElOVEVHRVJfVFlQRQogICAgICAmJiBU
UkVFX1VOU0lHTkVEIChUUkVFX1RZUEUgKHJlc3VsdCkpCiAgICAgICYmIHNraXBfZXZhbHVh
dGlvbiA9PSAwCiAgICAgICYmICFpbnRfZml0c190eXBlX3AgKG9wZXJhbmQsIFRSRUVfVFlQ
RSAocmVzdWx0KSkpCiAgICB7CiAgICAgIGlmICghaW50X2ZpdHNfdHlwZV9wIChvcGVyYW5k
LCBzaWduZWRfdHlwZSAoVFJFRV9UWVBFIChyZXN1bHQpKSkpCgkvKiBUaGlzIGRldGVjdHMg
Y2FzZXMgbGlrZSBjb252ZXJ0aW5nIC0xMjkgb3IgMjU2IHRvIHVuc2lnbmVkIGNoYXIuICAq
LwoJd2FybmluZyAoImxhcmdlIGludGVnZXIgaW1wbGljaXRseSB0cnVuY2F0ZWQgdG8gdW5z
aWduZWQgdHlwZSIpOwogICAgICBlbHNlIGlmICh3YXJuX2NvbnZlcnNpb24pCgl3YXJuaW5n
ICgibmVnYXRpdmUgaW50ZWdlciBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byB1bnNpZ25lZCB0
eXBlIik7CiAgICB9Cn0KCi8qIENvbnZlcnQgRVhQUiB0byBUWVBFLCB3YXJuaW5nIGFib3V0
IGNvbnZlcnNpb24gcHJvYmxlbXMgd2l0aCBjb25zdGFudHMuCiAgIEludm9rZSB0aGlzIGZ1
bmN0aW9uIG9uIGV2ZXJ5IGV4cHJlc3Npb24gdGhhdCBpcyBjb252ZXJ0ZWQgaW1wbGljaXRs
eSwKICAgaS5lLiBiZWNhdXNlIG9mIGxhbmd1YWdlIHJ1bGVzIGFuZCBub3QgYmVjYXVzZSBv
ZiBhbiBleHBsaWNpdCBjYXN0LiAgKi8KCnRyZWUKY29udmVydF9hbmRfY2hlY2sgKHR5cGUs
IGV4cHIpCiAgICAgdHJlZSB0eXBlLCBleHByOwp7CiAgdHJlZSB0ID0gY29udmVydCAodHlw
ZSwgZXhwcik7CiAgaWYgKFRSRUVfQ09ERSAodCkgPT0gSU5URUdFUl9DU1QpCiAgICB7CiAg
ICAgIGlmIChUUkVFX09WRVJGTE9XICh0KSkKCXsKCSAgVFJFRV9PVkVSRkxPVyAodCkgPSAw
OwoKCSAgLyogRG8gbm90IGRpYWdub3NlIG92ZXJmbG93IGluIGEgY29uc3RhbnQgZXhwcmVz
c2lvbiBtZXJlbHkKCSAgICAgYmVjYXVzZSBhIGNvbnZlcnNpb24gb3ZlcmZsb3dlZC4gICov
CgkgIFRSRUVfQ09OU1RBTlRfT1ZFUkZMT1cgKHQpID0gVFJFRV9DT05TVEFOVF9PVkVSRkxP
VyAoZXhwcik7CgoJICAvKiBObyB3YXJuaW5nIGZvciBjb252ZXJ0aW5nIDB4ODAwMDAwMDAg
dG8gaW50LiAgKi8KCSAgaWYgKCEoVFJFRV9VTlNJR05FRCAodHlwZSkgPCBUUkVFX1VOU0lH
TkVEIChUUkVFX1RZUEUgKGV4cHIpKQoJCSYmIFRSRUVfQ09ERSAoVFJFRV9UWVBFIChleHBy
KSkgPT0gSU5URUdFUl9UWVBFCgkJJiYgVFlQRV9QUkVDSVNJT04gKHR5cGUpID09IFRZUEVf
UFJFQ0lTSU9OIChUUkVFX1RZUEUgKGV4cHIpKSkpCgkgICAgLyogSWYgRVhQUiBmaXRzIGlu
IHRoZSB1bnNpZ25lZCB2ZXJzaW9uIG9mIFRZUEUsCgkgICAgICAgZG9uJ3Qgd2FybiB1bmxl
c3MgcGVkYW50aWMuICAqLwoJICAgIGlmICgocGVkYW50aWMKCQkgfHwgVFJFRV9VTlNJR05F
RCAodHlwZSkKCQkgfHwgISBpbnRfZml0c190eXBlX3AgKGV4cHIsIHVuc2lnbmVkX3R5cGUg
KHR5cGUpKSkKCSAgICAgICAgJiYgc2tpcF9ldmFsdWF0aW9uID09IDApCgkJd2FybmluZyAo
Im92ZXJmbG93IGluIGltcGxpY2l0IGNvbnN0YW50IGNvbnZlcnNpb24iKTsKCX0KICAgICAg
ZWxzZQoJdW5zaWduZWRfY29udmVyc2lvbl93YXJuaW5nICh0LCBleHByKTsKICAgIH0KICBy
ZXR1cm4gdDsKfQoMCnZvaWQKY19leHBhbmRfZXhwcl9zdG10IChleHByKQogICAgIHRyZWUg
ZXhwcjsKewogIC8qIERvIGRlZmF1bHQgY29udmVyc2lvbiBpZiBzYWZlIGFuZCBwb3NzaWJs
eSBpbXBvcnRhbnQsCiAgICAgaW4gY2FzZSB3aXRoaW4gKHsuLi59KS4gICovCiAgaWYgKChU
UkVFX0NPREUgKFRSRUVfVFlQRSAoZXhwcikpID09IEFSUkFZX1RZUEUgJiYgbHZhbHVlX3Ag
KGV4cHIpKQogICAgICB8fCBUUkVFX0NPREUgKFRSRUVfVFlQRSAoZXhwcikpID09IEZVTkNU
SU9OX1RZUEUpCiAgICBleHByID0gZGVmYXVsdF9jb252ZXJzaW9uIChleHByKTsKCiAgaWYg
KFRSRUVfVFlQRSAoZXhwcikgIT0gZXJyb3JfbWFya19ub2RlCiAgICAgICYmIFRZUEVfU0la
RSAoVFJFRV9UWVBFIChleHByKSkgPT0gMAogICAgICAmJiBUUkVFX0NPREUgKFRSRUVfVFlQ
RSAoZXhwcikpICE9IEFSUkFZX1RZUEUpCiAgICBlcnJvciAoImV4cHJlc3Npb24gc3RhdGVt
ZW50IGhhcyBpbmNvbXBsZXRlIHR5cGUiKTsKCiAgZXhwYW5kX2V4cHJfc3RtdCAoZXhwcik7
Cn0KDAovKiBWYWxpZGF0ZSB0aGUgZXhwcmVzc2lvbiBhZnRlciBgY2FzZScgYW5kIGFwcGx5
IGRlZmF1bHQgcHJvbW90aW9ucy4gICovCgp0cmVlCmNoZWNrX2Nhc2VfdmFsdWUgKHZhbHVl
KQogICAgIHRyZWUgdmFsdWU7CnsKICBpZiAodmFsdWUgPT0gTlVMTF9UUkVFKQogICAgcmV0
dXJuIHZhbHVlOwoKICAvKiBTdHJpcCBOT05fTFZBTFVFX0VYUFJzIHNpbmNlIHdlIGFyZW4n
dCB1c2luZyBhcyBhbiBsdmFsdWUuICAqLwogIFNUUklQX1RZUEVfTk9QUyAodmFsdWUpOwoK
ICBpZiAoVFJFRV9DT0RFICh2YWx1ZSkgIT0gSU5URUdFUl9DU1QKICAgICAgJiYgdmFsdWUg
IT0gZXJyb3JfbWFya19ub2RlKQogICAgewogICAgICBlcnJvciAoImNhc2UgbGFiZWwgZG9l
cyBub3QgcmVkdWNlIHRvIGFuIGludGVnZXIgY29uc3RhbnQiKTsKICAgICAgdmFsdWUgPSBl
cnJvcl9tYXJrX25vZGU7CiAgICB9CiAgZWxzZQogICAgLyogUHJvbW90ZSBjaGFyIG9yIHNo
b3J0IHRvIGludC4gICovCiAgICB2YWx1ZSA9IGRlZmF1bHRfY29udmVyc2lvbiAodmFsdWUp
OwoKICBjb25zdGFudF9leHByZXNzaW9uX3dhcm5pbmcgKHZhbHVlKTsKCiAgcmV0dXJuIHZh
bHVlOwp9CgwKLyogUmV0dXJuIGFuIGludGVnZXIgdHlwZSB3aXRoIEJJVFMgYml0cyBvZiBw
cmVjaXNpb24sCiAgIHRoYXQgaXMgdW5zaWduZWQgaWYgVU5TSUdORURQIGlzIG5vbnplcm8s
IG90aGVyd2lzZSBzaWduZWQuICAqLwoKdHJlZQp0eXBlX2Zvcl9zaXplIChiaXRzLCB1bnNp
Z25lZHApCiAgICAgdW5zaWduZWQgYml0czsKICAgICBpbnQgdW5zaWduZWRwOwp7CiAgaWYg
KGJpdHMgPT0gVFlQRV9QUkVDSVNJT04gKGludGVnZXJfdHlwZV9ub2RlKSkKICAgIHJldHVy
biB1bnNpZ25lZHAgPyB1bnNpZ25lZF90eXBlX25vZGUgOiBpbnRlZ2VyX3R5cGVfbm9kZTsK
CiAgaWYgKGJpdHMgPT0gVFlQRV9QUkVDSVNJT04gKHNpZ25lZF9jaGFyX3R5cGVfbm9kZSkp
CiAgICByZXR1cm4gdW5zaWduZWRwID8gdW5zaWduZWRfY2hhcl90eXBlX25vZGUgOiBzaWdu
ZWRfY2hhcl90eXBlX25vZGU7CgogIGlmIChiaXRzID09IFRZUEVfUFJFQ0lTSU9OIChzaG9y
dF9pbnRlZ2VyX3R5cGVfbm9kZSkpCiAgICByZXR1cm4gdW5zaWduZWRwID8gc2hvcnRfdW5z
aWduZWRfdHlwZV9ub2RlIDogc2hvcnRfaW50ZWdlcl90eXBlX25vZGU7CgogIGlmIChiaXRz
ID09IFRZUEVfUFJFQ0lTSU9OIChsb25nX2ludGVnZXJfdHlwZV9ub2RlKSkKICAgIHJldHVy
biB1bnNpZ25lZHAgPyBsb25nX3Vuc2lnbmVkX3R5cGVfbm9kZSA6IGxvbmdfaW50ZWdlcl90
eXBlX25vZGU7CgogIGlmIChiaXRzID09IFRZUEVfUFJFQ0lTSU9OIChsb25nX2xvbmdfaW50
ZWdlcl90eXBlX25vZGUpKQogICAgcmV0dXJuICh1bnNpZ25lZHAgPyBsb25nX2xvbmdfdW5z
aWduZWRfdHlwZV9ub2RlCgkgICAgOiBsb25nX2xvbmdfaW50ZWdlcl90eXBlX25vZGUpOwoK
ICBpZiAoYml0cyA8PSBUWVBFX1BSRUNJU0lPTiAoaW50UUlfdHlwZV9ub2RlKSkKICAgIHJl
dHVybiB1bnNpZ25lZHAgPyB1bnNpZ25lZF9pbnRRSV90eXBlX25vZGUgOiBpbnRRSV90eXBl
X25vZGU7CgogIGlmIChiaXRzIDw9IFRZUEVfUFJFQ0lTSU9OIChpbnRISV90eXBlX25vZGUp
KQogICAgcmV0dXJuIHVuc2lnbmVkcCA/IHVuc2lnbmVkX2ludEhJX3R5cGVfbm9kZSA6IGlu
dEhJX3R5cGVfbm9kZTsKCiAgaWYgKGJpdHMgPD0gVFlQRV9QUkVDSVNJT04gKGludFNJX3R5
cGVfbm9kZSkpCiAgICByZXR1cm4gdW5zaWduZWRwID8gdW5zaWduZWRfaW50U0lfdHlwZV9u
b2RlIDogaW50U0lfdHlwZV9ub2RlOwoKICBpZiAoYml0cyA8PSBUWVBFX1BSRUNJU0lPTiAo
aW50RElfdHlwZV9ub2RlKSkKICAgIHJldHVybiB1bnNpZ25lZHAgPyB1bnNpZ25lZF9pbnRE
SV90eXBlX25vZGUgOiBpbnRESV90eXBlX25vZGU7CgogIHJldHVybiAwOwp9CgovKiBSZXR1
cm4gYSBkYXRhIHR5cGUgdGhhdCBoYXMgbWFjaGluZSBtb2RlIE1PREUuCiAgIElmIHRoZSBt
b2RlIGlzIGFuIGludGVnZXIsCiAgIHRoZW4gVU5TSUdORURQIHNlbGVjdHMgYmV0d2VlbiBz
aWduZWQgYW5kIHVuc2lnbmVkIHR5cGVzLiAgKi8KCnRyZWUKdHlwZV9mb3JfbW9kZSAobW9k
ZSwgdW5zaWduZWRwKQogICAgIGVudW0gbWFjaGluZV9tb2RlIG1vZGU7CiAgICAgaW50IHVu
c2lnbmVkcDsKewogIGlmIChtb2RlID09IFRZUEVfTU9ERSAoaW50ZWdlcl90eXBlX25vZGUp
KQogICAgcmV0dXJuIHVuc2lnbmVkcCA/IHVuc2lnbmVkX3R5cGVfbm9kZSA6IGludGVnZXJf
dHlwZV9ub2RlOwoKICBpZiAobW9kZSA9PSBUWVBFX01PREUgKHNpZ25lZF9jaGFyX3R5cGVf
bm9kZSkpCiAgICByZXR1cm4gdW5zaWduZWRwID8gdW5zaWduZWRfY2hhcl90eXBlX25vZGUg
OiBzaWduZWRfY2hhcl90eXBlX25vZGU7CgogIGlmIChtb2RlID09IFRZUEVfTU9ERSAoc2hv
cnRfaW50ZWdlcl90eXBlX25vZGUpKQogICAgcmV0dXJuIHVuc2lnbmVkcCA/IHNob3J0X3Vu
c2lnbmVkX3R5cGVfbm9kZSA6IHNob3J0X2ludGVnZXJfdHlwZV9ub2RlOwoKICBpZiAobW9k
ZSA9PSBUWVBFX01PREUgKGxvbmdfaW50ZWdlcl90eXBlX25vZGUpKQogICAgcmV0dXJuIHVu
c2lnbmVkcCA/IGxvbmdfdW5zaWduZWRfdHlwZV9ub2RlIDogbG9uZ19pbnRlZ2VyX3R5cGVf
bm9kZTsKCiAgaWYgKG1vZGUgPT0gVFlQRV9NT0RFIChsb25nX2xvbmdfaW50ZWdlcl90eXBl
X25vZGUpKQogICAgcmV0dXJuIHVuc2lnbmVkcCA/IGxvbmdfbG9uZ191bnNpZ25lZF90eXBl
X25vZGUgOiBsb25nX2xvbmdfaW50ZWdlcl90eXBlX25vZGU7CgogIGlmIChtb2RlID09IFRZ
UEVfTU9ERSAoaW50UUlfdHlwZV9ub2RlKSkKICAgIHJldHVybiB1bnNpZ25lZHAgPyB1bnNp
Z25lZF9pbnRRSV90eXBlX25vZGUgOiBpbnRRSV90eXBlX25vZGU7CgogIGlmIChtb2RlID09
IFRZUEVfTU9ERSAoaW50SElfdHlwZV9ub2RlKSkKICAgIHJldHVybiB1bnNpZ25lZHAgPyB1
bnNpZ25lZF9pbnRISV90eXBlX25vZGUgOiBpbnRISV90eXBlX25vZGU7CgogIGlmIChtb2Rl
ID09IFRZUEVfTU9ERSAoaW50U0lfdHlwZV9ub2RlKSkKICAgIHJldHVybiB1bnNpZ25lZHAg
PyB1bnNpZ25lZF9pbnRTSV90eXBlX25vZGUgOiBpbnRTSV90eXBlX25vZGU7CgogIGlmICht
b2RlID09IFRZUEVfTU9ERSAoaW50RElfdHlwZV9ub2RlKSkKICAgIHJldHVybiB1bnNpZ25l
ZHAgPyB1bnNpZ25lZF9pbnRESV90eXBlX25vZGUgOiBpbnRESV90eXBlX25vZGU7CgogIGlm
IChtb2RlID09IFRZUEVfTU9ERSAoZmxvYXRfdHlwZV9ub2RlKSkKICAgIHJldHVybiBmbG9h
dF90eXBlX25vZGU7CgogIGlmIChtb2RlID09IFRZUEVfTU9ERSAoZG91YmxlX3R5cGVfbm9k
ZSkpCiAgICByZXR1cm4gZG91YmxlX3R5cGVfbm9kZTsKCiAgaWYgKG1vZGUgPT0gVFlQRV9N
T0RFIChsb25nX2RvdWJsZV90eXBlX25vZGUpKQogICAgcmV0dXJuIGxvbmdfZG91YmxlX3R5
cGVfbm9kZTsKCiAgaWYgKG1vZGUgPT0gVFlQRV9NT0RFIChidWlsZF9wb2ludGVyX3R5cGUg
KGNoYXJfdHlwZV9ub2RlKSkpCiAgICByZXR1cm4gYnVpbGRfcG9pbnRlcl90eXBlIChjaGFy
X3R5cGVfbm9kZSk7CgogIGlmIChtb2RlID09IFRZUEVfTU9ERSAoYnVpbGRfcG9pbnRlcl90
eXBlIChpbnRlZ2VyX3R5cGVfbm9kZSkpKQogICAgcmV0dXJuIGJ1aWxkX3BvaW50ZXJfdHlw
ZSAoaW50ZWdlcl90eXBlX25vZGUpOwoKICByZXR1cm4gMDsKfQoMCi8qIFJldHVybiB0aGUg
bWluaW11bSBudW1iZXIgb2YgYml0cyBuZWVkZWQgdG8gcmVwcmVzZW50IFZBTFVFIGluIGEK
ICAgc2lnbmVkIG9yIHVuc2lnbmVkIHR5cGUsIFVOU0lHTkVEUCBzYXlzIHdoaWNoLiAgKi8K
CmludAptaW5fcHJlY2lzaW9uICh2YWx1ZSwgdW5zaWduZWRwKQogICAgIHRyZWUgdmFsdWU7
CiAgICAgaW50IHVuc2lnbmVkcDsKewogIGludCBsb2c7CgogIC8qIElmIHRoZSB2YWx1ZSBp
cyBuZWdhdGl2ZSwgY29tcHV0ZSBpdHMgbmVnYXRpdmUgbWludXMgMS4gIFRoZSBsYXR0ZXIK
ICAgICBhZGp1c3RtZW50IGlzIGJlY2F1c2UgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBs
YXJnZXN0IG5lZ2F0aXZlIHZhbHVlCiAgICAgaXMgb25lIGxhcmdlciB0aGFuIHRoZSBsYXJn
ZXN0IHBvc2l0aXZlIHZhbHVlLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvCiAgICAgYSBiaXQt
d2lzZSBuZWdhdGlvbiwgc28gdXNlIHRoYXQgb3BlcmF0aW9uIGluc3RlYWQuICAqLwoKICBp
ZiAodHJlZV9pbnRfY3N0X3NnbiAodmFsdWUpIDwgMCkKICAgIHZhbHVlID0gZm9sZCAoYnVp
bGQxIChCSVRfTk9UX0VYUFIsIFRSRUVfVFlQRSAodmFsdWUpLCB2YWx1ZSkpOwoKICAvKiBS
ZXR1cm4gdGhlIG51bWJlciBvZiBiaXRzIG5lZWRlZCwgdGFraW5nIGludG8gYWNjb3VudCB0
aGUgZmFjdAogICAgIHRoYXQgd2UgbmVlZCBvbmUgbW9yZSBiaXQgZm9yIGEgc2lnbmVkIHRo
YW4gdW5zaWduZWQgdHlwZS4gICovCgogIGlmIChpbnRlZ2VyX3plcm9wICh2YWx1ZSkpCiAg
ICBsb2cgPSAwOwogIGVsc2UgaWYgKFRSRUVfSU5UX0NTVF9ISUdIICh2YWx1ZSkgIT0gMCkK
ICAgIGxvZyA9IEhPU1RfQklUU19QRVJfV0lERV9JTlQgKyBmbG9vcl9sb2cyIChUUkVFX0lO
VF9DU1RfSElHSCAodmFsdWUpKTsKICBlbHNlCiAgICBsb2cgPSBmbG9vcl9sb2cyIChUUkVF
X0lOVF9DU1RfTE9XICh2YWx1ZSkpOwoKICByZXR1cm4gbG9nICsgMSArICEgdW5zaWduZWRw
Owp9CgwKLyogUHJpbnQgYW4gZXJyb3IgbWVzc2FnZSBmb3IgaW52YWxpZCBvcGVyYW5kcyB0
byBhcml0aCBvcGVyYXRpb24gQ09ERS4KICAgTk9QX0VYUFIgaXMgdXNlZCBhcyBhIHNwZWNp
YWwgY2FzZSAoc2VlIHRydXRodmFsdWVfY29udmVyc2lvbikuICAqLwoKdm9pZApiaW5hcnlf
b3BfZXJyb3IgKGNvZGUpCiAgICAgZW51bSB0cmVlX2NvZGUgY29kZTsKewogIHJlZ2lzdGVy
IGNoYXIgKm9wbmFtZSA9ICJ1bmtub3duIjsKCiAgc3dpdGNoIChjb2RlKQogICAgewogICAg
Y2FzZSBOT1BfRVhQUjoKICAgICAgZXJyb3IgKCJpbnZhbGlkIHRydXRoLXZhbHVlIGV4cHJl
c3Npb24iKTsKICAgICAgcmV0dXJuOwoKICAgIGNhc2UgUExVU19FWFBSOgogICAgICBvcG5h
bWUgPSAiKyI7IGJyZWFrOwogICAgY2FzZSBNSU5VU19FWFBSOgogICAgICBvcG5hbWUgPSAi
LSI7IGJyZWFrOwogICAgY2FzZSBNVUxUX0VYUFI6CiAgICAgIG9wbmFtZSA9ICIqIjsgYnJl
YWs7CiAgICBjYXNlIE1BWF9FWFBSOgogICAgICBvcG5hbWUgPSAibWF4IjsgYnJlYWs7CiAg
ICBjYXNlIE1JTl9FWFBSOgogICAgICBvcG5hbWUgPSAibWluIjsgYnJlYWs7CiAgICBjYXNl
IEVRX0VYUFI6CiAgICAgIG9wbmFtZSA9ICI9PSI7IGJyZWFrOwogICAgY2FzZSBORV9FWFBS
OgogICAgICBvcG5hbWUgPSAiIT0iOyBicmVhazsKICAgIGNhc2UgTEVfRVhQUjoKICAgICAg
b3BuYW1lID0gIjw9IjsgYnJlYWs7CiAgICBjYXNlIEdFX0VYUFI6CiAgICAgIG9wbmFtZSA9
ICI+PSI7IGJyZWFrOwogICAgY2FzZSBMVF9FWFBSOgogICAgICBvcG5hbWUgPSAiPCI7IGJy
ZWFrOwogICAgY2FzZSBHVF9FWFBSOgogICAgICBvcG5hbWUgPSAiPiI7IGJyZWFrOwogICAg
Y2FzZSBMU0hJRlRfRVhQUjoKICAgICAgb3BuYW1lID0gIjw8IjsgYnJlYWs7CiAgICBjYXNl
IFJTSElGVF9FWFBSOgogICAgICBvcG5hbWUgPSAiPj4iOyBicmVhazsKICAgIGNhc2UgVFJV
TkNfTU9EX0VYUFI6CiAgICBjYXNlIEZMT09SX01PRF9FWFBSOgogICAgICBvcG5hbWUgPSAi
JSI7IGJyZWFrOwogICAgY2FzZSBUUlVOQ19ESVZfRVhQUjoKICAgIGNhc2UgRkxPT1JfRElW
X0VYUFI6CiAgICAgIG9wbmFtZSA9ICIvIjsgYnJlYWs7CiAgICBjYXNlIEJJVF9BTkRfRVhQ
UjoKICAgICAgb3BuYW1lID0gIiYiOyBicmVhazsKICAgIGNhc2UgQklUX0lPUl9FWFBSOgog
ICAgICBvcG5hbWUgPSAifCI7IGJyZWFrOwogICAgY2FzZSBUUlVUSF9BTkRJRl9FWFBSOgog
ICAgICBvcG5hbWUgPSAiJiYiOyBicmVhazsKICAgIGNhc2UgVFJVVEhfT1JJRl9FWFBSOgog
ICAgICBvcG5hbWUgPSAifHwiOyBicmVhazsKICAgIGNhc2UgQklUX1hPUl9FWFBSOgogICAg
ICBvcG5hbWUgPSAiXiI7IGJyZWFrOwogICAgY2FzZSBMUk9UQVRFX0VYUFI6CiAgICBjYXNl
IFJST1RBVEVfRVhQUjoKICAgICAgb3BuYW1lID0gInJvdGF0ZSI7IGJyZWFrOwogICAgfQog
IGVycm9yICgiaW52YWxpZCBvcGVyYW5kcyB0byBiaW5hcnkgJXMiLCBvcG5hbWUpOwp9CgwK
LyogU3Vicm91dGluZSBvZiBidWlsZF9iaW5hcnlfb3AsIHVzZWQgZm9yIGNvbXBhcmlzb24g
b3BlcmF0aW9ucy4KICAgU2VlIGlmIHRoZSBvcGVyYW5kcyBoYXZlIGJvdGggYmVlbiBjb252
ZXJ0ZWQgZnJvbSBzdWJ3b3JkIGludGVnZXIgdHlwZXMKICAgYW5kLCBpZiBzbywgcGVyaGFw
cyBjaGFuZ2UgdGhlbSBib3RoIGJhY2sgdG8gdGhlaXIgb3JpZ2luYWwgdHlwZS4KICAgVGhp
cyBmdW5jdGlvbiBpcyBhbHNvIHJlc3BvbnNpYmxlIGZvciBjb252ZXJ0aW5nIHRoZSB0d28g
b3BlcmFuZHMKICAgdG8gdGhlIHByb3BlciBjb21tb24gdHlwZSBmb3IgY29tcGFyaXNvbi4K
CiAgIFRoZSBhcmd1bWVudHMgb2YgdGhpcyBmdW5jdGlvbiBhcmUgYWxsIHBvaW50ZXJzIHRv
IGxvY2FsIHZhcmlhYmxlcwogICBvZiBidWlsZF9iaW5hcnlfb3A6IE9QMF9QVFIgaXMgJk9Q
MCwgT1AxX1BUUiBpcyAmT1AxLAogICBSRVNUWVBFX1BUUiBpcyAmUkVTVUxUX1RZUEUgYW5k
IFJFU0NPREVfUFRSIGlzICZSRVNVTFRDT0RFLgoKICAgSWYgdGhpcyBmdW5jdGlvbiByZXR1
cm5zIG5vbnplcm8sIGl0IG1lYW5zIHRoYXQgdGhlIGNvbXBhcmlzb24gaGFzCiAgIGEgY29u
c3RhbnQgdmFsdWUuICBXaGF0IHRoaXMgZnVuY3Rpb24gcmV0dXJucyBpcyBhbiBleHByZXNz
aW9uIGZvcgogICB0aGF0IHZhbHVlLiAgKi8KCnRyZWUKc2hvcnRlbl9jb21wYXJlIChvcDBf
cHRyLCBvcDFfcHRyLCByZXN0eXBlX3B0ciwgcmVzY29kZV9wdHIpCiAgICAgdHJlZSAqb3Aw
X3B0ciwgKm9wMV9wdHI7CiAgICAgdHJlZSAqcmVzdHlwZV9wdHI7CiAgICAgZW51bSB0cmVl
X2NvZGUgKnJlc2NvZGVfcHRyOwp7CiAgcmVnaXN0ZXIgdHJlZSB0eXBlOwogIHRyZWUgb3Aw
ID0gKm9wMF9wdHI7CiAgdHJlZSBvcDEgPSAqb3AxX3B0cjsKICBpbnQgdW5zaWduZWRwMCwg
dW5zaWduZWRwMTsKICBpbnQgcmVhbDEsIHJlYWwyOwogIHRyZWUgcHJpbW9wMCwgcHJpbW9w
MTsKICBlbnVtIHRyZWVfY29kZSBjb2RlID0gKnJlc2NvZGVfcHRyOwoKICAvKiBUaHJvdyBh
d2F5IGFueSBjb252ZXJzaW9ucyB0byB3aWRlciB0eXBlcwogICAgIGFscmVhZHkgcHJlc2Vu
dCBpbiB0aGUgb3BlcmFuZHMuICAqLwoKICBwcmltb3AwID0gZ2V0X25hcnJvd2VyIChvcDAs
ICZ1bnNpZ25lZHAwKTsKICBwcmltb3AxID0gZ2V0X25hcnJvd2VyIChvcDEsICZ1bnNpZ25l
ZHAxKTsKCiAgLyogSGFuZGxlIHRoZSBjYXNlIHRoYXQgT1AwIGRvZXMgbm90ICpjb250YWlu
KiBhIGNvbnZlcnNpb24KICAgICBidXQgaXQgKnJlcXVpcmVzKiBjb252ZXJzaW9uIHRvIEZJ
TkFMX1RZUEUuICAqLwoKICBpZiAob3AwID09IHByaW1vcDAgJiYgVFJFRV9UWVBFIChvcDAp
ICE9ICpyZXN0eXBlX3B0cikKICAgIHVuc2lnbmVkcDAgPSBUUkVFX1VOU0lHTkVEIChUUkVF
X1RZUEUgKG9wMCkpOwogIGlmIChvcDEgPT0gcHJpbW9wMSAmJiBUUkVFX1RZUEUgKG9wMSkg
IT0gKnJlc3R5cGVfcHRyKQogICAgdW5zaWduZWRwMSA9IFRSRUVfVU5TSUdORUQgKFRSRUVf
VFlQRSAob3AxKSk7CgogIC8qIElmIG9uZSBvZiB0aGUgb3BlcmFuZHMgbXVzdCBiZSBmbG9h
dGVkLCB3ZSBjYW5ub3Qgb3B0aW1pemUuICAqLwogIHJlYWwxID0gVFJFRV9DT0RFIChUUkVF
X1RZUEUgKHByaW1vcDApKSA9PSBSRUFMX1RZUEU7CiAgcmVhbDIgPSBUUkVFX0NPREUgKFRS
RUVfVFlQRSAocHJpbW9wMSkpID09IFJFQUxfVFlQRTsKCiAgLyogSWYgZmlyc3QgYXJnIGlz
IGNvbnN0YW50LCBzd2FwIHRoZSBhcmdzIChjaGFuZ2luZyBvcGVyYXRpb24KICAgICBzbyB2
YWx1ZSBpcyBwcmVzZXJ2ZWQpLCBmb3IgY2Fub25pY2FsaXphdGlvbi4gIERvbid0IGRvIHRo
aXMgaWYKICAgICB0aGUgc2Vjb25kIGFyZyBpcyAwLiAgKi8KCiAgaWYgKFRSRUVfQ09OU1RB
TlQgKHByaW1vcDApCiAgICAgICYmICEgaW50ZWdlcl96ZXJvcCAocHJpbW9wMSkgJiYgISBy
ZWFsX3plcm9wIChwcmltb3AxKSkKICAgIHsKICAgICAgcmVnaXN0ZXIgdHJlZSB0ZW0gPSBw
cmltb3AwOwogICAgICByZWdpc3RlciBpbnQgdGVtaSA9IHVuc2lnbmVkcDA7CiAgICAgIHBy
aW1vcDAgPSBwcmltb3AxOwogICAgICBwcmltb3AxID0gdGVtOwogICAgICB0ZW0gPSBvcDA7
CiAgICAgIG9wMCA9IG9wMTsKICAgICAgb3AxID0gdGVtOwogICAgICAqb3AwX3B0ciA9IG9w
MDsKICAgICAgKm9wMV9wdHIgPSBvcDE7CiAgICAgIHVuc2lnbmVkcDAgPSB1bnNpZ25lZHAx
OwogICAgICB1bnNpZ25lZHAxID0gdGVtaTsKICAgICAgdGVtaSA9IHJlYWwxOwogICAgICBy
ZWFsMSA9IHJlYWwyOwogICAgICByZWFsMiA9IHRlbWk7CgogICAgICBzd2l0Y2ggKGNvZGUp
Cgl7CgljYXNlIExUX0VYUFI6CgkgIGNvZGUgPSBHVF9FWFBSOwoJICBicmVhazsKCWNhc2Ug
R1RfRVhQUjoKCSAgY29kZSA9IExUX0VYUFI7CgkgIGJyZWFrOwoJY2FzZSBMRV9FWFBSOgoJ
ICBjb2RlID0gR0VfRVhQUjsKCSAgYnJlYWs7CgljYXNlIEdFX0VYUFI6CgkgIGNvZGUgPSBM
RV9FWFBSOwoJICBicmVhazsKCX0KICAgICAgKnJlc2NvZGVfcHRyID0gY29kZTsKICAgIH0K
CiAgLyogSWYgY29tcGFyaW5nIGFuIGludGVnZXIgYWdhaW5zdCBhIGNvbnN0YW50IG1vcmUg
Yml0cyB3aWRlLAogICAgIG1heWJlIHdlIGNhbiBkZWR1Y2UgYSB2YWx1ZSBvZiAxIG9yIDAg
aW5kZXBlbmRlbnQgb2YgdGhlIGRhdGEuCiAgICAgT3IgZWxzZSB0cnVuY2F0ZSB0aGUgY29u
c3RhbnQgbm93CiAgICAgcmF0aGVyIHRoYW4gZXh0ZW5kIHRoZSB2YXJpYWJsZSBhdCBydW4g
dGltZS4KCiAgICAgVGhpcyBpcyBvbmx5IGludGVyZXN0aW5nIGlmIHRoZSBjb25zdGFudCBp
cyB0aGUgd2lkZXIgYXJnLgogICAgIEFsc28sIGl0IGlzIG5vdCBzYWZlIGlmIHRoZSBjb25z
dGFudCBpcyB1bnNpZ25lZCBhbmQgdGhlCiAgICAgdmFyaWFibGUgYXJnIGlzIHNpZ25lZCwg
c2luY2UgaW4gdGhpcyBjYXNlIHRoZSB2YXJpYWJsZQogICAgIHdvdWxkIGJlIHNpZ24tZXh0
ZW5kZWQgYW5kIHRoZW4gcmVnYXJkZWQgYXMgdW5zaWduZWQuCiAgICAgT3VyIHRlY2huaXF1
ZSBmYWlscyBpbiB0aGlzIGNhc2UgYmVjYXVzZSB0aGUgbG93ZXN0L2hpZ2hlc3QKICAgICBw
b3NzaWJsZSB1bnNpZ25lZCByZXN1bHRzIGRvbid0IGZvbGxvdyBuYXR1cmFsbHkgZnJvbSB0
aGUKICAgICBsb3dlc3QvaGlnaGVzdCBwb3NzaWJsZSB2YWx1ZXMgb2YgdGhlIHZhcmlhYmxl
IG9wZXJhbmQuCiAgICAgRm9yIGp1c3QgRVFfRVhQUiBhbmQgTkVfRVhQUiB0aGVyZSBpcyBh
bm90aGVyIHRlY2huaXF1ZSB0aGF0CiAgICAgY291bGQgYmUgdXNlZDogc2VlIGlmIHRoZSBj
b25zdGFudCBjYW4gYmUgZmFpdGhmdWxseSByZXByZXNlbnRlZAogICAgIGluIHRoZSBvdGhl
ciBvcGVyYW5kJ3MgdHlwZSwgYnkgdHJ1bmNhdGluZyBpdCBhbmQgcmVleHRlbmRpbmcgaXQK
ICAgICBhbmQgc2VlIGlmIHRoYXQgcHJlc2VydmVzIHRoZSBjb25zdGFudCdzIHZhbHVlLiAg
Ki8KCiAgaWYgKCFyZWFsMSAmJiAhcmVhbDIKICAgICAgJiYgVFJFRV9DT0RFIChwcmltb3Ax
KSA9PSBJTlRFR0VSX0NTVAogICAgICAmJiBUWVBFX1BSRUNJU0lPTiAoVFJFRV9UWVBFIChw
cmltb3AwKSkgPCBUWVBFX1BSRUNJU0lPTiAoKnJlc3R5cGVfcHRyKSkKICAgIHsKICAgICAg
aW50IG1pbl9ndCwgbWF4X2d0LCBtaW5fbHQsIG1heF9sdDsKICAgICAgdHJlZSBtYXh2YWws
IG1pbnZhbDsKICAgICAgLyogMSBpZiBjb21wYXJpc29uIGlzIG5vbWluYWxseSB1bnNpZ25l
ZC4gICovCiAgICAgIGludCB1bnNpZ25lZHAgPSBUUkVFX1VOU0lHTkVEICgqcmVzdHlwZV9w
dHIpOwogICAgICB0cmVlIHZhbDsKCiAgICAgIHR5cGUgPSBzaWduZWRfb3JfdW5zaWduZWRf
dHlwZSAodW5zaWduZWRwMCwgVFJFRV9UWVBFIChwcmltb3AwKSk7CgogICAgICBtYXh2YWwg
PSBUWVBFX01BWF9WQUxVRSAodHlwZSk7CiAgICAgIG1pbnZhbCA9IFRZUEVfTUlOX1ZBTFVF
ICh0eXBlKTsKCiAgICAgIGlmICh1bnNpZ25lZHAgJiYgIXVuc2lnbmVkcDApCgkqcmVzdHlw
ZV9wdHIgPSBzaWduZWRfdHlwZSAoKnJlc3R5cGVfcHRyKTsKCiAgICAgIGlmIChUUkVFX1RZ
UEUgKHByaW1vcDEpICE9ICpyZXN0eXBlX3B0cikKCXByaW1vcDEgPSBjb252ZXJ0ICgqcmVz
dHlwZV9wdHIsIHByaW1vcDEpOwogICAgICBpZiAodHlwZSAhPSAqcmVzdHlwZV9wdHIpCgl7
CgkgIG1pbnZhbCA9IGNvbnZlcnQgKCpyZXN0eXBlX3B0ciwgbWludmFsKTsKCSAgbWF4dmFs
ID0gY29udmVydCAoKnJlc3R5cGVfcHRyLCBtYXh2YWwpOwoJfQoKICAgICAgaWYgKHVuc2ln
bmVkcCAmJiB1bnNpZ25lZHAwKQoJewoJICBtaW5fZ3QgPSBJTlRfQ1NUX0xUX1VOU0lHTkVE
IChwcmltb3AxLCBtaW52YWwpOwoJICBtYXhfZ3QgPSBJTlRfQ1NUX0xUX1VOU0lHTkVEIChw
cmltb3AxLCBtYXh2YWwpOwoJICBtaW5fbHQgPSBJTlRfQ1NUX0xUX1VOU0lHTkVEIChtaW52
YWwsIHByaW1vcDEpOwoJICBtYXhfbHQgPSBJTlRfQ1NUX0xUX1VOU0lHTkVEIChtYXh2YWws
IHByaW1vcDEpOwoJfQogICAgICBlbHNlCgl7CgkgIG1pbl9ndCA9IElOVF9DU1RfTFQgKHBy
aW1vcDEsIG1pbnZhbCk7CgkgIG1heF9ndCA9IElOVF9DU1RfTFQgKHByaW1vcDEsIG1heHZh
bCk7CgkgIG1pbl9sdCA9IElOVF9DU1RfTFQgKG1pbnZhbCwgcHJpbW9wMSk7CgkgIG1heF9s
dCA9IElOVF9DU1RfTFQgKG1heHZhbCwgcHJpbW9wMSk7Cgl9CgogICAgICB2YWwgPSAwOwog
ICAgICAvKiBUaGlzIHVzZWQgdG8gYmUgYSBzd2l0Y2gsIGJ1dCBHZW5peCBjb21waWxlciBj
YW4ndCBoYW5kbGUgdGhhdC4gICovCiAgICAgIGlmIChjb2RlID09IE5FX0VYUFIpCgl7Cgkg
IGlmIChtYXhfbHQgfHwgbWluX2d0KQoJICAgIHZhbCA9IGJvb2xlYW5fdHJ1ZV9ub2RlOwoJ
fQogICAgICBlbHNlIGlmIChjb2RlID09IEVRX0VYUFIpCgl7CgkgIGlmIChtYXhfbHQgfHwg
bWluX2d0KQoJICAgIHZhbCA9IGJvb2xlYW5fZmFsc2Vfbm9kZTsKCX0KICAgICAgZWxzZSBp
ZiAoY29kZSA9PSBMVF9FWFBSKQoJewoJICBpZiAobWF4X2x0KQoJICAgIHZhbCA9IGJvb2xl
YW5fdHJ1ZV9ub2RlOwoJICBpZiAoIW1pbl9sdCkKCSAgICB2YWwgPSBib29sZWFuX2ZhbHNl
X25vZGU7Cgl9CiAgICAgIGVsc2UgaWYgKGNvZGUgPT0gR1RfRVhQUikKCXsKCSAgaWYgKG1p
bl9ndCkKCSAgICB2YWwgPSBib29sZWFuX3RydWVfbm9kZTsKCSAgaWYgKCFtYXhfZ3QpCgkg
ICAgdmFsID0gYm9vbGVhbl9mYWxzZV9ub2RlOwoJfQogICAgICBlbHNlIGlmIChjb2RlID09
IExFX0VYUFIpCgl7CgkgIGlmICghbWF4X2d0KQoJICAgIHZhbCA9IGJvb2xlYW5fdHJ1ZV9u
b2RlOwoJICBpZiAobWluX2d0KQoJICAgIHZhbCA9IGJvb2xlYW5fZmFsc2Vfbm9kZTsKCX0K
ICAgICAgZWxzZSBpZiAoY29kZSA9PSBHRV9FWFBSKQoJewoJICBpZiAoIW1pbl9sdCkKCSAg
ICB2YWwgPSBib29sZWFuX3RydWVfbm9kZTsKCSAgaWYgKG1heF9sdCkKCSAgICB2YWwgPSBi
b29sZWFuX2ZhbHNlX25vZGU7Cgl9CgogICAgICAvKiBJZiBwcmltb3AwIHdhcyBzaWduLWV4
dGVuZGVkIGFuZCB1bnNpZ25lZCBjb21wYXJpc29uIHNwZWNkLAoJIHdlIGRpZCBhIHNpZ25l
ZCBjb21wYXJpc29uIGFib3ZlIHVzaW5nIHRoZSBzaWduZWQgdHlwZSBib3VuZHMuCgkgQnV0
IHRoZSBjb21wYXJpc29uIHdlIG91dHB1dCBtdXN0IGJlIHVuc2lnbmVkLgoKCSBBbHNvLCBm
b3IgaW5lcXVhbGl0aWVzLCBWQUwgaXMgbm8gZ29vZDsgYnV0IGlmIHRoZSBzaWduZWQKCSBj
b21wYXJpc29uIGhhZCAqYW55KiBmaXhlZCByZXN1bHQsIGl0IGZvbGxvd3MgdGhhdCB0aGUK
CSB1bnNpZ25lZCBjb21wYXJpc29uIGp1c3QgdGVzdHMgdGhlIHNpZ24gaW4gcmV2ZXJzZQoJ
IChwb3NpdGl2ZSB2YWx1ZXMgYXJlIExFLCBuZWdhdGl2ZSBvbmVzIEdFKS4KCSBTbyB3ZSBj
YW4gZ2VuZXJhdGUgYW4gdW5zaWduZWQgY29tcGFyaXNvbgoJIGFnYWluc3QgYW4gZXh0cmVt
ZSB2YWx1ZSBvZiB0aGUgc2lnbmVkIHR5cGUuICAqLwoKICAgICAgaWYgKHVuc2lnbmVkcCAm
JiAhdW5zaWduZWRwMCkKCXsKCSAgaWYgKHZhbCAhPSAwKQoJICAgIHN3aXRjaCAoY29kZSkK
CSAgICAgIHsKCSAgICAgIGNhc2UgTFRfRVhQUjoKCSAgICAgIGNhc2UgR0VfRVhQUjoKCQlw
cmltb3AxID0gVFlQRV9NSU5fVkFMVUUgKHR5cGUpOwoJCXZhbCA9IDA7CgkJYnJlYWs7CgoJ
ICAgICAgY2FzZSBMRV9FWFBSOgoJICAgICAgY2FzZSBHVF9FWFBSOgoJCXByaW1vcDEgPSBU
WVBFX01BWF9WQUxVRSAodHlwZSk7CgkJdmFsID0gMDsKCQlicmVhazsKCSAgICAgIH0KCSAg
dHlwZSA9IHVuc2lnbmVkX3R5cGUgKHR5cGUpOwoJfQoKICAgICAgaWYgKCFtYXhfZ3QgJiYg
IXVuc2lnbmVkcDAgJiYgVFJFRV9DT0RFIChwcmltb3AwKSAhPSBJTlRFR0VSX0NTVCkKCXsK
CSAgLyogVGhpcyBpcyB0aGUgY2FzZSBvZiAoY2hhcil4ID4/PCAweDgwLCB3aGljaCBwZW9w
bGUgdXNlZCB0byB1c2UKCSAgICAgZXhwZWN0aW5nIG9sZCBDIGNvbXBpbGVycyB0byBjaGFu
Z2UgdGhlIDB4ODAgaW50byAtMHg4MC4gICovCgkgIGlmICh2YWwgPT0gYm9vbGVhbl9mYWxz
ZV9ub2RlKQoJICAgIHdhcm5pbmcgKCJjb21wYXJpc29uIGlzIGFsd2F5cyAwIGR1ZSB0byBs
aW1pdGVkIHJhbmdlIG9mIGRhdGEgdHlwZSIpOwoJICBpZiAodmFsID09IGJvb2xlYW5fdHJ1
ZV9ub2RlKQoJICAgIHdhcm5pbmcgKCJjb21wYXJpc29uIGlzIGFsd2F5cyAxIGR1ZSB0byBs
aW1pdGVkIHJhbmdlIG9mIGRhdGEgdHlwZSIpOwoJfQoKICAgICAgaWYgKCFtaW5fbHQgJiYg
dW5zaWduZWRwMCAmJiBUUkVFX0NPREUgKHByaW1vcDApICE9IElOVEVHRVJfQ1NUKQoJewoJ
ICAvKiBUaGlzIGlzIHRoZSBjYXNlIG9mICh1bnNpZ25lZCBjaGFyKXggPj88IC0xIG9yIDwg
MC4gICovCgkgIGlmICh2YWwgPT0gYm9vbGVhbl9mYWxzZV9ub2RlKQoJICAgIHdhcm5pbmcg
KCJjb21wYXJpc29uIGlzIGFsd2F5cyAwIGR1ZSB0byBsaW1pdGVkIHJhbmdlIG9mIGRhdGEg
dHlwZSIpOwoJICBpZiAodmFsID09IGJvb2xlYW5fdHJ1ZV9ub2RlKQoJICAgIHdhcm5pbmcg
KCJjb21wYXJpc29uIGlzIGFsd2F5cyAxIGR1ZSB0byBsaW1pdGVkIHJhbmdlIG9mIGRhdGEg
dHlwZSIpOwoJfQoKICAgICAgaWYgKHZhbCAhPSAwKQoJewoJICAvKiBEb24ndCBmb3JnZXQg
dG8gZXZhbHVhdGUgUFJJTU9QMCBpZiBpdCBoYXMgc2lkZSBlZmZlY3RzLiAgKi8KCSAgaWYg
KFRSRUVfU0lERV9FRkZFQ1RTIChwcmltb3AwKSkKCSAgICByZXR1cm4gYnVpbGQgKENPTVBP
VU5EX0VYUFIsIFRSRUVfVFlQRSAodmFsKSwgcHJpbW9wMCwgdmFsKTsKCSAgcmV0dXJuIHZh
bDsKCX0KCiAgICAgIC8qIFZhbHVlIGlzIG5vdCBwcmVkZXRlcm1pbmVkLCBidXQgZG8gdGhl
IGNvbXBhcmlzb24KCSBpbiB0aGUgdHlwZSBvZiB0aGUgb3BlcmFuZCB0aGF0IGlzIG5vdCBj
b25zdGFudC4KCSBUWVBFIGlzIGFscmVhZHkgcHJvcGVybHkgc2V0LiAgKi8KICAgIH0KICBl
bHNlIGlmIChyZWFsMSAmJiByZWFsMgoJICAgJiYgKFRZUEVfUFJFQ0lTSU9OIChUUkVFX1RZ
UEUgKHByaW1vcDApKQoJICAgICAgID09IFRZUEVfUFJFQ0lTSU9OIChUUkVFX1RZUEUgKHBy
aW1vcDEpKSkpCiAgICB0eXBlID0gVFJFRV9UWVBFIChwcmltb3AwKTsKCiAgLyogSWYgYXJn
cycgbmF0dXJhbCB0eXBlcyBhcmUgYm90aCBuYXJyb3dlciB0aGFuIG5vbWluYWwgdHlwZQog
ICAgIGFuZCBib3RoIGV4dGVuZCBpbiB0aGUgc2FtZSBtYW5uZXIsIGNvbXBhcmUgdGhlbQog
ICAgIGluIHRoZSB0eXBlIG9mIHRoZSB3aWRlciBhcmcuCiAgICAgT3RoZXJ3aXNlIG11c3Qg
YWN0dWFsbHkgZXh0ZW5kIGJvdGggdG8gdGhlIG5vbWluYWwKICAgICBjb21tb24gdHlwZSBs
ZXN0IGRpZmZlcmVudCB3YXlzIG9mIGV4dGVuZGluZwogICAgIGFsdGVyIHRoZSByZXN1bHQu
CiAgICAgKGVnLCAoc2hvcnQpLTEgPT0gKHVuc2lnbmVkIHNob3J0KS0xICBzaG91bGQgYmUg
MC4pICAqLwoKICBlbHNlIGlmICh1bnNpZ25lZHAwID09IHVuc2lnbmVkcDEgJiYgcmVhbDEg
PT0gcmVhbDIKCSAgICYmIFRZUEVfUFJFQ0lTSU9OIChUUkVFX1RZUEUgKHByaW1vcDApKSA8
IFRZUEVfUFJFQ0lTSU9OICgqcmVzdHlwZV9wdHIpCgkgICAmJiBUWVBFX1BSRUNJU0lPTiAo
VFJFRV9UWVBFIChwcmltb3AxKSkgPCBUWVBFX1BSRUNJU0lPTiAoKnJlc3R5cGVfcHRyKSkK
ICAgIHsKICAgICAgdHlwZSA9IGNvbW1vbl90eXBlIChUUkVFX1RZUEUgKHByaW1vcDApLCBU
UkVFX1RZUEUgKHByaW1vcDEpKTsKICAgICAgdHlwZSA9IHNpZ25lZF9vcl91bnNpZ25lZF90
eXBlICh1bnNpZ25lZHAwCgkJCQkgICAgICB8fCBUUkVFX1VOU0lHTkVEICgqcmVzdHlwZV9w
dHIpLAoJCQkJICAgICAgdHlwZSk7CiAgICAgIC8qIE1ha2Ugc3VyZSBzaG9ydGVyIG9wZXJh
bmQgaXMgZXh0ZW5kZWQgdGhlIHJpZ2h0IHdheQoJIHRvIG1hdGNoIHRoZSBsb25nZXIgb3Bl
cmFuZC4gICovCiAgICAgIHByaW1vcDAgPSBjb252ZXJ0IChzaWduZWRfb3JfdW5zaWduZWRf
dHlwZSAodW5zaWduZWRwMCwgVFJFRV9UWVBFIChwcmltb3AwKSksCgkJCSBwcmltb3AwKTsK
ICAgICAgcHJpbW9wMSA9IGNvbnZlcnQgKHNpZ25lZF9vcl91bnNpZ25lZF90eXBlICh1bnNp
Z25lZHAxLCBUUkVFX1RZUEUgKHByaW1vcDEpKSwKCQkJIHByaW1vcDEpOwogICAgfQogIGVs
c2UKICAgIHsKICAgICAgLyogSGVyZSB3ZSBtdXN0IGRvIHRoZSBjb21wYXJpc29uIG9uIHRo
ZSBub21pbmFsIHR5cGUKCSB1c2luZyB0aGUgYXJncyBleGFjdGx5IGFzIHdlIHJlY2VpdmVk
IHRoZW0uICAqLwogICAgICB0eXBlID0gKnJlc3R5cGVfcHRyOwogICAgICBwcmltb3AwID0g
b3AwOwogICAgICBwcmltb3AxID0gb3AxOwoKICAgICAgaWYgKCFyZWFsMSAmJiAhcmVhbDIg
JiYgaW50ZWdlcl96ZXJvcCAocHJpbW9wMSkKCSAgJiYgVFJFRV9VTlNJR05FRCAoKnJlc3R5
cGVfcHRyKSkKCXsKCSAgdHJlZSB2YWx1ZSA9IDA7CgkgIHN3aXRjaCAoY29kZSkKCSAgICB7
CgkgICAgY2FzZSBHRV9FWFBSOgoJICAgICAgLyogQWxsIHVuc2lnbmVkIHZhbHVlcyBhcmUg
Pj0gMCwgc28gd2Ugd2FybiBpZiBleHRyYSB3YXJuaW5ncwoJCSBhcmUgcmVxdWVzdGVkLiAg
SG93ZXZlciwgaWYgT1AwIGlzIGEgY29uc3RhbnQgdGhhdCBpcwoJCSA+PSAwLCB0aGUgc2ln
bmVkbmVzcyBvZiB0aGUgY29tcGFyaXNvbiBpc24ndCBhbiBpc3N1ZSwKCQkgc28gc3VwcHJl
c3MgdGhlIHdhcm5pbmcuICAqLwoJICAgICAgaWYgKGV4dHJhX3dhcm5pbmdzCgkJICAmJiAh
IChUUkVFX0NPREUgKHByaW1vcDApID09IElOVEVHRVJfQ1NUCgkJCSYmICEgVFJFRV9PVkVS
RkxPVyAoY29udmVydCAoc2lnbmVkX3R5cGUgKHR5cGUpLAoJCQkJCQkgICAgIHByaW1vcDAp
KSkpCgkJd2FybmluZyAoInVuc2lnbmVkIHZhbHVlID49IDAgaXMgYWx3YXlzIDEiKTsKCSAg
ICAgIHZhbHVlID0gYm9vbGVhbl90cnVlX25vZGU7CgkgICAgICBicmVhazsKCgkgICAgY2Fz
ZSBMVF9FWFBSOgoJICAgICAgaWYgKGV4dHJhX3dhcm5pbmdzCgkJICAmJiAhIChUUkVFX0NP
REUgKHByaW1vcDApID09IElOVEVHRVJfQ1NUCgkJCSYmICEgVFJFRV9PVkVSRkxPVyAoY29u
dmVydCAoc2lnbmVkX3R5cGUgKHR5cGUpLAoJCQkJCQkgICAgIHByaW1vcDApKSkpCgkJd2Fy
bmluZyAoInVuc2lnbmVkIHZhbHVlIDwgMCBpcyBhbHdheXMgMCIpOwoJICAgICAgdmFsdWUg
PSBib29sZWFuX2ZhbHNlX25vZGU7CgkgICAgfQoKCSAgaWYgKHZhbHVlICE9IDApCgkgICAg
ewoJICAgICAgLyogRG9uJ3QgZm9yZ2V0IHRvIGV2YWx1YXRlIFBSSU1PUDAgaWYgaXQgaGFz
IHNpZGUgZWZmZWN0cy4gICovCgkgICAgICBpZiAoVFJFRV9TSURFX0VGRkVDVFMgKHByaW1v
cDApKQoJCXJldHVybiBidWlsZCAoQ09NUE9VTkRfRVhQUiwgVFJFRV9UWVBFICh2YWx1ZSks
CgkJCSAgICAgIHByaW1vcDAsIHZhbHVlKTsKCSAgICAgIHJldHVybiB2YWx1ZTsKCSAgICB9
Cgl9CiAgICB9CgogICpvcDBfcHRyID0gY29udmVydCAodHlwZSwgcHJpbW9wMCk7CiAgKm9w
MV9wdHIgPSBjb252ZXJ0ICh0eXBlLCBwcmltb3AxKTsKCiAgKnJlc3R5cGVfcHRyID0gYm9v
bGVhbl90eXBlX25vZGU7CgogIHJldHVybiAwOwp9CgwKLyogUHJlcGFyZSBleHByIHRvIGJl
IGFuIGFyZ3VtZW50IG9mIGEgVFJVVEhfTk9UX0VYUFIsCiAgIG9yIHZhbGlkYXRlIGl0cyBk
YXRhIHR5cGUgZm9yIGFuIGBpZicgb3IgYHdoaWxlJyBzdGF0ZW1lbnQgb3IgPy4uOiBleHAu
CgogICBUaGlzIHByZXBhcmF0aW9uIGNvbnNpc3RzIG9mIHRha2luZyB0aGUgb3JkaW5hcnkK
ICAgcmVwcmVzZW50YXRpb24gb2YgYW4gZXhwcmVzc2lvbiBleHByIGFuZCBwcm9kdWNpbmcg
YSB2YWxpZCB0cmVlCiAgIGJvb2xlYW4gZXhwcmVzc2lvbiBkZXNjcmliaW5nIHdoZXRoZXIg
ZXhwciBpcyBub256ZXJvLiAgV2UgY291bGQKICAgc2ltcGx5IGFsd2F5cyBkbyBidWlsZF9i
aW5hcnlfb3AgKE5FX0VYUFIsIGV4cHIsIGJvb2xlYW5fZmFsc2Vfbm9kZSwgMSksCiAgIGJ1
dCB3ZSBvcHRpbWl6ZSBjb21wYXJpc29ucywgJiYsIHx8LCBhbmQgIS4KCiAgIFRoZSByZXN1
bHRpbmcgdHlwZSBzaG91bGQgYWx3YXlzIGJlIGBib29sZWFuX3R5cGVfbm9kZScuICAqLwoK
dHJlZQp0cnV0aHZhbHVlX2NvbnZlcnNpb24gKGV4cHIpCiAgICAgdHJlZSBleHByOwp7CiAg
aWYgKFRSRUVfQ09ERSAoZXhwcikgPT0gRVJST1JfTUFSSykKICAgIHJldHVybiBleHByOwoK
I2lmIDAgLyogVGhpcyBhcHBlYXJzIHRvIGJlIHdyb25nIGZvciBDKysuICAqLwogIC8qIFRo
ZXNlIHJlYWxseSBzaG91bGQgcmV0dXJuIGVycm9yX21hcmtfbm9kZSBhZnRlciAyLjQgaXMg
c3RhYmxlLgogICAgIEJ1dCBub3QgYWxsIGNhbGxlcnMgaGFuZGxlIEVSUk9SX01BUksgcHJv
cGVybHkuICAqLwogIHN3aXRjaCAoVFJFRV9DT0RFIChUUkVFX1RZUEUgKGV4cHIpKSkKICAg
IHsKICAgIGNhc2UgUkVDT1JEX1RZUEU6CiAgICAgIGVycm9yICgic3RydWN0IHR5cGUgdmFs
dWUgdXNlZCB3aGVyZSBzY2FsYXIgaXMgcmVxdWlyZWQiKTsKICAgICAgcmV0dXJuIGJvb2xl
YW5fZmFsc2Vfbm9kZTsKCiAgICBjYXNlIFVOSU9OX1RZUEU6CiAgICAgIGVycm9yICgidW5p
b24gdHlwZSB2YWx1ZSB1c2VkIHdoZXJlIHNjYWxhciBpcyByZXF1aXJlZCIpOwogICAgICBy
ZXR1cm4gYm9vbGVhbl9mYWxzZV9ub2RlOwoKICAgIGNhc2UgQVJSQVlfVFlQRToKICAgICAg
ZXJyb3IgKCJhcnJheSB0eXBlIHZhbHVlIHVzZWQgd2hlcmUgc2NhbGFyIGlzIHJlcXVpcmVk
Iik7CiAgICAgIHJldHVybiBib29sZWFuX2ZhbHNlX25vZGU7CgogICAgZGVmYXVsdDoKICAg
ICAgYnJlYWs7CiAgICB9CiNlbmRpZiAvKiAwICovCgogIHN3aXRjaCAoVFJFRV9DT0RFIChl
eHByKSkKICAgIHsKICAgICAgLyogSXQgaXMgc2ltcGxlciBhbmQgZ2VuZXJhdGVzIGJldHRl
ciBjb2RlIHRvIGhhdmUgb25seSBUUlVUSF8qX0VYUFIKCSBvciBjb21wYXJpc29uIGV4cHJl
c3Npb25zIGFzIHRydXRoIHZhbHVlcyBhdCB0aGlzIGxldmVsLiAgKi8KI2lmIDAKICAgIGNh
c2UgQ09NUE9ORU5UX1JFRjoKICAgICAgLyogQSBvbmUtYml0IHVuc2lnbmVkIGJpdC1maWVs
ZCBpcyBhbHJlYWR5IGFjY2VwdGFibGUuICAqLwogICAgICBpZiAoMSA9PSBUUkVFX0lOVF9D
U1RfTE9XIChERUNMX1NJWkUgKFRSRUVfT1BFUkFORCAoZXhwciwgMSkpKQoJICAmJiBUUkVF
X1VOU0lHTkVEIChUUkVFX09QRVJBTkQgKGV4cHIsIDEpKSkKCXJldHVybiBleHByOwogICAg
ICBicmVhazsKI2VuZGlmCgogICAgY2FzZSBFUV9FWFBSOgogICAgICAvKiBJdCBpcyBzaW1w
bGVyIGFuZCBnZW5lcmF0ZXMgYmV0dGVyIGNvZGUgdG8gaGF2ZSBvbmx5IFRSVVRIXypfRVhQ
UgoJIG9yIGNvbXBhcmlzb24gZXhwcmVzc2lvbnMgYXMgdHJ1dGggdmFsdWVzIGF0IHRoaXMg
bGV2ZWwuICAqLwojaWYgMAogICAgICBpZiAoaW50ZWdlcl96ZXJvcCAoVFJFRV9PUEVSQU5E
IChleHByLCAxKSkpCglyZXR1cm4gYnVpbGRfdW5hcnlfb3AgKFRSVVRIX05PVF9FWFBSLCBU
UkVFX09QRVJBTkQgKGV4cHIsIDApLCAwKTsKI2VuZGlmCiAgICBjYXNlIE5FX0VYUFI6IGNh
c2UgTEVfRVhQUjogY2FzZSBHRV9FWFBSOiBjYXNlIExUX0VYUFI6IGNhc2UgR1RfRVhQUjoK
ICAgIGNhc2UgVFJVVEhfQU5ESUZfRVhQUjoKICAgIGNhc2UgVFJVVEhfT1JJRl9FWFBSOgog
ICAgY2FzZSBUUlVUSF9BTkRfRVhQUjoKICAgIGNhc2UgVFJVVEhfT1JfRVhQUjoKICAgIGNh
c2UgVFJVVEhfWE9SX0VYUFI6CiAgICBjYXNlIFRSVVRIX05PVF9FWFBSOgogICAgICBUUkVF
X1RZUEUgKGV4cHIpID0gYm9vbGVhbl90eXBlX25vZGU7CiAgICAgIHJldHVybiBleHByOwoK
ICAgIGNhc2UgRVJST1JfTUFSSzoKICAgICAgcmV0dXJuIGV4cHI7CgogICAgY2FzZSBJTlRF
R0VSX0NTVDoKICAgICAgcmV0dXJuIGludGVnZXJfemVyb3AgKGV4cHIpID8gYm9vbGVhbl9m
YWxzZV9ub2RlIDogYm9vbGVhbl90cnVlX25vZGU7CgogICAgY2FzZSBSRUFMX0NTVDoKICAg
ICAgcmV0dXJuIHJlYWxfemVyb3AgKGV4cHIpID8gYm9vbGVhbl9mYWxzZV9ub2RlIDogYm9v
bGVhbl90cnVlX25vZGU7CgogICAgY2FzZSBBRERSX0VYUFI6CiAgICAgIC8qIElmIHdlIGFy
ZSB0YWtpbmcgdGhlIGFkZHJlc3Mgb2YgYSBleHRlcm5hbCBkZWNsLCBpdCBtaWdodCBiZSB6
ZXJvCgkgaWYgaXQgaXMgd2Vhaywgc28gd2UgY2Fubm90IG9wdGltaXplLiAgKi8KICAgICAg
aWYgKFRSRUVfQ09ERV9DTEFTUyAoVFJFRV9DT0RFIChUUkVFX09QRVJBTkQgKGV4cHIsIDAp
KSkgPT0gJ2QnCgkgICYmIERFQ0xfRVhURVJOQUwgKFRSRUVfT1BFUkFORCAoZXhwciwgMCkp
KQoJYnJlYWs7CgogICAgICBpZiAoVFJFRV9TSURFX0VGRkVDVFMgKFRSRUVfT1BFUkFORCAo
ZXhwciwgMCkpKQoJcmV0dXJuIGJ1aWxkIChDT01QT1VORF9FWFBSLCBib29sZWFuX3R5cGVf
bm9kZSwKCQkgICAgICBUUkVFX09QRVJBTkQgKGV4cHIsIDApLCBib29sZWFuX3RydWVfbm9k
ZSk7CiAgICAgIGVsc2UKCXJldHVybiBib29sZWFuX3RydWVfbm9kZTsKCiAgICBjYXNlIENP
TVBMRVhfRVhQUjoKICAgICAgcmV0dXJuIGJ1aWxkX2JpbmFyeV9vcCAoKFRSRUVfU0lERV9F
RkZFQ1RTIChUUkVFX09QRVJBTkQgKGV4cHIsIDEpKQoJCQkgICAgICAgPyBUUlVUSF9PUl9F
WFBSIDogVFJVVEhfT1JJRl9FWFBSKSwKCQkJICAgICAgdHJ1dGh2YWx1ZV9jb252ZXJzaW9u
IChUUkVFX09QRVJBTkQgKGV4cHIsIDApKSwKCQkJICAgICAgdHJ1dGh2YWx1ZV9jb252ZXJz
aW9uIChUUkVFX09QRVJBTkQgKGV4cHIsIDEpKSwKCQkJICAgICAgMCk7CgogICAgY2FzZSBO
RUdBVEVfRVhQUjoKICAgIGNhc2UgQUJTX0VYUFI6CiAgICBjYXNlIEZMT0FUX0VYUFI6CiAg
ICBjYXNlIEZGU19FWFBSOgogICAgICAvKiBUaGVzZSBkb24ndCBjaGFuZ2Ugd2hldGhlciBh
biBvYmplY3QgaXMgbm9uLXplcm8gb3IgemVyby4gICovCiAgICAgIHJldHVybiB0cnV0aHZh
bHVlX2NvbnZlcnNpb24gKFRSRUVfT1BFUkFORCAoZXhwciwgMCkpOwoKICAgIGNhc2UgTFJP
VEFURV9FWFBSOgogICAgY2FzZSBSUk9UQVRFX0VYUFI6CiAgICAgIC8qIFRoZXNlIGRvbid0
IGNoYW5nZSB3aGV0aGVyIGFuIG9iamVjdCBpcyB6ZXJvIG9yIG5vbi16ZXJvLCBidXQKCSB3
ZSBjYW4ndCBpZ25vcmUgdGhlbSBpZiB0aGVpciBzZWNvbmQgYXJnIGhhcyBzaWRlLWVmZmVj
dHMuICAqLwogICAgICBpZiAoVFJFRV9TSURFX0VGRkVDVFMgKFRSRUVfT1BFUkFORCAoZXhw
ciwgMSkpKQoJcmV0dXJuIGJ1aWxkIChDT01QT1VORF9FWFBSLCBib29sZWFuX3R5cGVfbm9k
ZSwgVFJFRV9PUEVSQU5EIChleHByLCAxKSwKCQkgICAgICB0cnV0aHZhbHVlX2NvbnZlcnNp
b24gKFRSRUVfT1BFUkFORCAoZXhwciwgMCkpKTsKICAgICAgZWxzZQoJcmV0dXJuIHRydXRo
dmFsdWVfY29udmVyc2lvbiAoVFJFRV9PUEVSQU5EIChleHByLCAwKSk7CiAgICAgIAogICAg
Y2FzZSBDT05EX0VYUFI6CiAgICAgIC8qIERpc3RyaWJ1dGUgdGhlIGNvbnZlcnNpb24gaW50
byB0aGUgYXJtcyBvZiBhIENPTkRfRVhQUi4gICovCiAgICAgIHJldHVybiBmb2xkIChidWls
ZCAoQ09ORF9FWFBSLCBib29sZWFuX3R5cGVfbm9kZSwgVFJFRV9PUEVSQU5EIChleHByLCAw
KSwKCQkJICB0cnV0aHZhbHVlX2NvbnZlcnNpb24gKFRSRUVfT1BFUkFORCAoZXhwciwgMSkp
LAoJCQkgIHRydXRodmFsdWVfY29udmVyc2lvbiAoVFJFRV9PUEVSQU5EIChleHByLCAyKSkp
KTsKCiAgICBjYXNlIENPTlZFUlRfRVhQUjoKICAgICAgLyogRG9uJ3QgY2FuY2VsIHRoZSBl
ZmZlY3Qgb2YgYSBDT05WRVJUX0VYUFIgZnJvbSBhIFJFRkVSRU5DRV9UWVBFLAoJIHNpbmNl
IHRoYXQgYWZmZWN0cyBob3cgYGRlZmF1bHRfY29udmVyc2lvbicgd2lsbCBiZWhhdmUuICAq
LwogICAgICBpZiAoVFJFRV9DT0RFIChUUkVFX1RZUEUgKGV4cHIpKSA9PSBSRUZFUkVOQ0Vf
VFlQRQoJICB8fCBUUkVFX0NPREUgKFRSRUVfVFlQRSAoVFJFRV9PUEVSQU5EIChleHByLCAw
KSkpID09IFJFRkVSRU5DRV9UWVBFKQoJYnJlYWs7CiAgICAgIC8qIGZhbGwgdGhyb3VnaC4u
LiAgKi8KICAgIGNhc2UgTk9QX0VYUFI6CiAgICAgIC8qIElmIHRoaXMgaXMgd2lkZW5pbmcg
dGhlIGFyZ3VtZW50LCB3ZSBjYW4gaWdub3JlIGl0LiAgKi8KICAgICAgaWYgKFRZUEVfUFJF
Q0lTSU9OIChUUkVFX1RZUEUgKGV4cHIpKQoJICA+PSBUWVBFX1BSRUNJU0lPTiAoVFJFRV9U
WVBFIChUUkVFX09QRVJBTkQgKGV4cHIsIDApKSkpCglyZXR1cm4gdHJ1dGh2YWx1ZV9jb252
ZXJzaW9uIChUUkVFX09QRVJBTkQgKGV4cHIsIDApKTsKICAgICAgYnJlYWs7CgogICAgY2Fz
ZSBNSU5VU19FWFBSOgogICAgICAvKiBXaXRoIElFRUUgYXJpdGhtZXRpYywgeCAtIHggbWF5
IG5vdCBlcXVhbCAwLCBzbyB3ZSBjYW4ndCBvcHRpbWl6ZQoJIHRoaXMgY2FzZS4gICovCiAg
ICAgIGlmIChUQVJHRVRfRkxPQVRfRk9STUFUID09IElFRUVfRkxPQVRfRk9STUFUCgkgICYm
IFRSRUVfQ09ERSAoVFJFRV9UWVBFIChleHByKSkgPT0gUkVBTF9UWVBFKQoJYnJlYWs7CiAg
ICAgIC8qIGZhbGwgdGhyb3VnaC4uLiAgKi8KICAgIGNhc2UgQklUX1hPUl9FWFBSOgogICAg
ICAvKiBUaGlzIGFuZCBNSU5VU19FWFBSIGNhbiBiZSBjaGFuZ2VkIGludG8gYSBjb21wYXJp
c29uIG9mIHRoZQoJIHR3byBvYmplY3RzLiAgKi8KICAgICAgaWYgKFRSRUVfVFlQRSAoVFJF
RV9PUEVSQU5EIChleHByLCAwKSkKCSAgPT0gVFJFRV9UWVBFIChUUkVFX09QRVJBTkQgKGV4
cHIsIDEpKSkKCXJldHVybiBidWlsZF9iaW5hcnlfb3AgKE5FX0VYUFIsIFRSRUVfT1BFUkFO
RCAoZXhwciwgMCksCgkJCQlUUkVFX09QRVJBTkQgKGV4cHIsIDEpLCAxKTsKICAgICAgcmV0
dXJuIGJ1aWxkX2JpbmFyeV9vcCAoTkVfRVhQUiwgVFJFRV9PUEVSQU5EIChleHByLCAwKSwK
CQkJICAgICAgZm9sZCAoYnVpbGQxIChOT1BfRVhQUiwKCQkJCQkgICAgVFJFRV9UWVBFIChU
UkVFX09QRVJBTkQgKGV4cHIsIDApKSwKCQkJCQkgICAgVFJFRV9PUEVSQU5EIChleHByLCAx
KSkpLCAxKTsKCiAgICBjYXNlIEJJVF9BTkRfRVhQUjoKICAgICAgaWYgKGludGVnZXJfb25l
cCAoVFJFRV9PUEVSQU5EIChleHByLCAxKSkKCSAgJiYgVFJFRV9UWVBFIChleHByKSAhPSBi
b29sZWFuX3R5cGVfbm9kZSkKCS8qIFVzaW5nIGNvbnZlcnQgaGVyZSB3b3VsZCBjYXVzZSBp
bmZpbml0ZSByZWN1cnNpb24uICAqLwoJcmV0dXJuIGJ1aWxkMSAoTk9QX0VYUFIsIGJvb2xl
YW5fdHlwZV9ub2RlLCBleHByKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBNT0RJRllfRVhQ
UjoKICAgICAgaWYgKHdhcm5fcGFyZW50aGVzZXMgJiYgQ19FWFBfT1JJR0lOQUxfQ09ERSAo
ZXhwcikgPT0gTU9ESUZZX0VYUFIpCgl3YXJuaW5nICgic3VnZ2VzdCBwYXJlbnRoZXNlcyBh
cm91bmQgYXNzaWdubWVudCB1c2VkIGFzIHRydXRoIHZhbHVlIik7CiAgICAgIGJyZWFrOwog
ICAgfQoKICBpZiAoVFJFRV9DT0RFIChUUkVFX1RZUEUgKGV4cHIpKSA9PSBDT01QTEVYX1RZ
UEUpCiAgICByZXR1cm4gKGJ1aWxkX2JpbmFyeV9vcAoJICAgICgoVFJFRV9TSURFX0VGRkVD
VFMgKGV4cHIpCgkgICAgICA/IFRSVVRIX09SX0VYUFIgOiBUUlVUSF9PUklGX0VYUFIpLAoJ
ICAgICB0cnV0aHZhbHVlX2NvbnZlcnNpb24gKGJ1aWxkX3VuYXJ5X29wIChSRUFMUEFSVF9F
WFBSLCBleHByLCAwKSksCgkgICAgIHRydXRodmFsdWVfY29udmVyc2lvbiAoYnVpbGRfdW5h
cnlfb3AgKElNQUdQQVJUX0VYUFIsIGV4cHIsIDApKSwKCSAgICAgMCkpOwoKICByZXR1cm4g
YnVpbGRfYmluYXJ5X29wIChORV9FWFBSLCBleHByLCBpbnRlZ2VyX3plcm9fbm9kZSwgMSk7
Cn0KDAovKiBSZWFkIHRoZSByZXN0IG9mIGEgIy1kaXJlY3RpdmUgZnJvbSBpbnB1dCBzdHJl
YW0gRklOUFVULgogICBJbiBub3JtYWwgdXNlLCB0aGUgZGlyZWN0aXZlIG5hbWUgYW5kIHRo
ZSB3aGl0ZSBzcGFjZSBhZnRlciBpdAogICBoYXZlIGFscmVhZHkgYmVlbiByZWFkLCBzbyB0
aGV5IHdvbid0IGJlIGluY2x1ZGVkIGluIHRoZSByZXN1bHQuCiAgIFdlIGFsbG93IGZvciB0
aGUgZmFjdCB0aGF0IHRoZSBkaXJlY3RpdmUgbGluZSBtYXkgY29udGFpbgogICBhIG5ld2xp
bmUgZW1iZWRkZWQgd2l0aGluIGEgY2hhcmFjdGVyIG9yIHN0cmluZyBsaXRlcmFsIHdoaWNo
IGZvcm1zCiAgIGEgcGFydCBvZiB0aGUgZGlyZWN0aXZlLgoKICAgVGhlIHZhbHVlIGlzIGEg
c3RyaW5nIGluIGEgcmV1c2FibGUgYnVmZmVyLiAgSXQgcmVtYWlucyB2YWxpZAogICBvbmx5
IHVudGlsIHRoZSBuZXh0IHRpbWUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuCgogICBUaGUg
dGVybWluYXRpbmcgY2hhcmFjdGVyICgnXG4nIG9yIEVPRikgaXMgbGVmdCBpbiBGSU5QVVQg
Zm9yIHRoZQogICBjYWxsZXIgdG8gcmUtcmVhZC4gICovCgpjaGFyICoKZ2V0X2RpcmVjdGl2
ZV9saW5lIChmaW5wdXQpCiAgICAgcmVnaXN0ZXIgRklMRSAqZmlucHV0Owp7CiAgc3RhdGlj
IGNoYXIgKmRpcmVjdGl2ZV9idWZmZXIgPSBOVUxMOwogIHN0YXRpYyB1bnNpZ25lZCBidWZm
ZXJfbGVuZ3RoID0gMDsKICByZWdpc3RlciBjaGFyICpwOwogIHJlZ2lzdGVyIGNoYXIgKmJ1
ZmZlcl9saW1pdDsKICByZWdpc3RlciBpbnQgbG9va2luZ19mb3IgPSAwOwogIHJlZ2lzdGVy
IGludCBjaGFyX2VzY2FwZWQgPSAwOwoKICBpZiAoYnVmZmVyX2xlbmd0aCA9PSAwKQogICAg
ewogICAgICBkaXJlY3RpdmVfYnVmZmVyID0gKGNoYXIgKil4bWFsbG9jICgxMjgpOwogICAg
ICBidWZmZXJfbGVuZ3RoID0gMTI4OwogICAgfQoKICBidWZmZXJfbGltaXQgPSAmZGlyZWN0
aXZlX2J1ZmZlcltidWZmZXJfbGVuZ3RoXTsKCiAgZm9yIChwID0gZGlyZWN0aXZlX2J1ZmZl
cjsgOyApCiAgICB7CiAgICAgIGludCBjOwoKICAgICAgLyogTWFrZSBidWZmZXIgYmlnZ2Vy
IGlmIGl0IGlzIGZ1bGwuICAqLwogICAgICBpZiAocCA+PSBidWZmZXJfbGltaXQpCiAgICAg
ICAgewoJICByZWdpc3RlciB1bnNpZ25lZCBieXRlc191c2VkID0gKHAgLSBkaXJlY3RpdmVf
YnVmZmVyKTsKCgkgIGJ1ZmZlcl9sZW5ndGggKj0gMjsKCSAgZGlyZWN0aXZlX2J1ZmZlcgoJ
ICAgID0gKGNoYXIgKil4cmVhbGxvYyAoZGlyZWN0aXZlX2J1ZmZlciwgYnVmZmVyX2xlbmd0
aCk7CgkgIHAgPSAmZGlyZWN0aXZlX2J1ZmZlcltieXRlc191c2VkXTsKCSAgYnVmZmVyX2xp
bWl0ID0gJmRpcmVjdGl2ZV9idWZmZXJbYnVmZmVyX2xlbmd0aF07CiAgICAgICAgfQoKICAg
ICAgYyA9IGdldGMgKGZpbnB1dCk7CgogICAgICAvKiBEaXNjYXJkIGluaXRpYWwgd2hpdGVz
cGFjZS4gICovCiAgICAgIGlmICgoYyA9PSAnICcgfHwgYyA9PSAnXHQnKSAmJiBwID09IGRp
cmVjdGl2ZV9idWZmZXIpCgljb250aW51ZTsKCiAgICAgIC8qIERldGVjdCB0aGUgZW5kIG9m
IHRoZSBkaXJlY3RpdmUuICAqLwogICAgICBpZiAobG9va2luZ19mb3IgPT0gMAoJICAmJiAo
YyA9PSAnXG4nIHx8IGMgPT0gRU9GKSkKCXsKICAgICAgICAgIHVuZ2V0YyAoYywgZmlucHV0
KTsKCSAgYyA9ICdcMCc7Cgl9CgogICAgICAqcCsrID0gYzsKCiAgICAgIGlmIChjID09IDAp
CglyZXR1cm4gZGlyZWN0aXZlX2J1ZmZlcjsKCiAgICAgIC8qIEhhbmRsZSBzdHJpbmcgYW5k
IGNoYXJhY3RlciBjb25zdGFudCBzeW50YXguICAqLwogICAgICBpZiAobG9va2luZ19mb3Ip
Cgl7CgkgIGlmIChsb29raW5nX2ZvciA9PSBjICYmICFjaGFyX2VzY2FwZWQpCgkgICAgbG9v
a2luZ19mb3IgPSAwOwkvKiBGb3VuZCB0ZXJtaW5hdG9yLi4uIHN0b3AgbG9va2luZy4gICov
Cgl9CiAgICAgIGVsc2UKICAgICAgICBpZiAoYyA9PSAnXCcnIHx8IGMgPT0gJyInKQoJICBs
b29raW5nX2ZvciA9IGM7CS8qIERvbid0IHN0b3AgYnVmZmVyaW5nIHVudGlsIHdlIHNlZSBh
bm90aGVyCgkJCQkgICBhbm90aGVyIG9uZSBvZiB0aGVzZSAob3IgYW4gRU9GKS4gICovCgog
ICAgICAvKiBIYW5kbGUgYmFja3NsYXNoLiAgKi8KICAgICAgY2hhcl9lc2NhcGVkID0gKGMg
PT0gJ1xcJyAmJiAhIGNoYXJfZXNjYXBlZCk7CiAgICB9Cn0KDAovKiBNYWtlIGEgdmFyaWFu
dCB0eXBlIGluIHRoZSBwcm9wZXIgd2F5IGZvciBDL0MrKywgcHJvcGFnYXRpbmcgcXVhbGlm
aWVycwogICBkb3duIHRvIHRoZSBlbGVtZW50IHR5cGUgb2YgYW4gYXJyYXkuICAqLwoKdHJl
ZQpjX2J1aWxkX3R5cGVfdmFyaWFudCAodHlwZSwgY29uc3RwLCB2b2xhdGlsZXApCiAgICAg
dHJlZSB0eXBlOwogICAgIGludCBjb25zdHAsIHZvbGF0aWxlcDsKewogIGlmIChUUkVFX0NP
REUgKHR5cGUpID09IEFSUkFZX1RZUEUpCiAgICByZXR1cm4gYnVpbGRfYXJyYXlfdHlwZSAo
Y19idWlsZF90eXBlX3ZhcmlhbnQgKFRSRUVfVFlQRSAodHlwZSksCgkJCQkJCSAgIGNvbnN0
cCwgdm9sYXRpbGVwKSwKCQkJICAgICBUWVBFX0RPTUFJTiAodHlwZSkpOwogIHJldHVybiBi
dWlsZF90eXBlX3ZhcmlhbnQgKHR5cGUsIGNvbnN0cCwgdm9sYXRpbGVwKTsKfQo=
_ATEOF


cat >secondfile.b64 <<'_ATEOF'
LyogU3Vicm91dGluZXMgc2hhcmVkIGJ5IGFsbCBsYW5ndWFnZXMgdGhhdCBhcmUgdmFyaWFu
dHMgb2YgQy4KICAgQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2
LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLAogICAyMDAxLCAyMDAyLCAyMDAzIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLgoKVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0NDLgoKR0ND
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp
ZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
IHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIKdmVyc2lvbi4KCkdD
QyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBi
dXQgV0lUSE9VVCBBTlkKV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmZvciBtb3JlIGRl
dGFpbHMuCgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlClNvZnR3YXJlIEZvdW5kYXRpb24sIDU5
IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQowMjExMS0xMzA3LCBVU0Eu
ICAqLwoKI2luY2x1ZGUgImNvbmZpZy5oIgojaW5jbHVkZSAic3lzdGVtLmgiCiNpbmNsdWRl
ICJjb3JldHlwZXMuaCIKI2luY2x1ZGUgInRtLmgiCiNpbmNsdWRlICJpbnRsLmgiCiNpbmNs
dWRlICJ0cmVlLmgiCiNpbmNsdWRlICJmbGFncy5oIgojaW5jbHVkZSAib3V0cHV0LmgiCiNp
bmNsdWRlICJjLXByYWdtYS5oIgojaW5jbHVkZSAicnRsLmgiCiNpbmNsdWRlICJnZ2MuaCIK
I2luY2x1ZGUgInZhcnJheS5oIgojaW5jbHVkZSAiZXhwci5oIgojaW5jbHVkZSAiYy1jb21t
b24uaCIKI2luY2x1ZGUgImRpYWdub3N0aWMuaCIKI2luY2x1ZGUgInRtX3AuaCIKI2luY2x1
ZGUgIm9ic3RhY2suaCIKI2luY2x1ZGUgImNwcGxpYi5oIgojaW5jbHVkZSAidGFyZ2V0Lmgi
CiNpbmNsdWRlICJsYW5naG9va3MuaCIKI2luY2x1ZGUgInRyZWUtaW5saW5lLmgiCiNpbmNs
dWRlICJjLXRyZWUuaCIKLyogSW4gb3JkZXIgdG8gZW5zdXJlIHdlIHVzZSBhIGNvbW1vbiBz
dWJzZXQgb2YgdmFsaWQgc3BlY2lmaWVycwogICAoYmV0d2VlbiB0aGUgdmFyaW91cyBDIGZh
bWlseSBmcm9udGVuZHMpIGluIHRoaXMgZmlsZSwgd2UgcmVzdHJpY3QKICAgb3Vyc2VsdmVz
IHRvIHRoZSBnZW5lcmljIHNwZWNpZmllciBzZXQuICAqLwojdW5kZWYgR0NDX0RJQUdfU1RZ
TEUKI2luY2x1ZGUgInRvcGxldi5oIgoKY3BwX3JlYWRlciAqcGFyc2VfaW47CQkvKiBEZWNs
YXJlZCBpbiBjLXByYWdtYS5oLiAgKi8KCi8qIFdlIGxldCB0bS5oIG92ZXJyaWRlIHRoZSB0
eXBlcyB1c2VkIGhlcmUsIHRvIGhhbmRsZSB0cml2aWFsIGRpZmZlcmVuY2VzCiAgIHN1Y2gg
YXMgdGhlIGNob2ljZSBvZiB1bnNpZ25lZCBpbnQgb3IgbG9uZyB1bnNpZ25lZCBpbnQgZm9y
IHNpemVfdC4KICAgV2hlbiBtYWNoaW5lcyBzdGFydCBuZWVkaW5nIG5vbnRyaXZpYWwgZGlm
ZmVyZW5jZXMgaW4gdGhlIHNpemUgdHlwZSwKICAgaXQgd291bGQgYmUgYmVzdCB0byBkbyBz
b21ldGhpbmcgaGVyZSB0byBmaWd1cmUgb3V0IGF1dG9tYXRpY2FsbHkKICAgZnJvbSBvdGhl
ciBpbmZvcm1hdGlvbiB3aGF0IHR5cGUgdG8gdXNlLiAgKi8KCiNpZm5kZWYgU0laRV9UWVBF
CiNkZWZpbmUgU0laRV9UWVBFICJsb25nIHVuc2lnbmVkIGludCIKI2VuZGlmCgojaWZuZGVm
IFdDSEFSX1RZUEUKI2RlZmluZSBXQ0hBUl9UWVBFICJpbnQiCiNlbmRpZgoKLyogV0NIQVJf
VFlQRSBnZXRzIG92ZXJyaWRkZW4gYnkgLWZzaG9ydC13Y2hhci4gICovCiNkZWZpbmUgTU9E
SUZJRURfV0NIQVJfVFlQRSBcCgkoZmxhZ19zaG9ydF93Y2hhciA/ICJzaG9ydCB1bnNpZ25l
ZCBpbnQiIDogV0NIQVJfVFlQRSkKCiNpZm5kZWYgUFRSRElGRl9UWVBFCiNkZWZpbmUgUFRS
RElGRl9UWVBFICJsb25nIGludCIKI2VuZGlmCgojaWZuZGVmIFdJTlRfVFlQRQojZGVmaW5l
IFdJTlRfVFlQRSAidW5zaWduZWQgaW50IgojZW5kaWYKCiNpZm5kZWYgSU5UTUFYX1RZUEUK
I2RlZmluZSBJTlRNQVhfVFlQRSAoKElOVF9UWVBFX1NJWkUgPT0gTE9OR19MT05HX1RZUEVf
U0laRSkJXAoJCSAgICAgPyAiaW50IgkJCQkJXAoJCSAgICAgOiAoKExPTkdfVFlQRV9TSVpF
ID09IExPTkdfTE9OR19UWVBFX1NJWkUpCVwKCQkJPyAibG9uZyBpbnQiCQkJCVwKCQkJOiAi
bG9uZyBsb25nIGludCIpKQojZW5kaWYKCiNpZm5kZWYgVUlOVE1BWF9UWVBFCiNkZWZpbmUg
VUlOVE1BWF9UWVBFICgoSU5UX1RZUEVfU0laRSA9PSBMT05HX0xPTkdfVFlQRV9TSVpFKQlc
CgkJICAgICA/ICJ1bnNpZ25lZCBpbnQiCQkJCVwKCQkgICAgIDogKChMT05HX1RZUEVfU0la
RSA9PSBMT05HX0xPTkdfVFlQRV9TSVpFKQlcCgkJCT8gImxvbmcgdW5zaWduZWQgaW50IgkJ
CVwKCQkJOiAibG9uZyBsb25nIHVuc2lnbmVkIGludCIpKQojZW5kaWYKCi8qIFRoZSBmb2xs
b3dpbmcgc3ltYm9scyBhcmUgc3Vic3VtZWQgaW4gdGhlIGNfZ2xvYmFsX3RyZWVzIGFycmF5
LCBhbmQKICAgbGlzdGVkIGhlcmUgaW5kaXZpZHVhbGx5IGZvciBkb2N1bWVudGF0aW9uIHB1
cnBvc2VzLgoKICAgSU5URUdFUl9UWVBFIGFuZCBSRUFMX1RZUEUgbm9kZXMgZm9yIHRoZSBz
dGFuZGFyZCBkYXRhIHR5cGVzLgoKCXRyZWUgc2hvcnRfaW50ZWdlcl90eXBlX25vZGU7Cgl0
cmVlIGxvbmdfaW50ZWdlcl90eXBlX25vZGU7Cgl0cmVlIGxvbmdfbG9uZ19pbnRlZ2VyX3R5
cGVfbm9kZTsKCgl0cmVlIHNob3J0X3Vuc2lnbmVkX3R5cGVfbm9kZTsKCXRyZWUgbG9uZ191
bnNpZ25lZF90eXBlX25vZGU7Cgl0cmVlIGxvbmdfbG9uZ191bnNpZ25lZF90eXBlX25vZGU7
CgoJdHJlZSBib29sZWFuX3R5cGVfbm9kZTsKCXRyZWUgYm9vbGVhbl9mYWxzZV9ub2RlOwoJ
dHJlZSBib29sZWFuX3RydWVfbm9kZTsKCgl0cmVlIHB0cmRpZmZfdHlwZV9ub2RlOwoKCXRy
ZWUgdW5zaWduZWRfY2hhcl90eXBlX25vZGU7Cgl0cmVlIHNpZ25lZF9jaGFyX3R5cGVfbm9k
ZTsKCXRyZWUgd2NoYXJfdHlwZV9ub2RlOwoJdHJlZSBzaWduZWRfd2NoYXJfdHlwZV9ub2Rl
OwoJdHJlZSB1bnNpZ25lZF93Y2hhcl90eXBlX25vZGU7CgoJdHJlZSBmbG9hdF90eXBlX25v
ZGU7Cgl0cmVlIGRvdWJsZV90eXBlX25vZGU7Cgl0cmVlIGxvbmdfZG91YmxlX3R5cGVfbm9k
ZTsKCgl0cmVlIGNvbXBsZXhfaW50ZWdlcl90eXBlX25vZGU7Cgl0cmVlIGNvbXBsZXhfZmxv
YXRfdHlwZV9ub2RlOwoJdHJlZSBjb21wbGV4X2RvdWJsZV90eXBlX25vZGU7Cgl0cmVlIGNv
bXBsZXhfbG9uZ19kb3VibGVfdHlwZV9ub2RlOwoKCXRyZWUgaW50UUlfdHlwZV9ub2RlOwoJ
dHJlZSBpbnRISV90eXBlX25vZGU7Cgl0cmVlIGludFNJX3R5cGVfbm9kZTsKCXRyZWUgaW50
RElfdHlwZV9ub2RlOwoJdHJlZSBpbnRUSV90eXBlX25vZGU7CgoJdHJlZSB1bnNpZ25lZF9p
bnRRSV90eXBlX25vZGU7Cgl0cmVlIHVuc2lnbmVkX2ludEhJX3R5cGVfbm9kZTsKCXRyZWUg
dW5zaWduZWRfaW50U0lfdHlwZV9ub2RlOwoJdHJlZSB1bnNpZ25lZF9pbnRESV90eXBlX25v
ZGU7Cgl0cmVlIHVuc2lnbmVkX2ludFRJX3R5cGVfbm9kZTsKCgl0cmVlIHdpZGVzdF9pbnRl
Z2VyX2xpdGVyYWxfdHlwZV9ub2RlOwoJdHJlZSB3aWRlc3RfdW5zaWduZWRfbGl0ZXJhbF90
eXBlX25vZGU7CgogICBOb2RlcyBmb3IgdHlwZXMgYHZvaWQgKicgYW5kIGBjb25zdCB2b2lk
IConLgoKCXRyZWUgcHRyX3R5cGVfbm9kZSwgY29uc3RfcHRyX3R5cGVfbm9kZTsKCiAgIE5v
ZGVzIGZvciB0eXBlcyBgY2hhciAqJyBhbmQgYGNvbnN0IGNoYXIgKicuCgoJdHJlZSBzdHJp
bmdfdHlwZV9ub2RlLCBjb25zdF9zdHJpbmdfdHlwZV9ub2RlOwoKICAgVHlwZSBgY2hhcltT
T01FTlVNQkVSXScuCiAgIFVzZWQgd2hlbiBhbiBhcnJheSBvZiBjaGFyIGlzIG5lZWRlZCBh
bmQgdGhlIHNpemUgaXMgaXJyZWxldmFudC4KCgl0cmVlIGNoYXJfYXJyYXlfdHlwZV9ub2Rl
OwoKICAgVHlwZSBgaW50W1NPTUVOVU1CRVJdJyBvciBzb21ldGhpbmcgbGlrZSBpdC4KICAg
VXNlZCB3aGVuIGFuIGFycmF5IG9mIGludCBuZWVkZWQgYW5kIHRoZSBzaXplIGlzIGlycmVs
ZXZhbnQuCgoJdHJlZSBpbnRfYXJyYXlfdHlwZV9ub2RlOwoKICAgVHlwZSBgd2NoYXJfdFtT
T01FTlVNQkVSXScgb3Igc29tZXRoaW5nIGxpa2UgaXQuCiAgIFVzZWQgd2hlbiBhIHdpZGUg
c3RyaW5nIGxpdGVyYWwgaXMgY3JlYXRlZC4KCgl0cmVlIHdjaGFyX2FycmF5X3R5cGVfbm9k
ZTsKCiAgIFR5cGUgYGludCAoKScgLS0gdXNlZCBmb3IgaW1wbGljaXQgZGVjbGFyYXRpb24g
b2YgZnVuY3Rpb25zLgoKCXRyZWUgZGVmYXVsdF9mdW5jdGlvbl90eXBlOwoKICAgQSBWT0lE
X1RZUEUgbm9kZSwgcGFja2FnZWQgaW4gYSBUUkVFX0xJU1QuCgoJdHJlZSB2b2lkX2xpc3Rf
bm9kZTsKCiAgVGhlIGxhemlseSBjcmVhdGVkIFZBUl9ERUNMcyBmb3IgX19GVU5DVElPTl9f
LCBfX1BSRVRUWV9GVU5DVElPTl9fLAogIGFuZCBfX2Z1bmNfXy4gKEMgZG9lc24ndCBnZW5l
cmF0ZSBfX0ZVTkNUSU9OX18gYW5kX19QUkVUVFlfRlVOQ1RJT05fXwogIFZBUl9ERUNMUywg
YnV0IEMrKyBkb2VzLikKCgl0cmVlIGZ1bmN0aW9uX25hbWVfZGVjbF9ub2RlOwoJdHJlZSBw
cmV0dHlfZnVuY3Rpb25fbmFtZV9kZWNsX25vZGU7Cgl0cmVlIGM5OV9mdW5jdGlvbl9uYW1l
X2RlY2xfbm9kZTsKCiAgU3RhY2sgb2YgbmVzdGVkIGZ1bmN0aW9uIG5hbWUgVkFSX0RFQ0xz
LgoKCXRyZWUgc2F2ZWRfZnVuY3Rpb25fbmFtZV9kZWNsczsKCiovCgp0cmVlIGNfZ2xvYmFs
X3RyZWVzW0NUSV9NQVhdOwoKLyogVFJVRSBpZiBhIGNvZGUgcmVwcmVzZW50cyBhIHN0YXRl
bWVudC4gIFRoZSBmcm9udCBlbmQgaW5pdAogICBsYW5naG9vayBzaG91bGQgdGFrZSBjYXJl
IG9mIGluaXRpYWxpemF0aW9uIG9mIHRoaXMgYXJyYXkuICAqLwoKYm9vbCBzdGF0ZW1lbnRf
Y29kZV9wW01BWF9UUkVFX0NPREVTXTsKCi8qIE5vbnplcm8gaWYgd2UgY2FuIHJlYWQgYSBQ
Q0ggZmlsZSBub3cuICAqLwoKaW50IGFsbG93X3BjaCA9IDE7CgwKLyogU3dpdGNoZXMgY29t
bW9uIHRvIHRoZSBDIGZyb250IGVuZHMuICAqLwoKLyogTm9uemVybyBpZiBwcmVwcmVwcm9j
ZXNzaW5nIG9ubHkuICAqLwoKaW50IGZsYWdfcHJlcHJvY2Vzc19vbmx5OwoKLyogTm9uemVy
byBtZWFucyBkb24ndCBvdXRwdXQgbGluZSBudW1iZXIgaW5mb3JtYXRpb24uICAqLwoKY2hh
ciBmbGFnX25vX2xpbmVfY29tbWFuZHM7CgovKiBOb256ZXJvIGNhdXNlcyAtRSBvdXRwdXQg
bm90IHRvIGJlIGRvbmUsIGJ1dCBkaXJlY3RpdmVzIHN1Y2ggYXMKICAgI2RlZmluZSB0aGF0
IGhhdmUgc2lkZSBlZmZlY3RzIGFyZSBzdGlsbCBvYmV5ZWQuICAqLwoKY2hhciBmbGFnX25v
X291dHB1dDsKCi8qIE5vbnplcm8gbWVhbnMgZHVtcCBtYWNyb3MgaW4gc29tZSBmYXNoaW9u
LiAgKi8KCmNoYXIgZmxhZ19kdW1wX21hY3JvczsKCi8qIE5vbnplcm8gbWVhbnMgcGFzcyAj
aW5jbHVkZSBsaW5lcyB0aHJvdWdoIHRvIHRoZSBvdXRwdXQuICAqLwoKY2hhciBmbGFnX2R1
bXBfaW5jbHVkZXM7CgovKiBUaGUgZmlsZSBuYW1lIHRvIHdoaWNoIHdlIHNob3VsZCB3cml0
ZSBhIHByZWNvbXBpbGVkIGhlYWRlciwgb3IKICAgTlVMTCBpZiBubyBoZWFkZXIgd2lsbCBi
ZSB3cml0dGVuIGluIHRoaXMgY29tcGlsZS4gICovCgpjb25zdCBjaGFyICpwY2hfZmlsZTsK
Ci8qIE5vbnplcm8gaWYgYW4gSVNPIHN0YW5kYXJkIHdhcyBzZWxlY3RlZC4gIEl0IHJlamVj
dHMgbWFjcm9zIGluIHRoZQogICB1c2VyJ3MgbmFtZXNwYWNlLiAgKi8KaW50IGZsYWdfaXNv
OwoKLyogTm9uemVybyBpZiAtdW5kZWYgd2FzIGdpdmVuLiAgSXQgc3VwcHJlc3NlcyB0YXJn
ZXQgYnVpbHQtaW4gbWFjcm9zCiAgIGFuZCBhc3NlcnRpb25zLiAgKi8KaW50IGZsYWdfdW5k
ZWY7CgovKiBOb256ZXJvIG1lYW5zIGRvbid0IHJlY29nbml6ZSB0aGUgbm9uLUFOU0kgYnVp
bHRpbiBmdW5jdGlvbnMuICAqLwoKaW50IGZsYWdfbm9fYnVpbHRpbjsKCi8qIE5vbnplcm8g
bWVhbnMgZG9uJ3QgcmVjb2duaXplIHRoZSBub24tQU5TSSBidWlsdGluIGZ1bmN0aW9ucy4K
ICAgLWFuc2kgc2V0cyB0aGlzLiAgKi8KCmludCBmbGFnX25vX25vbmFuc2lfYnVpbHRpbjsK
Ci8qIE5vbnplcm8gbWVhbnMgZ2l2ZSBgZG91YmxlJyB0aGUgc2FtZSBzaXplIGFzIGBmbG9h
dCcuICAqLwoKaW50IGZsYWdfc2hvcnRfZG91YmxlOwoKLyogTm9uemVybyBtZWFucyBnaXZl
IGB3Y2hhcl90JyB0aGUgc2FtZSBzaXplIGFzIGBzaG9ydCcuICAqLwoKaW50IGZsYWdfc2hv
cnRfd2NoYXI7CgovKiBOb256ZXJvIG1lYW5zIGFsbG93IE1pY3Jvc29mdCBleHRlbnNpb25z
IHdpdGhvdXQgd2FybmluZ3Mgb3IgZXJyb3JzLiAgKi8KaW50IGZsYWdfbXNfZXh0ZW5zaW9u
czsKCi8qIE5vbnplcm8gbWVhbnMgZG9uJ3QgcmVjb2duaXplIHRoZSBrZXl3b3JkIGBhc20n
LiAgKi8KCmludCBmbGFnX25vX2FzbTsKCi8qIE5vbnplcm8gbWVhbnMgZ2l2ZSBzdHJpbmcg
Y29uc3RhbnRzIHRoZSB0eXBlIGBjb25zdCBjaGFyIConLCBhcyBtYW5kYXRlZAogICBieSB0
aGUgc3RhbmRhcmQuICAqLwoKaW50IGZsYWdfY29uc3Rfc3RyaW5nczsKCi8qIE5vbnplcm8g
bWVhbnMgdG8gdHJlYXQgYml0ZmllbGRzIGFzIHNpZ25lZCB1bmxlc3MgdGhleSBzYXkgYHVu
c2lnbmVkJy4gICovCgppbnQgZmxhZ19zaWduZWRfYml0ZmllbGRzID0gMTsKaW50IGV4cGxp
Y2l0X2ZsYWdfc2lnbmVkX2JpdGZpZWxkczsKCi8qIE5vbnplcm8gbWVhbnMgd2FybiBhYm91
dCBwb2ludGVyIGNhc3RzIHRoYXQgY2FuIGRyb3AgYSB0eXBlIHF1YWxpZmllcgogICBmcm9t
IHRoZSBwb2ludGVyIHRhcmdldCB0eXBlLiAgKi8KCmludCB3YXJuX2Nhc3RfcXVhbDsKCi8q
IFdhcm4gYWJvdXQgZnVuY3Rpb25zIHdoaWNoIG1pZ2h0IGJlIGNhbmRpZGF0ZXMgZm9yIGZv
cm1hdCBhdHRyaWJ1dGVzLiAgKi8KCmludCB3YXJuX21pc3NpbmdfZm9ybWF0X2F0dHJpYnV0
ZTsKCi8qIE5vbnplcm8gbWVhbnMgd2FybiBhYm91dCBzaXplb2YoZnVuY3Rpb24pIG9yIGFk
ZGl0aW9uL3N1YnRyYWN0aW9uCiAgIG9mIGZ1bmN0aW9uIHBvaW50ZXJzLiAgKi8KCmludCB3
YXJuX3BvaW50ZXJfYXJpdGg7CgovKiBOb256ZXJvIG1lYW5zIHdhcm4gZm9yIGFueSBnbG9i
YWwgZnVuY3Rpb24gZGVmCiAgIHdpdGhvdXQgc2VwYXJhdGUgcHJldmlvdXMgcHJvdG90eXBl
IGRlY2wuICAqLwoKaW50IHdhcm5fbWlzc2luZ19wcm90b3R5cGVzOwoKLyogV2FybiBpZiBh
ZGRpbmcgKCkgaXMgc3VnZ2VzdGVkLiAgKi8KCmludCB3YXJuX3BhcmVudGhlc2VzOwoKLyog
V2FybiBpZiBpbml0aWFsaXplciBpcyBub3QgY29tcGxldGVseSBicmFja2V0ZWQuICAqLwoK
aW50IHdhcm5fbWlzc2luZ19icmFjZXM7CgovKiBXYXJuIGFib3V0IGNvbXBhcmlzb24gb2Yg
c2lnbmVkIGFuZCB1bnNpZ25lZCB2YWx1ZXMuCiAgIElmIC0xLCBuZWl0aGVyIC1Xc2lnbi1j
b21wYXJlIG5vciAtV25vLXNpZ24tY29tcGFyZSBoYXMgYmVlbiBzcGVjaWZpZWQKICAgKGlu
IHdoaWNoIGNhc2UgLVdleHRyYSBnZXRzIHRvIGRlY2lkZSkuICAqLwoKaW50IHdhcm5fc2ln
bl9jb21wYXJlID0gLTE7CgovKiBOb256ZXJvIG1lYW5zIHdhcm4gYWJvdXQgdXNhZ2Ugb2Yg
bG9uZyBsb25nIHdoZW4gYC1wZWRhbnRpYycuICAqLwoKaW50IHdhcm5fbG9uZ19sb25nID0g
MTsKCi8qIE5vbnplcm8gbWVhbnMgd2FybiBhYm91dCBkZXByZWNhdGVkIGNvbnZlcnNpb24g
ZnJvbSBzdHJpbmcgY29uc3RhbnQgdG8KICAgYGNoYXIgKicuICAqLwoKaW50IHdhcm5fd3Jp
dGVfc3RyaW5nczsKCi8qIE5vbnplcm8gbWVhbnMgd2FybiBhYm91dCBtdWx0aXBsZSAocmVk
dW5kYW50KSBkZWNscyBmb3IgdGhlIHNhbWUgc2luZ2xlCiAgIHZhcmlhYmxlIG9yIGZ1bmN0
aW9uLiAgKi8KCmludCB3YXJuX3JlZHVuZGFudF9kZWNsczsKCi8qIFdhcm4gYWJvdXQgdGVz
dGluZyBlcXVhbGl0eSBvZiBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAgKi8KCmludCB3YXJu
X2Zsb2F0X2VxdWFsOwoKLyogV2FybiBhYm91dCBhIHN1YnNjcmlwdCB0aGF0IGhhcyB0eXBl
IGNoYXIuICAqLwoKaW50IHdhcm5fY2hhcl9zdWJzY3JpcHRzOwoKLyogV2FybiBpZiBhIHR5
cGUgY29udmVyc2lvbiBpcyBkb25lIHRoYXQgbWlnaHQgaGF2ZSBjb25mdXNpbmcgcmVzdWx0
cy4gICovCgppbnQgd2Fybl9jb252ZXJzaW9uOwoKLyogV2FybiBhYm91dCAjcHJhZ21hIGRp
cmVjdGl2ZXMgdGhhdCBhcmUgbm90IHJlY29nbml6ZWQuICAqLwoKaW50IHdhcm5fdW5rbm93
bl9wcmFnbWFzOyAvKiBUcmkgc3RhdGUgdmFyaWFibGUuICAqLwoKLyogV2FybiBhYm91dCBm
b3JtYXQvYXJndW1lbnQgYW5vbWFsaWVzIGluIGNhbGxzIHRvIGZvcm1hdHRlZCBJL08gZnVu
Y3Rpb25zCiAgICgqcHJpbnRmLCAqc2NhbmYsIHN0cmZ0aW1lLCBzdHJmbW9uLCBldGMuKS4g
ICovCgppbnQgd2Fybl9mb3JtYXQ7CgovKiBXYXJuIGFib3V0IFkySyBwcm9ibGVtcyB3aXRo
IHN0cmZ0aW1lIGZvcm1hdHMuICAqLwoKaW50IHdhcm5fZm9ybWF0X3kyazsKCi8qIFdhcm4g
YWJvdXQgZXhjZXNzIGFyZ3VtZW50cyB0byBmb3JtYXRzLiAgKi8KCmludCB3YXJuX2Zvcm1h
dF9leHRyYV9hcmdzOwoKLyogV2FybiBhYm91dCB6ZXJvLWxlbmd0aCBmb3JtYXRzLiAgKi8K
CmludCB3YXJuX2Zvcm1hdF96ZXJvX2xlbmd0aDsKCi8qIFdhcm4gYWJvdXQgbm9uLWxpdGVy
YWwgZm9ybWF0IGFyZ3VtZW50cy4gICovCgppbnQgd2Fybl9mb3JtYXRfbm9ubGl0ZXJhbDsK
Ci8qIFdhcm4gYWJvdXQgcG9zc2libGUgc2VjdXJpdHkgcHJvYmxlbXMgd2l0aCBjYWxscyB0
byBmb3JtYXQgZnVuY3Rpb25zLiAgKi8KCmludCB3YXJuX2Zvcm1hdF9zZWN1cml0eTsKCgov
KiBDL09iakMgbGFuZ3VhZ2Ugb3B0aW9uIHZhcmlhYmxlcy4gICovCgoKLyogTm9uemVybyBt
ZWFucyBtZXNzYWdlIGFib3V0IHVzZSBvZiBpbXBsaWNpdCBmdW5jdGlvbiBkZWNsYXJhdGlv
bnM7CiAxIG1lYW5zIHdhcm5pbmc7IDIgbWVhbnMgZXJyb3IuICAqLwoKaW50IG1lc2dfaW1w
bGljaXRfZnVuY3Rpb25fZGVjbGFyYXRpb24gPSAtMTsKCi8qIE5vbnplcm8gbWVhbnMgYWxs
b3cgdHlwZSBtaXNtYXRjaGVzIGluIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25zOwogICBqdXN0
IG1ha2UgdGhlaXIgdmFsdWVzIGB2b2lkJy4gICovCgppbnQgZmxhZ19jb25kX21pc21hdGNo
OwoKLyogTm9uemVybyBtZWFucyBlbmFibGUgQzg5IEFtZW5kbWVudCAxIGZlYXR1cmVzLiAg
Ki8KCmludCBmbGFnX2lzb2M5NDsKCi8qIE5vbnplcm8gbWVhbnMgdXNlIHRoZSBJU08gQzk5
IGRpYWxlY3Qgb2YgQy4gICovCgppbnQgZmxhZ19pc29jOTk7CgovKiBOb256ZXJvIG1lYW5z
IHRoYXQgd2UgaGF2ZSBidWlsdGluIGZ1bmN0aW9ucywgYW5kIG1haW4gaXMgYW4gaW50ICov
CgppbnQgZmxhZ19ob3N0ZWQgPSAxOwoKLyogTm9uemVybyBtZWFucyBhZGQgZGVmYXVsdCBm
b3JtYXRfYXJnIGF0dHJpYnV0ZXMgZm9yIGZ1bmN0aW9ucyBub3QKICAgaW4gSVNPIEMuICAq
LwoKaW50IGZsYWdfbm9uaXNvX2RlZmF1bHRfZm9ybWF0X2F0dHJpYnV0ZXMgPSAxOwoKLyog
Tm9uemVybyBtZWFucyB3YXJuIHdoZW4gY2FzdGluZyBhIGZ1bmN0aW9uIGNhbGwgdG8gYSB0
eXBlIHRoYXQgZG9lcwogICBub3QgbWF0Y2ggdGhlIHJldHVybiB0eXBlIChlLmcuIChmbG9h
dClzcXJ0KCkgb3IgKGFueXRoaW5nKiltYWxsb2MoKQogICB3aGVuIHRoZXJlIGlzIG5vIHBy
ZXZpb3VzIGRlY2xhcmF0aW9uIG9mIHNxcnQgb3IgbWFsbG9jLiAgKi8KCmludCB3YXJuX2Jh
ZF9mdW5jdGlvbl9jYXN0OwoKLyogV2FybiBhYm91dCB0cmFkaXRpb25hbCBjb25zdHJ1Y3Rz
IHdob3NlIG1lYW5pbmdzIGNoYW5nZWQgaW4gQU5TSSBDLiAgKi8KCmludCB3YXJuX3RyYWRp
dGlvbmFsOwoKLyogTm9uemVybyBtZWFucyB3YXJuIGZvciBub24tcHJvdG90eXBlIGZ1bmN0
aW9uIGRlY2xzCiAgIG9yIG5vbi1wcm90b3R5cGVkIGRlZnMgd2l0aG91dCBwcmV2aW91cyBw
cm90b3R5cGUuICAqLwoKaW50IHdhcm5fc3RyaWN0X3Byb3RvdHlwZXM7CgovKiBOb256ZXJv
IG1lYW5zIHdhcm4gZm9yIGFueSBnbG9iYWwgZnVuY3Rpb24gZGVmCiAgIHdpdGhvdXQgc2Vw
YXJhdGUgcHJldmlvdXMgZGVjbC4gICovCgppbnQgd2Fybl9taXNzaW5nX2RlY2xhcmF0aW9u
czsKCi8qIE5vbnplcm8gbWVhbnMgd2FybiBhYm91dCBkZWNsYXJhdGlvbnMgb2Ygb2JqZWN0
cyBub3QgYXQKICAgZmlsZS1zY29wZSBsZXZlbCBhbmQgYWJvdXQgKmFsbCogZGVjbGFyYXRp
b25zIG9mIGZ1bmN0aW9ucyAod2hldGhlcgogICBvciBzdGF0aWMpIG5vdCBhdCBmaWxlLXNj
b3BlIGxldmVsLiAgTm90ZSB0aGF0IHdlIGV4Y2x1ZGUKICAgaW1wbGljaXQgZnVuY3Rpb24g
ZGVjbGFyYXRpb25zLiAgVG8gZ2V0IHdhcm5pbmdzIGFib3V0IHRob3NlLCB1c2UKICAgLVdp
bXBsaWNpdC4gICovCgppbnQgd2Fybl9uZXN0ZWRfZXh0ZXJuczsKCi8qIFdhcm4gaWYgbWFp
biBpcyBzdXNwaWNpb3VzLiAgKi8KCmludCB3YXJuX21haW47CgovKiBOb256ZXJvIG1lYW5z
IHdhcm4gYWJvdXQgcG9zc2libGUgdmlvbGF0aW9ucyBvZiBzZXF1ZW5jZSBwb2ludCBydWxl
cy4gICovCgppbnQgd2Fybl9zZXF1ZW5jZV9wb2ludDsKCi8qIE5vbnplcm8gbWVhbnMgdG8g
d2FybiBhYm91dCBjb21waWxlLXRpbWUgZGl2aXNpb24gYnkgemVyby4gICovCmludCB3YXJu
X2Rpdl9ieV96ZXJvID0gMTsKCi8qIE5vbnplcm8gbWVhbnMgd2FybiBhYm91dCB1c2Ugb2Yg
aW1wbGljaXQgaW50LiAgKi8KCmludCB3YXJuX2ltcGxpY2l0X2ludDsKCi8qIFdhcm4gYWJv
dXQgTlVMTCBiZWluZyBwYXNzZWQgdG8gYXJndW1lbnQgc2xvdHMgbWFya2VkIGFzIHJlcXVp
cmluZwogICBub24tTlVMTC4gICovCgppbnQgd2Fybl9ub25udWxsOwoKCi8qIE9iakMgbGFu
Z3VhZ2Ugb3B0aW9uIHZhcmlhYmxlcy4gICovCgoKLyogT3BlbiBhbmQgY2xvc2UgdGhlIGZp
bGUgZm9yIG91dHB1dHRpbmcgY2xhc3MgZGVjbGFyYXRpb25zLCBpZgogICByZXF1ZXN0ZWQg
KE9iakMpLiAgKi8KCmludCBmbGFnX2dlbl9kZWNsYXJhdGlvbjsKCi8qIEdlbmVyYXRlIGNv
ZGUgZm9yIEdOVSBvciBOZVhUIHJ1bnRpbWUgZW52aXJvbm1lbnQuICAqLwoKI2lmZGVmIE5F
WFRfT0JKQ19SVU5USU1FCmludCBmbGFnX25leHRfcnVudGltZSA9IDE7CiNlbHNlCmludCBm
bGFnX25leHRfcnVudGltZSA9IDA7CiNlbmRpZgoKLyogVGVsbHMgdGhlIGNvbXBpbGVyIHRo
YXQgdGhpcyBpcyBhIHNwZWNpYWwgcnVuLiAgRG8gbm90IHBlcmZvcm0gYW55CiAgIGNvbXBp
bGluZywgaW5zdGVhZCB3ZSBhcmUgdG8gdGVzdCBzb21lIHBsYXRmb3JtIGRlcGVuZGVudCBm
ZWF0dXJlcwogICBhbmQgb3V0cHV0IGEgQyBoZWFkZXIgZmlsZSB3aXRoIGFwcHJvcHJpYXRl
IGRlZmluaXRpb25zLiAgKi8KCmludCBwcmludF9zdHJ1Y3RfdmFsdWVzOwoKLyogPz8/LiAg
VW5kb2N1bWVudGVkLiAgKi8KCmNvbnN0IGNoYXIgKmNvbnN0YW50X3N0cmluZ19jbGFzc19u
YW1lOwoKLyogV2FybiBpZiBtdWx0aXBsZSBtZXRob2RzIGFyZSBzZWVuIGZvciB0aGUgc2Ft
ZSBzZWxlY3RvciwgYnV0IHdpdGgKICAgZGlmZmVyZW50IGFyZ3VtZW50IHR5cGVzLiAgUGVy
Zm9ybXMgdGhlIGNoZWNrIG9uIHRoZSB3aG9sZSBzZWxlY3RvcgogICB0YWJsZSBhdCB0aGUg
ZW5kIG9mIGNvbXBpbGF0aW9uLiAgKi8KCmludCB3YXJuX3NlbGVjdG9yOwoKLyogV2FybiBp
ZiBhIEBzZWxlY3RvcigpIGlzIGZvdW5kLCBhbmQgbm8gbWV0aG9kIHdpdGggdGhhdCBzZWxl
Y3RvcgogICBoYXMgYmVlbiBwcmV2aW91c2x5IGRlY2xhcmVkLiAgVGhlIGNoZWNrIGlzIGRv
bmUgb24gZWFjaAogICBAc2VsZWN0b3IoKSBhcyBzb29uIGFzIGl0IGlzIGZvdW5kIC0gc28g
aXQgd2FybnMgYWJvdXQgZm9yd2FyZAogICBkZWNsYXJhdGlvbnMuICAqLwoKaW50IHdhcm5f
dW5kZWNsYXJlZF9zZWxlY3RvcjsKCi8qIFdhcm4gaWYgbWV0aG9kcyByZXF1aXJlZCBieSBh
IHByb3RvY29sIGFyZSBub3QgaW1wbGVtZW50ZWQgaW4gdGhlCiAgIGNsYXNzIGFkb3B0aW5n
IGl0LiAgV2hlbiB0dXJuZWQgb2ZmLCBtZXRob2RzIGluaGVyaXRlZCB0byB0aGF0CiAgIGNs
YXNzIGFyZSBhbHNvIGNvbnNpZGVyZWQgaW1wbGVtZW50ZWQuICAqLwoKaW50IHdhcm5fcHJv
dG9jb2wgPSAxOwoKCi8qIEMrKyBsYW5ndWFnZSBvcHRpb24gdmFyaWFibGVzLiAgKi8KCgov
KiBOb256ZXJvIG1lYW5zIGRvbid0IHJlY29nbml6ZSBhbnkgZXh0ZW5zaW9uIGtleXdvcmRz
LiAgKi8KCmludCBmbGFnX25vX2dudV9rZXl3b3JkczsKCi8qIE5vbnplcm8gbWVhbnMgZG8g
ZW1pdCBleHBvcnRlZCBpbXBsZW1lbnRhdGlvbnMgb2YgZnVuY3Rpb25zIGV2ZW4gaWYKICAg
dGhleSBjYW4gYmUgaW5saW5lZC4gICovCgppbnQgZmxhZ19pbXBsZW1lbnRfaW5saW5lcyA9
IDE7CgovKiBOb256ZXJvIG1lYW5zIGRvIGVtaXQgZXhwb3J0ZWQgaW1wbGVtZW50YXRpb25z
IG9mIHRlbXBsYXRlcywgaW5zdGVhZCBvZgogICBtdWx0aXBsZSBzdGF0aWMgY29waWVzIGlu
IGVhY2ggZmlsZSB0aGF0IG5lZWRzIGEgZGVmaW5pdGlvbi4gICovCgppbnQgZmxhZ19leHRl
cm5hbF90ZW1wbGF0ZXM7CgovKiBOb256ZXJvIG1lYW5zIHRoYXQgdGhlIGRlY2lzaW9uIHRv
IGVtaXQgb3Igbm90IGVtaXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIGEKICAgdGVtcGxhdGUg
ZGVwZW5kcyBvbiB3aGVyZSB0aGUgdGVtcGxhdGUgaXMgaW5zdGFudGlhdGVkLCByYXRoZXIg
dGhhbiB3aGVyZQogICBpdCBpcyBkZWZpbmVkLiAgKi8KCmludCBmbGFnX2FsdF9leHRlcm5h
bF90ZW1wbGF0ZXM7CgovKiBOb256ZXJvIG1lYW5zIHRoYXQgaW1wbGljaXQgaW5zdGFudGlh
dGlvbnMgd2lsbCBiZSBlbWl0dGVkIGlmIG5lZWRlZC4gICovCgppbnQgZmxhZ19pbXBsaWNp
dF90ZW1wbGF0ZXMgPSAxOwoKLyogTm9uemVybyBtZWFucyB0aGF0IGltcGxpY2l0IGluc3Rh
bnRpYXRpb25zIG9mIGlubGluZSB0ZW1wbGF0ZXMgd2lsbCBiZQogICBlbWl0dGVkIGlmIG5l
ZWRlZCwgZXZlbiBpZiBpbnN0YW50aWF0aW9ucyBvZiBub24taW5saW5lIHRlbXBsYXRlcwog
ICBhcmVuJ3QuICAqLwoKaW50IGZsYWdfaW1wbGljaXRfaW5saW5lX3RlbXBsYXRlcyA9IDE7
CgovKiBOb256ZXJvIG1lYW5zIGdlbmVyYXRlIHNlcGFyYXRlIGluc3RhbnRpYXRpb24gY29u
dHJvbCBmaWxlcyBhbmQKICAganVnZ2xlIHRoZW0gYXQgbGluayB0aW1lLiAgKi8KCmludCBm
bGFnX3VzZV9yZXBvc2l0b3J5OwoKLyogTm9uemVybyBpZiB3ZSB3YW50IHRvIGlzc3VlIGRp
YWdub3N0aWNzIHRoYXQgdGhlIHN0YW5kYXJkIHNheXMgYXJlIG5vdAogICByZXF1aXJlZC4g
ICovCgppbnQgZmxhZ19vcHRpb25hbF9kaWFncyA9IDE7CgovKiBOb256ZXJvIG1lYW5zIHdl
IHNob3VsZCBhdHRlbXB0IHRvIGVsaWRlIGNvbnN0cnVjdG9ycyB3aGVuIHBvc3NpYmxlLiAg
Ki8KCmludCBmbGFnX2VsaWRlX2NvbnN0cnVjdG9ycyA9IDE7CgovKiBOb256ZXJvIG1lYW5z
IHRoYXQgbWVtYmVyIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGNsYXNzIHNjb3BlIGFyZQogICBp
bmxpbmUgYnkgZGVmYXVsdC4gICovCgppbnQgZmxhZ19kZWZhdWx0X2lubGluZSA9IDE7Cgov
KiBDb250cm9scyB3aGV0aGVyIGNvbXBpbGVyIGdlbmVyYXRlcyAndHlwZSBkZXNjcmlwdG9y
JyB0aGF0IGdpdmUKICAgcnVuLXRpbWUgdHlwZSBpbmZvcm1hdGlvbi4gICovCgppbnQgZmxh
Z19ydHRpID0gMTsKCi8qIE5vbnplcm8gaWYgd2Ugd2FudCB0byBjb25zZXJ2ZSBzcGFjZSBp
biB0aGUgLm8gZmlsZXMuICBXZSBkbyB0aGlzCiAgIGJ5IHB1dHRpbmcgdW5pbml0aWFsaXpl
ZCBkYXRhIGFuZCBydW50aW1lIGluaXRpYWxpemVkIGRhdGEgaW50bwogICAuY29tbW9uIGlu
c3RlYWQgb2YgLmRhdGEgYXQgdGhlIGV4cGVuc2Ugb2Ygbm90IGZsYWdnaW5nIG11bHRpcGxl
CiAgIGRlZmluaXRpb25zLiAgKi8KCmludCBmbGFnX2NvbnNlcnZlX3NwYWNlOwoKLyogTm9u
emVybyBpZiB3ZSB3YW50IHRvIG9iZXkgYWNjZXNzIGNvbnRyb2wgc2VtYW50aWNzLiAgKi8K
CmludCBmbGFnX2FjY2Vzc19jb250cm9sID0gMTsKCi8qIE5vbnplcm8gaWYgd2Ugd2FudCB0
byBjaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIG5ldyBhbmQgYXZvaWQgY2FsbGluZwogICBj
b25zdHJ1Y3RvcnMgaWYgaXQgaXMgYSBudWxsIHBvaW50ZXIuICAqLwoKaW50IGZsYWdfY2hl
Y2tfbmV3OwoKLyogTm9uemVybyBpZiB3ZSB3YW50IHRoZSBuZXcgSVNPIHJ1bGVzIGZvciBw
dXNoaW5nIGEgbmV3IHNjb3BlIGZvciBgZm9yJwogICBpbml0aWFsaXphdGlvbiB2YXJpYWJs
ZXMuCiAgIDA6IE9sZCBydWxlcywgc2V0IGJ5IC1mbm8tZm9yLXNjb3BlLgogICAyOiBOZXcg
SVNPIHJ1bGVzLCBzZXQgYnkgLWZmb3Itc2NvcGUuCiAgIDE6IFRyeSB0byBpbXBsZW1lbnQg
bmV3IElTTyBydWxlcywgYnV0IHdpdGggYmFja3VwIGNvbXBhdGliaWxpdHkKICAgKGFuZCB3
YXJuaW5ncykuICBUaGlzIGlzIHRoZSBkZWZhdWx0LCBmb3Igbm93LiAgKi8KCmludCBmbGFn
X25ld19mb3Jfc2NvcGUgPSAxOwoKLyogTm9uemVybyBpZiB3ZSB3YW50IHRvIGVtaXQgZGVm
aW5lZCBzeW1ib2xzIHdpdGggY29tbW9uLWxpa2UgbGlua2FnZSBhcwogICB3ZWFrIHN5bWJv
bHMgd2hlcmUgcG9zc2libGUsIGluIG9yZGVyIHRvIGNvbmZvcm0gdG8gQysrIHNlbWFudGlj
cy4KICAgT3RoZXJ3aXNlLCBlbWl0IHRoZW0gYXMgbG9jYWwgc3ltYm9scy4gICovCgppbnQg
ZmxhZ193ZWFrID0gMTsKCi8qIE5vbnplcm8gdG8gdXNlIF9fY3hhX2F0ZXhpdCwgcmF0aGVy
IHRoYW4gYXRleGl0LCB0byByZWdpc3RlcgogICBkZXN0cnVjdG9ycyBmb3IgbG9jYWwgc3Rh
dGljcyBhbmQgZ2xvYmFsIG9iamVjdHMuICAqLwoKaW50IGZsYWdfdXNlX2N4YV9hdGV4aXQg
PSBERUZBVUxUX1VTRV9DWEFfQVRFWElUOwoKLyogTm9uemVybyBtZWFucyBvdXRwdXQgLnZ0
YWJsZV97ZW50cnksaW5oZXJpdH0gZm9yIHVzZSBpbiBkb2luZyB2dGFibGUgZ2MuICAqLwoK
aW50IGZsYWdfdnRhYmxlX2djOwoKLyogTm9uemVybyBtZWFucyBtYWtlIHRoZSBkZWZhdWx0
IHBlZHdhcm5zIHdhcm5pbmdzIGluc3RlYWQgb2YgZXJyb3JzLgogICBUaGUgdmFsdWUgb2Yg
dGhpcyBmbGFnIGlzIGlnbm9yZWQgaWYgLXBlZGFudGljIGlzIHNwZWNpZmllZC4gICovCgpp
bnQgZmxhZ19wZXJtaXNzaXZlOwoKLyogTm9uemVybyBtZWFucyB0byBpbXBsZW1lbnQgc3Rh
bmRhcmQgc2VtYW50aWNzIGZvciBleGNlcHRpb24KICAgc3BlY2lmaWNhdGlvbnMsIGNhbGxp
bmcgdW5leHBlY3RlZCBpZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIHRoYXQKICAgZG9lc24n
dCBtYXRjaCB0aGUgc3BlY2lmaWNhdGlvbi4gIFplcm8gbWVhbnMgdG8gdHJlYXQgdGhlbSBh
cwogICBhc3NlcnRpb25zIGFuZCBvcHRpbWl6ZSBhY2NvcmRpbmdseSwgYnV0IG5vdCBjaGVj
ayB0aGVtLiAgKi8KCmludCBmbGFnX2VuZm9yY2VfZWhfc3BlY3MgPSAxOwoKLyogIFRoZSB2
ZXJzaW9uIG9mIHRoZSBDKysgQUJJIGluIHVzZS4gIFRoZSBmb2xsb3dpbmcgdmFsdWVzIGFy
ZQogICAgYWxsb3dlZDoKCiAgICAwOiBUaGUgdmVyc2lvbiBvZiB0aGUgQUJJIGJlbGlldmVk
IG1vc3QgY29uZm9ybWFudCB3aXRoIHRoZQogICAgICAgQysrIEFCSSBzcGVjaWZpY2F0aW9u
LiAgVGhpcyBBQkkgbWF5IGNoYW5nZSBhcyBidWdzIGFyZQogICAgICAgZGlzY292ZXJlZCBh
bmQgZml4ZWQuICBUaGVyZWZvcmUsIDAgd2lsbCBub3QgbmVjZXNzYXJpbHkKICAgICAgIGlu
ZGljYXRlIHRoZSBzYW1lIEFCSSBpbiBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgRysrLgoKICAg
IDE6IFRoZSB2ZXJzaW9uIG9mIHRoZSBBQkkgZmlyc3QgdXNlZCBpbiBHKysgMy4yLgoKICAg
IEFkZGl0aW9uYWwgcG9zaXRpdmUgaW50ZWdlcnMgd2lsbCBiZSBhc3NpZ25lZCBhcyBuZXcg
dmVyc2lvbnMgb2YKICAgIHRoZSBBQkkgYmVjb21lIHRoZSBkZWZhdWx0IHZlcnNpb24gb2Yg
dGhlIEFCSS4gICovCgppbnQgZmxhZ19hYmlfdmVyc2lvbiA9IDE7CgovKiBOb256ZXJvIG1l
YW5zIHdhcm4gYWJvdXQgdGhpbmdzIHRoYXQgd2lsbCBjaGFuZ2Ugd2hlbiBjb21waWxpbmcK
ICAgd2l0aCBhbiBBQkktY29tcGxpYW50IGNvbXBpbGVyLiAgKi8KCmludCB3YXJuX2FiaSA9
IDA7CgovKiBOb256ZXJvIG1lYW5zIHdhcm4gYWJvdXQgaW52YWxpZCB1c2VzIG9mIG9mZnNl
dG9mLiAgKi8KCmludCB3YXJuX2ludmFsaWRfb2Zmc2V0b2YgPSAxOwoKLyogTm9uemVybyBt
ZWFucyB3YXJuIGFib3V0IGltcGxpY2l0IGRlY2xhcmF0aW9ucy4gICovCgppbnQgd2Fybl9p
bXBsaWNpdCA9IDE7CgovKiBOb256ZXJvIG1lYW5zIHdhcm4gd2hlbiBhbGwgY3RvcnMgb3Ig
ZHRvcnMgYXJlIHByaXZhdGUsIGFuZCB0aGUgY2xhc3MKICAgaGFzIG5vIGZyaWVuZHMuICAq
LwoKaW50IHdhcm5fY3Rvcl9kdG9yX3ByaXZhY3kgPSAwOwoKLyogTm9uemVybyBtZWFucyB3
YXJuIGluIGZ1bmN0aW9uIGRlY2xhcmVkIGluIGRlcml2ZWQgY2xhc3MgaGFzIHRoZQogICBz
YW1lIG5hbWUgYXMgYSB2aXJ0dWFsIGluIHRoZSBiYXNlIGNsYXNzLCBidXQgZmFpbHMgdG8g
bWF0Y2ggdGhlCiAgIHR5cGUgc2lnbmF0dXJlIG9mIGFueSB2aXJ0dWFsIGZ1bmN0aW9uIGlu
IHRoZSBiYXNlIGNsYXNzLiAgKi8KCmludCB3YXJuX292ZXJsb2FkZWRfdmlydHVhbDsKCi8q
IE5vbnplcm8gbWVhbnMgd2FybiB3aGVuIGRlY2xhcmluZyBhIGNsYXNzIHRoYXQgaGFzIGEg
bm9uIHZpcnR1YWwKICAgZGVzdHJ1Y3Rvciwgd2hlbiBpdCByZWFsbHkgb3VnaHQgdG8gaGF2
ZSBhIHZpcnR1YWwgb25lLiAgKi8KCmludCB3YXJuX25vbnZkdG9yOwoKLyogTm9uemVybyBt
ZWFucyB3YXJuIHdoZW4gdGhlIGNvbXBpbGVyIHdpbGwgcmVvcmRlciBjb2RlLiAgKi8KCmlu
dCB3YXJuX3Jlb3JkZXI7CgovKiBOb256ZXJvIG1lYW5zIHdhcm4gd2hlbiBzeW50aGVzaXMg
YmVoYXZpb3IgZGlmZmVycyBmcm9tIENmcm9udCdzLiAgKi8KCmludCB3YXJuX3N5bnRoOwoK
LyogTm9uemVybyBtZWFucyB3YXJuIHdoZW4gd2UgY29udmVydCBhIHBvaW50ZXIgdG8gbWVt
YmVyIGZ1bmN0aW9uCiAgIGludG8gYSBwb2ludGVyIHRvICh2b2lkIG9yIGZ1bmN0aW9uKS4g
ICovCgppbnQgd2Fybl9wbWYycHRyID0gMTsKCi8qIE5vbnplcm8gbWVhbnMgd2FybiBhYm91
dCB2aW9sYXRpb24gb2Ygc29tZSBFZmZlY3RpdmUgQysrIHN0eWxlIHJ1bGVzLiAgKi8KCmlu
dCB3YXJuX2VjcHA7CgovKiBOb256ZXJvIG1lYW5zIHdhcm4gd2hlcmUgb3ZlcmxvYWQgcmVz
b2x1dGlvbiBjaG9vc2VzIGEgcHJvbW90aW9uIGZyb20KICAgdW5zaWduZWQgdG8gc2lnbmVk
IG92ZXIgYSBjb252ZXJzaW9uIHRvIGFuIHVuc2lnbmVkIG9mIHRoZSBzYW1lIHNpemUuICAq
LwoKaW50IHdhcm5fc2lnbl9wcm9tbzsKCi8qIE5vbnplcm8gbWVhbnMgd2FybiB3aGVuIGFu
IG9sZC1zdHlsZSBjYXN0IGlzIHVzZWQuICAqLwoKaW50IHdhcm5fb2xkX3N0eWxlX2Nhc3Q7
CgovKiBOb256ZXJvIG1lYW5zIHdhcm4gd2hlbiBub24tdGVtcGxhdGl6ZWQgZnJpZW5kIGZ1
bmN0aW9ucyBhcmUKICAgZGVjbGFyZWQgd2l0aGluIGEgdGVtcGxhdGUgKi8KCmludCB3YXJu
X25vbnRlbXBsYXRlX2ZyaWVuZCA9IDE7CgovKiBOb256ZXJvIG1lYW5zIGNvbXBsYWluIGFi
b3V0IGRlcHJlY2F0ZWQgZmVhdHVyZXMuICAqLwoKaW50IHdhcm5fZGVwcmVjYXRlZCA9IDE7
CgovKiBNYXhpbXVtIHRlbXBsYXRlIGluc3RhbnRpYXRpb24gZGVwdGguICBUaGlzIGxpbWl0
IGlzIHJhdGhlcgogICBhcmJpdHJhcnksIGJ1dCBpdCBleGlzdHMgdG8gbGltaXQgdGhlIHRp
bWUgaXQgdGFrZXMgdG8gbm90aWNlCiAgIGluZmluaXRlIHRlbXBsYXRlIGluc3RhbnRpYXRp
b25zLiAgKi8KCmludCBtYXhfdGluc3RfZGVwdGggPSA1MDA7CgoKCi8qIFRoZSBlbGVtZW50
cyBvZiBgcmlkcG9pbnRlcnMnIGFyZSBpZGVudGlmaWVyIG5vZGVzIGZvciB0aGUgcmVzZXJ2
ZWQKICAgdHlwZSBuYW1lcyBhbmQgc3RvcmFnZSBjbGFzc2VzLiAgSXQgaXMgaW5kZXhlZCBi
eSBhIFJJRF8uLi4gdmFsdWUuICAqLwp0cmVlICpyaWRwb2ludGVyczsKCnRyZWUgKCptYWtl
X2ZuYW1lX2RlY2wpICh0cmVlLCBpbnQpOwoKLyogSWYgbm9uLU5VTEwsIHRoZSBhZGRyZXNz
IG9mIGEgbGFuZ3VhZ2Utc3BlY2lmaWMgZnVuY3Rpb24gdGhhdCB0YWtlcwogICBhbnkgYWN0
aW9uIHJlcXVpcmVkIHJpZ2h0IGJlZm9yZSBleHBhbmRfZnVuY3Rpb25fZW5kIGlzIGNhbGxl
ZC4gICovCnZvaWQgKCpsYW5nX2V4cGFuZF9mdW5jdGlvbl9lbmQpICh2b2lkKTsKCi8qIE5v
bnplcm8gbWVhbnMgdGhlIGV4cHJlc3Npb24gYmVpbmcgcGFyc2VkIHdpbGwgbmV2ZXIgYmUg
ZXZhbHVhdGVkLgogICBUaGlzIGlzIGEgY291bnQsIHNpbmNlIHVuZXZhbHVhdGVkIGV4cHJl
c3Npb25zIGNhbiBuZXN0LiAgKi8KaW50IHNraXBfZXZhbHVhdGlvbjsKCi8qIEluZm9ybWF0
aW9uIGFib3V0IGhvdyBhIGZ1bmN0aW9uIG5hbWUgaXMgZ2VuZXJhdGVkLiAgKi8Kc3RydWN0
IGZuYW1lX3Zhcl90CnsKICB0cmVlICpjb25zdCBkZWNsOwkvKiBwb2ludGVyIHRvIHRoZSBW
QVJfREVDTC4gICovCiAgY29uc3QgdW5zaWduZWQgcmlkOwkvKiBSSUQgbnVtYmVyIGZvciB0
aGUgaWRlbnRpZmllci4gICovCiAgY29uc3QgaW50IHByZXR0eTsJLyogSG93IHByZXR0eSBp
cyBpdD8gKi8KfTsKCi8qIFRoZSB0aHJlZSB3YXlzIG9mIGdldHRpbmcgdGhlbiBuYW1lIG9m
IHRoZSBjdXJyZW50IGZ1bmN0aW9uLiAgKi8KCmNvbnN0IHN0cnVjdCBmbmFtZV92YXJfdCBm
bmFtZV92YXJzW10gPQp7CiAgLyogQzk5IGNvbXBsaWFudCBfX2Z1bmNfXywgbXVzdCBiZSBm
aXJzdC4gICovCiAgeyZjOTlfZnVuY3Rpb25fbmFtZV9kZWNsX25vZGUsIFJJRF9DOTlfRlVO
Q1RJT05fTkFNRSwgMH0sCiAgLyogR0NDIF9fRlVOQ1RJT05fXyBjb21wbGlhbnQuICAqLwog
IHsmZnVuY3Rpb25fbmFtZV9kZWNsX25vZGUsIFJJRF9GVU5DVElPTl9OQU1FLCAwfSwKICAv
KiBHQ0MgX19QUkVUVFlfRlVOQ1RJT05fXyBjb21wbGlhbnQuICAqLwogIHsmcHJldHR5X2Z1
bmN0aW9uX25hbWVfZGVjbF9ub2RlLCBSSURfUFJFVFRZX0ZVTkNUSU9OX05BTUUsIDF9LAog
IHtOVUxMLCAwLCAwfSwKfTsKCnN0YXRpYyBpbnQgY29uc3RhbnRfZml0c190eXBlX3AgKHRy
ZWUsIHRyZWUpOwoKLyogS2VlcCBhIHN0YWNrIG9mIGlmIHN0YXRlbWVudHMuICBXZSByZWNv
cmQgdGhlIG51bWJlciBvZiBjb21wb3VuZAogICBzdGF0ZW1lbnRzIHNlZW4gdXAgdG8gdGhl
IGlmIGtleXdvcmQsIGFzIHdlbGwgYXMgdGhlIGxpbmUgbnVtYmVyCiAgIGFuZCBmaWxlIG9m
IHRoZSBpZi4gIElmIGEgcG90ZW50aWFsbHkgYW1iaWd1b3VzIGVsc2UgaXMgc2VlbiwgdGhh
dAogICBmYWN0IGlzIHJlY29yZGVkOyB0aGUgd2FybmluZyBpcyBpc3N1ZWQgd2hlbiB3ZSBj
YW4gYmUgc3VyZSB0aGF0CiAgIHRoZSBlbmNsb3NpbmcgaWYgc3RhdGVtZW50IGRvZXMgbm90
IGhhdmUgYW4gZWxzZSBicmFuY2guICAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IGNvbXBz
dG10X2NvdW50OwogIGxvY2F0aW9uX3QgbG9jdXM7CiAgaW50IG5lZWRzX3dhcm5pbmc7CiAg
dHJlZSBpZl9zdG10Owp9IGlmX2VsdDsKCnN0YXRpYyBpZl9lbHQgKmlmX3N0YWNrOwoKLyog
QW1vdW50IG9mIHNwYWNlIGluIHRoZSBpZiBzdGF0ZW1lbnQgc3RhY2suICAqLwpzdGF0aWMg
aW50IGlmX3N0YWNrX3NwYWNlID0gMDsKCi8qIFN0YWNrIHBvaW50ZXIuICAqLwpzdGF0aWMg
aW50IGlmX3N0YWNrX3BvaW50ZXIgPSAwOwoKc3RhdGljIHRyZWUgaGFuZGxlX3BhY2tlZF9h
dHRyaWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LCBib29sICopOwpzdGF0aWMgdHJl
ZSBoYW5kbGVfbm9jb21tb25fYXR0cmlidXRlICh0cmVlICosIHRyZWUsIHRyZWUsIGludCwg
Ym9vbCAqKTsKc3RhdGljIHRyZWUgaGFuZGxlX2NvbW1vbl9hdHRyaWJ1dGUgKHRyZWUgKiwg
dHJlZSwgdHJlZSwgaW50LCBib29sICopOwpzdGF0aWMgdHJlZSBoYW5kbGVfbm9yZXR1cm5f
YXR0cmlidXRlICh0cmVlICosIHRyZWUsIHRyZWUsIGludCwgYm9vbCAqKTsKc3RhdGljIHRy
ZWUgaGFuZGxlX25vaW5saW5lX2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVlLCB0cmVlLCBpbnQs
IGJvb2wgKik7CnN0YXRpYyB0cmVlIGhhbmRsZV9hbHdheXNfaW5saW5lX2F0dHJpYnV0ZSAo
dHJlZSAqLCB0cmVlLCB0cmVlLCBpbnQsCgkJCQkJICAgIGJvb2wgKik7CnN0YXRpYyB0cmVl
IGhhbmRsZV91c2VkX2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVlLCB0cmVlLCBpbnQsIGJvb2wg
Kik7CnN0YXRpYyB0cmVlIGhhbmRsZV91bnVzZWRfYXR0cmlidXRlICh0cmVlICosIHRyZWUs
IHRyZWUsIGludCwgYm9vbCAqKTsKc3RhdGljIHRyZWUgaGFuZGxlX2NvbnN0X2F0dHJpYnV0
ZSAodHJlZSAqLCB0cmVlLCB0cmVlLCBpbnQsIGJvb2wgKik7CnN0YXRpYyB0cmVlIGhhbmRs
ZV90cmFuc3BhcmVudF91bmlvbl9hdHRyaWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwKCQkJ
CQkJaW50LCBib29sICopOwpzdGF0aWMgdHJlZSBoYW5kbGVfY29uc3RydWN0b3JfYXR0cmli
dXRlICh0cmVlICosIHRyZWUsIHRyZWUsIGludCwgYm9vbCAqKTsKc3RhdGljIHRyZWUgaGFu
ZGxlX2Rlc3RydWN0b3JfYXR0cmlidXRlICh0cmVlICosIHRyZWUsIHRyZWUsIGludCwgYm9v
bCAqKTsKc3RhdGljIHRyZWUgaGFuZGxlX21vZGVfYXR0cmlidXRlICh0cmVlICosIHRyZWUs
IHRyZWUsIGludCwgYm9vbCAqKTsKc3RhdGljIHRyZWUgaGFuZGxlX3NlY3Rpb25fYXR0cmli
dXRlICh0cmVlICosIHRyZWUsIHRyZWUsIGludCwgYm9vbCAqKTsKc3RhdGljIHRyZWUgaGFu
ZGxlX2FsaWduZWRfYXR0cmlidXRlICh0cmVlICosIHRyZWUsIHRyZWUsIGludCwgYm9vbCAq
KTsKc3RhdGljIHRyZWUgaGFuZGxlX3dlYWtfYXR0cmlidXRlICh0cmVlICosIHRyZWUsIHRy
ZWUsIGludCwgYm9vbCAqKSA7CnN0YXRpYyB0cmVlIGhhbmRsZV9hbGlhc19hdHRyaWJ1dGUg
KHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LCBib29sICopOwpzdGF0aWMgdHJlZSBoYW5kbGVf
dmlzaWJpbGl0eV9hdHRyaWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LAoJCQkJCSBi
b29sICopOwpzdGF0aWMgdHJlZSBoYW5kbGVfdGxzX21vZGVsX2F0dHJpYnV0ZSAodHJlZSAq
LCB0cmVlLCB0cmVlLCBpbnQsCgkJCQkJYm9vbCAqKTsKc3RhdGljIHRyZWUgaGFuZGxlX25v
X2luc3RydW1lbnRfZnVuY3Rpb25fYXR0cmlidXRlICh0cmVlICosIHRyZWUsCgkJCQkJCSAg
ICAgdHJlZSwgaW50LCBib29sICopOwpzdGF0aWMgdHJlZSBoYW5kbGVfbWFsbG9jX2F0dHJp
YnV0ZSAodHJlZSAqLCB0cmVlLCB0cmVlLCBpbnQsIGJvb2wgKik7CnN0YXRpYyB0cmVlIGhh
bmRsZV9ub19saW1pdF9zdGFja19hdHRyaWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50
LAoJCQkJCSAgICAgYm9vbCAqKTsKc3RhdGljIHRyZWUgaGFuZGxlX3B1cmVfYXR0cmlidXRl
ICh0cmVlICosIHRyZWUsIHRyZWUsIGludCwgYm9vbCAqKTsKc3RhdGljIHRyZWUgaGFuZGxl
X2RlcHJlY2F0ZWRfYXR0cmlidXRlICh0cmVlICosIHRyZWUsIHRyZWUsIGludCwKCQkJCQkg
Ym9vbCAqKTsKc3RhdGljIHRyZWUgaGFuZGxlX3ZlY3Rvcl9zaXplX2F0dHJpYnV0ZSAodHJl
ZSAqLCB0cmVlLCB0cmVlLCBpbnQsCgkJCQkJICBib29sICopOwpzdGF0aWMgdHJlZSBoYW5k
bGVfbm9ubnVsbF9hdHRyaWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LCBib29sICop
OwpzdGF0aWMgdHJlZSBoYW5kbGVfbm90aHJvd19hdHRyaWJ1dGUgKHRyZWUgKiwgdHJlZSwg
dHJlZSwgaW50LCBib29sICopOwpzdGF0aWMgdHJlZSBoYW5kbGVfY2xlYW51cF9hdHRyaWJ1
dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LCBib29sICopOwpzdGF0aWMgdHJlZSB2ZWN0
b3Jfc2l6ZV9oZWxwZXIgKHRyZWUsIHRyZWUpOwoKc3RhdGljIHZvaWQgY2hlY2tfZnVuY3Rp
b25fbm9ubnVsbCAodHJlZSwgdHJlZSk7CnN0YXRpYyB2b2lkIGNoZWNrX25vbm51bGxfYXJn
ICh2b2lkICosIHRyZWUsIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQpOwpzdGF0aWMgYm9vbCBu
b25udWxsX2NoZWNrX3AgKHRyZWUsIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQpOwpzdGF0aWMg
Ym9vbCBnZXRfbm9ubnVsbF9vcGVyYW5kICh0cmVlLCB1bnNpZ25lZCBIT1NUX1dJREVfSU5U
ICopOwoKLyogVGFibGUgb2YgbWFjaGluZS1pbmRlcGVuZGVudCBhdHRyaWJ1dGVzIGNvbW1v
biB0byBhbGwgQy1saWtlIGxhbmd1YWdlcy4gICovCmNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVf
c3BlYyBjX2NvbW1vbl9hdHRyaWJ1dGVfdGFibGVbXSA9CnsKICAvKiB7IG5hbWUsIG1pbl9s
ZW4sIG1heF9sZW4sIGRlY2xfcmVxLCB0eXBlX3JlcSwgZm5fdHlwZV9yZXEsIGhhbmRsZXIg
fSAqLwogIHsgInBhY2tlZCIsICAgICAgICAgICAgICAgICAwLCAwLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLAoJCQkgICAgICBoYW5kbGVfcGFja2VkX2F0dHJpYnV0ZSB9LAogIHsgIm5vY29t
bW9uIiwgICAgICAgICAgICAgICAwLCAwLCB0cnVlLCAgZmFsc2UsIGZhbHNlLAoJCQkgICAg
ICBoYW5kbGVfbm9jb21tb25fYXR0cmlidXRlIH0sCiAgeyAiY29tbW9uIiwgICAgICAgICAg
ICAgICAgIDAsIDAsIHRydWUsICBmYWxzZSwgZmFsc2UsCgkJCSAgICAgIGhhbmRsZV9jb21t
b25fYXR0cmlidXRlIH0sCiAgLyogRklYTUU6IGxvZ2ljYWxseSwgbm9yZXR1cm4gYXR0cmli
dXRlcyBzaG91bGQgYmUgbGlzdGVkIGFzCiAgICAgImZhbHNlLCB0cnVlLCB0cnVlIiBhbmQg
YXBwbHkgdG8gZnVuY3Rpb24gdHlwZXMuICBCdXQgaW1wbGVtZW50aW5nIHRoaXMKICAgICB3
b3VsZCByZXF1aXJlIGFsbCB0aGUgcGxhY2VzIGluIHRoZSBjb21waWxlciB0aGF0IHVzZSBU
UkVFX1RISVNfVk9MQVRJTEUKICAgICBvbiBhIGRlY2wgdG8gaWRlbnRpZnkgbm9uLXJldHVy
bmluZyBmdW5jdGlvbnMgdG8gYmUgbG9jYXRlZCBhbmQgZml4ZWQKICAgICB0byBjaGVjayB0
aGUgZnVuY3Rpb24gdHlwZSBpbnN0ZWFkLiAgKi8KICB7ICJub3JldHVybiIsICAgICAgICAg
ICAgICAgMCwgMCwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwKCQkJICAgICAgaGFuZGxlX25vcmV0
dXJuX2F0dHJpYnV0ZSB9LAogIHsgInZvbGF0aWxlIiwgICAgICAgICAgICAgICAwLCAwLCB0
cnVlLCAgZmFsc2UsIGZhbHNlLAoJCQkgICAgICBoYW5kbGVfbm9yZXR1cm5fYXR0cmlidXRl
IH0sCiAgeyAibm9pbmxpbmUiLCAgICAgICAgICAgICAgIDAsIDAsIHRydWUsICBmYWxzZSwg
ZmFsc2UsCgkJCSAgICAgIGhhbmRsZV9ub2lubGluZV9hdHRyaWJ1dGUgfSwKICB7ICJhbHdh
eXNfaW5saW5lIiwgICAgICAgICAgMCwgMCwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwKCQkJICAg
ICAgaGFuZGxlX2Fsd2F5c19pbmxpbmVfYXR0cmlidXRlIH0sCiAgeyAidXNlZCIsICAgICAg
ICAgICAgICAgICAgIDAsIDAsIHRydWUsICBmYWxzZSwgZmFsc2UsCgkJCSAgICAgIGhhbmRs
ZV91c2VkX2F0dHJpYnV0ZSB9LAogIHsgInVudXNlZCIsICAgICAgICAgICAgICAgICAwLCAw
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLAoJCQkgICAgICBoYW5kbGVfdW51c2VkX2F0dHJpYnV0
ZSB9LAogIC8qIFRoZSBzYW1lIGNvbW1lbnRzIGFzIGZvciBub3JldHVybiBhdHRyaWJ1dGVz
IGFwcGx5IHRvIGNvbnN0IG9uZXMuICAqLwogIHsgImNvbnN0IiwgICAgICAgICAgICAgICAg
ICAwLCAwLCB0cnVlLCAgZmFsc2UsIGZhbHNlLAoJCQkgICAgICBoYW5kbGVfY29uc3RfYXR0
cmlidXRlIH0sCiAgeyAidHJhbnNwYXJlbnRfdW5pb24iLCAgICAgIDAsIDAsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsCgkJCSAgICAgIGhhbmRsZV90cmFuc3BhcmVudF91bmlvbl9hdHRyaWJ1
dGUgfSwKICB7ICJjb25zdHJ1Y3RvciIsICAgICAgICAgICAgMCwgMCwgdHJ1ZSwgIGZhbHNl
LCBmYWxzZSwKCQkJICAgICAgaGFuZGxlX2NvbnN0cnVjdG9yX2F0dHJpYnV0ZSB9LAogIHsg
ImRlc3RydWN0b3IiLCAgICAgICAgICAgICAwLCAwLCB0cnVlLCAgZmFsc2UsIGZhbHNlLAoJ
CQkgICAgICBoYW5kbGVfZGVzdHJ1Y3Rvcl9hdHRyaWJ1dGUgfSwKICB7ICJtb2RlIiwgICAg
ICAgICAgICAgICAgICAgMSwgMSwgZmFsc2UsICB0cnVlLCBmYWxzZSwKCQkJICAgICAgaGFu
ZGxlX21vZGVfYXR0cmlidXRlIH0sCiAgeyAic2VjdGlvbiIsICAgICAgICAgICAgICAgIDEs
IDEsIHRydWUsICBmYWxzZSwgZmFsc2UsCgkJCSAgICAgIGhhbmRsZV9zZWN0aW9uX2F0dHJp
YnV0ZSB9LAogIHsgImFsaWduZWQiLCAgICAgICAgICAgICAgICAwLCAxLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLAoJCQkgICAgICBoYW5kbGVfYWxpZ25lZF9hdHRyaWJ1dGUgfSwKICB7ICJ3
ZWFrIiwgICAgICAgICAgICAgICAgICAgMCwgMCwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwKCQkJ
ICAgICAgaGFuZGxlX3dlYWtfYXR0cmlidXRlIH0sCiAgeyAiYWxpYXMiLCAgICAgICAgICAg
ICAgICAgIDEsIDEsIHRydWUsICBmYWxzZSwgZmFsc2UsCgkJCSAgICAgIGhhbmRsZV9hbGlh
c19hdHRyaWJ1dGUgfSwKICB7ICJub19pbnN0cnVtZW50X2Z1bmN0aW9uIiwgMCwgMCwgdHJ1
ZSwgIGZhbHNlLCBmYWxzZSwKCQkJICAgICAgaGFuZGxlX25vX2luc3RydW1lbnRfZnVuY3Rp
b25fYXR0cmlidXRlIH0sCiAgeyAibWFsbG9jIiwgICAgICAgICAgICAgICAgIDAsIDAsIHRy
dWUsICBmYWxzZSwgZmFsc2UsCgkJCSAgICAgIGhhbmRsZV9tYWxsb2NfYXR0cmlidXRlIH0s
CiAgeyAibm9fc3RhY2tfbGltaXQiLCAgICAgICAgIDAsIDAsIHRydWUsICBmYWxzZSwgZmFs
c2UsCgkJCSAgICAgIGhhbmRsZV9ub19saW1pdF9zdGFja19hdHRyaWJ1dGUgfSwKICB7ICJw
dXJlIiwgICAgICAgICAgICAgICAgICAgMCwgMCwgdHJ1ZSwgIGZhbHNlLCBmYWxzZSwKCQkJ
ICAgICAgaGFuZGxlX3B1cmVfYXR0cmlidXRlIH0sCiAgeyAiZGVwcmVjYXRlZCIsICAgICAg
ICAgICAgIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCgkJCSAgICAgIGhhbmRsZV9kZXBy
ZWNhdGVkX2F0dHJpYnV0ZSB9LAogIHsgInZlY3Rvcl9zaXplIiwJICAgICAgMSwgMSwgZmFs
c2UsIHRydWUsIGZhbHNlLAoJCQkgICAgICBoYW5kbGVfdmVjdG9yX3NpemVfYXR0cmlidXRl
IH0sCiAgeyAidmlzaWJpbGl0eSIsCSAgICAgIDEsIDEsIHRydWUsICBmYWxzZSwgZmFsc2Us
CgkJCSAgICAgIGhhbmRsZV92aXNpYmlsaXR5X2F0dHJpYnV0ZSB9LAogIHsgInRsc19tb2Rl
bCIsCSAgICAgIDEsIDEsIHRydWUsICBmYWxzZSwgZmFsc2UsCgkJCSAgICAgIGhhbmRsZV90
bHNfbW9kZWxfYXR0cmlidXRlIH0sCiAgeyAibm9ubnVsbCIsICAgICAgICAgICAgICAgIDAs
IC0xLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwKCQkJICAgICAgaGFuZGxlX25vbm51bGxfYXR0cmli
dXRlIH0sCiAgeyAibm90aHJvdyIsICAgICAgICAgICAgICAgIDAsIDAsIHRydWUsICBmYWxz
ZSwgZmFsc2UsCgkJCSAgICAgIGhhbmRsZV9ub3Rocm93X2F0dHJpYnV0ZSB9LAogIHsgIm1h
eV9hbGlhcyIsCSAgICAgIDAsIDAsIGZhbHNlLCB0cnVlLCBmYWxzZSwgTlVMTCB9LAogIHsg
ImNsZWFudXAiLAkJICAgICAgMSwgMSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLAoJCQkgICAgICBo
YW5kbGVfY2xlYW51cF9hdHRyaWJ1dGUgfSwKICB7IE5VTEwsICAgICAgICAgICAgICAgICAg
ICAgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgTlVMTCB9Cn07CgovKiBHaXZlIHRoZSBz
cGVjaWZpY2F0aW9ucyBmb3IgdGhlIGZvcm1hdCBhdHRyaWJ1dGVzLCB1c2VkIGJ5IEMgYW5k
IGFsbAogICBkZXNjZW5kYW50cy4gICovCgpjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX3NwZWMg
Y19jb21tb25fZm9ybWF0X2F0dHJpYnV0ZV90YWJsZVtdID0KewogIC8qIHsgbmFtZSwgbWlu
X2xlbiwgbWF4X2xlbiwgZGVjbF9yZXEsIHR5cGVfcmVxLCBmbl90eXBlX3JlcSwgaGFuZGxl
ciB9ICovCiAgeyAiZm9ybWF0IiwgICAgICAgICAgICAgICAgIDMsIDMsIGZhbHNlLCB0cnVl
LCAgdHJ1ZSwKCQkJICAgICAgaGFuZGxlX2Zvcm1hdF9hdHRyaWJ1dGUgfSwKICB7ICJmb3Jt
YXRfYXJnIiwgICAgICAgICAgICAgMSwgMSwgZmFsc2UsIHRydWUsICB0cnVlLAoJCQkgICAg
ICBoYW5kbGVfZm9ybWF0X2FyZ19hdHRyaWJ1dGUgfSwKICB7IE5VTEwsICAgICAgICAgICAg
ICAgICAgICAgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgTlVMTCB9Cn07CgovKiBSZWNv
cmQgdGhlIHN0YXJ0IG9mIGFuIGlmLXRoZW4sIGFuZCByZWNvcmQgdGhlIHN0YXJ0IG9mIGl0
CiAgIGZvciBhbWJpZ3VvdXMgZWxzZSBkZXRlY3Rpb24uCgogICBDT05EIGlzIHRoZSBjb25k
aXRpb24gZm9yIHRoZSBpZi10aGVuIHN0YXRlbWVudC4KCiAgIElGX1NUTVQgaXMgdGhlIHN0
YXRlbWVudCBub2RlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkIGZvcgogICB0aGlz
IGlmLXRoZW4gc3RhdGVtZW50LiAgSXQgaXMgY3JlYXRlZCBiZWZvcmUgcGFyc2luZyB0aGUK
ICAgY29uZGl0aW9uIHRvIGtlZXAgbGluZSBudW1iZXIgaW5mb3JtYXRpb24gYWNjdXJhdGUu
ICAqLwoKdm9pZApjX2V4cGFuZF9zdGFydF9jb25kICh0cmVlIGNvbmQsIGludCBjb21wc3Rt
dF9jb3VudCwgdHJlZSBpZl9zdG10KQp7CiAgLyogTWFrZSBzdXJlIHRoZXJlIGlzIGVub3Vn
aCBzcGFjZSBvbiB0aGUgc3RhY2suICAqLwogIGlmIChpZl9zdGFja19zcGFjZSA9PSAwKQog
ICAgewogICAgICBpZl9zdGFja19zcGFjZSA9IDEwOwogICAgICBpZl9zdGFjayA9IChpZl9l
bHQgKikgeG1hbGxvYyAoMTAgKiBzaXplb2YgKGlmX2VsdCkpOwogICAgfQogIGVsc2UgaWYg
KGlmX3N0YWNrX3NwYWNlID09IGlmX3N0YWNrX3BvaW50ZXIpCiAgICB7CiAgICAgIGlmX3N0
YWNrX3NwYWNlICs9IDEwOwogICAgICBpZl9zdGFjayA9IChpZl9lbHQgKikgeHJlYWxsb2Mg
KGlmX3N0YWNrLCBpZl9zdGFja19zcGFjZSAqIHNpemVvZiAoaWZfZWx0KSk7CiAgICB9Cgog
IElGX0NPTkQgKGlmX3N0bXQpID0gY29uZDsKICBhZGRfc3RtdCAoaWZfc3RtdCk7CgogIC8q
IFJlY29yZCB0aGlzIGlmIHN0YXRlbWVudC4gICovCiAgaWZfc3RhY2tbaWZfc3RhY2tfcG9p
bnRlcl0uY29tcHN0bXRfY291bnQgPSBjb21wc3RtdF9jb3VudDsKICBpZl9zdGFja1tpZl9z
dGFja19wb2ludGVyXS5sb2N1cyA9IGlucHV0X2xvY2F0aW9uOwogIGlmX3N0YWNrW2lmX3N0
YWNrX3BvaW50ZXJdLm5lZWRzX3dhcm5pbmcgPSAwOwogIGlmX3N0YWNrW2lmX3N0YWNrX3Bv
aW50ZXJdLmlmX3N0bXQgPSBpZl9zdG10OwogIGlmX3N0YWNrX3BvaW50ZXIrKzsKfQoKLyog
Q2FsbGVkIGFmdGVyIHRoZSB0aGVuLWNsYXVzZSBmb3IgYW4gaWYtc3RhdGVtZW50IGlzIHBy
b2Nlc3NlZC4gICovCgp2b2lkCmNfZmluaXNoX3RoZW4gKHZvaWQpCnsKICB0cmVlIGlmX3N0
bXQgPSBpZl9zdGFja1tpZl9zdGFja19wb2ludGVyIC0gMV0uaWZfc3RtdDsKICBSRUNIQUlO
X1NUTVRTIChpZl9zdG10LCBUSEVOX0NMQVVTRSAoaWZfc3RtdCkpOwp9CgovKiBSZWNvcmQg
dGhlIGVuZCBvZiBhbiBpZi10aGVuLiAgT3B0aW9uYWxseSB3YXJuIGlmIGEgbmVzdGVkCiAg
IGlmIHN0YXRlbWVudCBoYWQgYW4gYW1iaWd1b3VzIGVsc2UgY2xhdXNlLiAgKi8KCnZvaWQK
Y19leHBhbmRfZW5kX2NvbmQgKHZvaWQpCnsKICBpZl9zdGFja19wb2ludGVyLS07CiAgaWYg
KGlmX3N0YWNrW2lmX3N0YWNrX3BvaW50ZXJdLm5lZWRzX3dhcm5pbmcpCiAgICB3YXJuaW5n
ICgiJUhzdWdnZXN0IGV4cGxpY2l0IGJyYWNlcyB0byBhdm9pZCBhbWJpZ3VvdXMgYGVsc2Un
IiwKICAgICAgICAgICAgICZpZl9zdGFja1tpZl9zdGFja19wb2ludGVyXS5sb2N1cyk7CiAg
bGFzdF9leHByX3R5cGUgPSBOVUxMX1RSRUU7Cn0KCi8qIENhbGxlZCBiZXR3ZWVuIHRoZSB0
aGVuLWNsYXVzZSBhbmQgdGhlIGVsc2UtY2xhdXNlCiAgIG9mIGFuIGlmLXRoZW4tZWxzZS4g
ICovCgp2b2lkCmNfZXhwYW5kX3N0YXJ0X2Vsc2UgKHZvaWQpCnsKICAvKiBBbiBhbWJpZ3Vv
dXMgZWxzZSB3YXJuaW5nIG11c3QgYmUgZ2VuZXJhdGVkIGZvciB0aGUgZW5jbG9zaW5nIGlm
CiAgICAgc3RhdGVtZW50LCB1bmxlc3Mgd2Ugc2VlIGFuIGVsc2UgYnJhbmNoIGZvciB0aGF0
IG9uZSwgdG9vLiAgKi8KICBpZiAod2Fybl9wYXJlbnRoZXNlcwogICAgICAmJiBpZl9zdGFj
a19wb2ludGVyID4gMQogICAgICAmJiAoaWZfc3RhY2tbaWZfc3RhY2tfcG9pbnRlciAtIDFd
LmNvbXBzdG10X2NvdW50CgkgID09IGlmX3N0YWNrW2lmX3N0YWNrX3BvaW50ZXIgLSAyXS5j
b21wc3RtdF9jb3VudCkpCiAgICBpZl9zdGFja1tpZl9zdGFja19wb2ludGVyIC0gMl0ubmVl
ZHNfd2FybmluZyA9IDE7CgogIC8qIEV2ZW4gaWYgYSBuZXN0ZWQgaWYgc3RhdGVtZW50IGhh
ZCBhbiBlbHNlIGJyYW5jaCwgaXQgY2FuJ3QgYmUKICAgICBhbWJpZ3VvdXMgaWYgdGhpcyBv
bmUgYWxzbyBoYXMgYW4gZWxzZS4gIFNvIGRvbid0IHdhcm4gaW4gdGhhdAogICAgIGNhc2Uu
ICBBbHNvIGRvbid0IHdhcm4gZm9yIGFueSBpZiBzdGF0ZW1lbnRzIG5lc3RlZCBpbiB0aGlz
IGVsc2UuICAqLwogIGlmX3N0YWNrW2lmX3N0YWNrX3BvaW50ZXIgLSAxXS5uZWVkc193YXJu
aW5nID0gMDsKICBpZl9zdGFja1tpZl9zdGFja19wb2ludGVyIC0gMV0uY29tcHN0bXRfY291
bnQtLTsKfQoKLyogQ2FsbGVkIGFmdGVyIHRoZSBlbHNlLWNsYXVzZSBmb3IgYW4gaWYtc3Rh
dGVtZW50IGlzIHByb2Nlc3NlZC4gICovCgp2b2lkCmNfZmluaXNoX2Vsc2UgKHZvaWQpCnsK
ICB0cmVlIGlmX3N0bXQgPSBpZl9zdGFja1tpZl9zdGFja19wb2ludGVyIC0gMV0uaWZfc3Rt
dDsKICBSRUNIQUlOX1NUTVRTIChpZl9zdG10LCBFTFNFX0NMQVVTRSAoaWZfc3RtdCkpOwp9
CgovKiBCZWdpbiBhbiBpZi1zdGF0ZW1lbnQuICBSZXR1cm5zIGEgbmV3bHkgY3JlYXRlZCBJ
Rl9TVE1UIGlmCiAgIGFwcHJvcHJpYXRlLgoKICAgVW5saWtlIHRoZSBDKysgZnJvbnQtZW5k
LCB3ZSBkbyBub3QgY2FsbCBhZGRfc3RtdCBoZXJlOyBpdCBpcwogICBwcm9iYWJseSBzYWZl
IHRvIGRvIHNvLCBidXQgSSBhbSBub3QgdmVyeSBmYW1pbGlhciB3aXRoIHRoaXMKICAgY29k
ZSBzbyBJIGFtIGJlaW5nIGV4dHJhIGNhcmVmdWwgbm90IHRvIGNoYW5nZSBpdHMgYmVoYXZp
b3IKICAgYmV5b25kIHdoYXQgaXMgc3RyaWN0bHkgbmVjZXNzYXJ5IGZvciBjb3JyZWN0bmVz
cy4gICovCgp0cmVlCmNfYmVnaW5faWZfc3RtdCAodm9pZCkKewogIHRyZWUgcjsKICByID0g
YnVpbGRfc3RtdCAoSUZfU1RNVCwgTlVMTF9UUkVFLCBOVUxMX1RSRUUsIE5VTExfVFJFRSk7
CiAgcmV0dXJuIHI7Cn0KCi8qIEJlZ2luIGEgd2hpbGUgc3RhdGVtZW50LiAgUmV0dXJucyBh
IG5ld2x5IGNyZWF0ZWQgV0hJTEVfU1RNVCBpZgogICBhcHByb3ByaWF0ZS4KCiAgIFVubGlr
ZSB0aGUgQysrIGZyb250LWVuZCwgd2UgZG8gbm90IGNhbGwgYWRkX3N0bXQgaGVyZTsgaXQg
aXMKICAgcHJvYmFibHkgc2FmZSB0byBkbyBzbywgYnV0IEkgYW0gbm90IHZlcnkgZmFtaWxp
YXIgd2l0aCB0aGlzCiAgIGNvZGUgc28gSSBhbSBiZWluZyBleHRyYSBjYXJlZnVsIG5vdCB0
byBjaGFuZ2UgaXRzIGJlaGF2aW9yCiAgIGJleW9uZCB3aGF0IGlzIHN0cmljdGx5IG5lY2Vz
c2FyeSBmb3IgY29ycmVjdG5lc3MuICAqLwoKdHJlZQpjX2JlZ2luX3doaWxlX3N0bXQgKHZv
aWQpCnsKICB0cmVlIHI7CiAgciA9IGJ1aWxkX3N0bXQgKFdISUxFX1NUTVQsIE5VTExfVFJF
RSwgTlVMTF9UUkVFKTsKICByZXR1cm4gcjsKfQoKdm9pZApjX2ZpbmlzaF93aGlsZV9zdG10
X2NvbmQgKHRyZWUgY29uZCwgdHJlZSB3aGlsZV9zdG10KQp7CiAgV0hJTEVfQ09ORCAod2hp
bGVfc3RtdCkgPSBjb25kOwp9CgovKiBQdXNoIGN1cnJlbnQgYmluZGluZ3MgZm9yIHRoZSBm
dW5jdGlvbiBuYW1lIFZBUl9ERUNMUy4gICovCgp2b2lkCnN0YXJ0X2ZuYW1lX2RlY2xzICh2
b2lkKQp7CiAgdW5zaWduZWQgaXg7CiAgdHJlZSBzYXZlZCA9IE5VTExfVFJFRTsKCiAgZm9y
IChpeCA9IDA7IGZuYW1lX3ZhcnNbaXhdLmRlY2w7IGl4KyspCiAgICB7CiAgICAgIHRyZWUg
ZGVjbCA9ICpmbmFtZV92YXJzW2l4XS5kZWNsOwoKICAgICAgaWYgKGRlY2wpCgl7CgkgIHNh
dmVkID0gdHJlZV9jb25zIChkZWNsLCBidWlsZF9pbnRfMiAoaXgsIDApLCBzYXZlZCk7Cgkg
ICpmbmFtZV92YXJzW2l4XS5kZWNsID0gTlVMTF9UUkVFOwoJfQogICAgfQogIGlmIChzYXZl
ZCB8fCBzYXZlZF9mdW5jdGlvbl9uYW1lX2RlY2xzKQogICAgLyogTm9ybWFsbHkgdGhleSds
bCBoYXZlIGJlZW4gTlVMTCwgc28gb25seSBwdXNoIGlmIHdlJ3ZlIGdvdCBhCiAgICAgICBz
dGFjaywgb3IgdGhleSBhcmUgbm9uLU5VTEwuICAqLwogICAgc2F2ZWRfZnVuY3Rpb25fbmFt
ZV9kZWNscyA9IHRyZWVfY29ucyAoc2F2ZWQsIE5VTExfVFJFRSwKCQkJCQkgICBzYXZlZF9m
dW5jdGlvbl9uYW1lX2RlY2xzKTsKfQoKLyogRmluaXNoIHVwIHRoZSBjdXJyZW50IGJpbmRp
bmdzLCBhZGRpbmcgdGhlbSBpbnRvIHRoZQogICBjdXJyZW50IGZ1bmN0aW9uJ3Mgc3RhdGVt
ZW50IHRyZWUuIFRoaXMgaXMgZG9uZSBieSB3cmFwcGluZyB0aGUKICAgZnVuY3Rpb24ncyBi
b2R5IGluIGEgQ09NUE9VTkRfU1RNVCBjb250YWluaW5nIHRoZXNlIGRlY2xzIHRvby4gVGhp
cwogICBtdXN0IGJlIGRvbmUgX2JlZm9yZV8gZmluaXNoX3N0bXRfdHJlZSBpcyBjYWxsZWQu
IElmIHRoZXJlIGlzIG5vCiAgIGN1cnJlbnQgZnVuY3Rpb24sIHdlIG11c3QgYmUgYXQgZmls
ZSBzY29wZSBhbmQgbm8gc3RhdGVtZW50cyBhcmUKICAgaW52b2x2ZWQuIFBvcCB0aGUgcHJl
dmlvdXMgYmluZGluZ3MuICAqLwoKdm9pZApmaW5pc2hfZm5hbWVfZGVjbHMgKHZvaWQpCnsK
ICB1bnNpZ25lZCBpeDsKICB0cmVlIGJvZHkgPSBOVUxMX1RSRUU7CiAgdHJlZSBzdGFjayA9
IHNhdmVkX2Z1bmN0aW9uX25hbWVfZGVjbHM7CgogIGZvciAoOyBzdGFjayAmJiBUUkVFX1ZB
TFVFIChzdGFjayk7IHN0YWNrID0gVFJFRV9DSEFJTiAoc3RhY2spKQogICAgYm9keSA9IGNo
YWlub24gKFRSRUVfVkFMVUUgKHN0YWNrKSwgYm9keSk7CgogIGlmIChib2R5KQogICAgewog
ICAgICAvKiBUaGV5IHdlcmUgY2FsbGVkIGludG8gZXhpc3RlbmNlLCBzbyBhZGQgdG8gc3Rh
dGVtZW50IHRyZWUuICBBZGQKCSB0aGUgREVDTF9TVE1UcyBpbnNpZGUgdGhlIG91dGVybW9z
dCBzY29wZS4gICovCiAgICAgIHRyZWUgKnAgPSAmREVDTF9TQVZFRF9UUkVFIChjdXJyZW50
X2Z1bmN0aW9uX2RlY2wpOwogICAgICAvKiBTa2lwIHRoZSBkdW1teSBFWFBSX1NUTVQgYW5k
IGFueSBFSF9TUEVDX0JMT0NLLiAgKi8KICAgICAgd2hpbGUgKFRSRUVfQ09ERSAoKnApICE9
IENPTVBPVU5EX1NUTVQpCglwID0gJlRSRUVfQ0hBSU4gKCpwKTsKICAgICAgcCA9ICZDT01Q
T1VORF9CT0RZICgqcCk7CiAgICAgIGlmIChUUkVFX0NPREUgKCpwKSA9PSBTQ09QRV9TVE1U
KQoJcCA9ICZUUkVFX0NIQUlOICgqcCk7CgogICAgICBib2R5ID0gY2hhaW5vbiAoYm9keSwg
KnApOwogICAgICAqcCA9IGJvZHk7CiAgICB9CgogIGZvciAoaXggPSAwOyBmbmFtZV92YXJz
W2l4XS5kZWNsOyBpeCsrKQogICAgKmZuYW1lX3ZhcnNbaXhdLmRlY2wgPSBOVUxMX1RSRUU7
CgogIGlmIChzdGFjaykKICAgIHsKICAgICAgLyogV2UgaGFkIHNhdmVkIHZhbHVlcywgcmVz
dG9yZSB0aGVtLiAgKi8KICAgICAgdHJlZSBzYXZlZDsKCiAgICAgIGZvciAoc2F2ZWQgPSBU
UkVFX1BVUlBPU0UgKHN0YWNrKTsgc2F2ZWQ7IHNhdmVkID0gVFJFRV9DSEFJTiAoc2F2ZWQp
KQoJewoJICB0cmVlIGRlY2wgPSBUUkVFX1BVUlBPU0UgKHNhdmVkKTsKCSAgdW5zaWduZWQg
aXggPSBUUkVFX0lOVF9DU1RfTE9XIChUUkVFX1ZBTFVFIChzYXZlZCkpOwoKCSAgKmZuYW1l
X3ZhcnNbaXhdLmRlY2wgPSBkZWNsOwoJfQogICAgICBzdGFjayA9IFRSRUVfQ0hBSU4gKHN0
YWNrKTsKICAgIH0KICBzYXZlZF9mdW5jdGlvbl9uYW1lX2RlY2xzID0gc3RhY2s7Cn0KCi8q
IFJldHVybiB0aGUgdGV4dCBuYW1lIG9mIHRoZSBjdXJyZW50IGZ1bmN0aW9uLCBzdWl0YWJs
eSBwcmV0dGlmaWVkCiAgIGJ5IFBSRVRUWV9QLiAgKi8KCmNvbnN0IGNoYXIgKgpmbmFtZV9h
c19zdHJpbmcgKGludCBwcmV0dHlfcCkKewogIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMOwoK
ICBpZiAocHJldHR5X3ApCiAgICBuYW1lID0gKGN1cnJlbnRfZnVuY3Rpb25fZGVjbAoJICAg
ID8gKCpsYW5nX2hvb2tzLmRlY2xfcHJpbnRhYmxlX25hbWUpIChjdXJyZW50X2Z1bmN0aW9u
X2RlY2wsIDIpCgkgICAgOiAidG9wIGxldmVsIik7CiAgZWxzZSBpZiAoY3VycmVudF9mdW5j
dGlvbl9kZWNsICYmIERFQ0xfTkFNRSAoY3VycmVudF9mdW5jdGlvbl9kZWNsKSkKICAgIG5h
bWUgPSBJREVOVElGSUVSX1BPSU5URVIgKERFQ0xfTkFNRSAoY3VycmVudF9mdW5jdGlvbl9k
ZWNsKSk7CiAgZWxzZQogICAgbmFtZSA9ICIiOwogIHJldHVybiBuYW1lOwp9CgovKiBSZXR1
cm4gdGhlIFZBUl9ERUNMIGZvciBhIGNvbnN0IGNoYXIgYXJyYXkgbmFtaW5nIHRoZSBjdXJy
ZW50CiAgIGZ1bmN0aW9uLiBJZiB0aGUgVkFSX0RFQ0wgaGFzIG5vdCB5ZXQgYmVlbiBjcmVh
dGVkLCBjcmVhdGUgaXQKICAgbm93LiBSSUQgaW5kaWNhdGVzIGhvdyBpdCBzaG91bGQgYmUg
Zm9ybWF0dGVkIGFuZCBJREVOVElGSUVSX05PREUKICAgSUQgaXMgaXRzIG5hbWUgKHVuZm9y
dHVuYXRlbHkgQyBhbmQgQysrIGhvbGQgdGhlIFJJRCB2YWx1ZXMgb2YKICAga2V5d29yZHMg
aW4gZGlmZmVyZW50IHBsYWNlcywgc28gd2UgY2FuJ3QgZGVyaXZlIFJJRCBmcm9tIElEIGlu
CiAgIHRoaXMgbGFuZ3VhZ2UgaW5kZXBlbmRlbnQgY29kZS4gICovCgp0cmVlCmZuYW1lX2Rl
Y2wgKHVuc2lnbmVkIGludCByaWQsIHRyZWUgaWQpCnsKICB1bnNpZ25lZCBpeDsKICB0cmVl
IGRlY2wgPSBOVUxMX1RSRUU7CgogIGZvciAoaXggPSAwOyBmbmFtZV92YXJzW2l4XS5kZWNs
OyBpeCsrKQogICAgaWYgKGZuYW1lX3ZhcnNbaXhdLnJpZCA9PSByaWQpCiAgICAgIGJyZWFr
OwoKICBkZWNsID0gKmZuYW1lX3ZhcnNbaXhdLmRlY2w7CiAgaWYgKCFkZWNsKQogICAgewog
ICAgICB0cmVlIHNhdmVkX2xhc3RfdHJlZSA9IGxhc3RfdHJlZTsKICAgICAgLyogSWYgYSB0
cmVlIGlzIGJ1aWx0IGhlcmUsIGl0IHdvdWxkIG5vcm1hbGx5IGhhdmUgdGhlIGxpbmVubyBv
ZgoJIHRoZSBjdXJyZW50IHN0YXRlbWVudC4gIExhdGVyIHRoaXMgdHJlZSB3aWxsIGJlIG1v
dmVkIHRvIHRoZQoJIGJlZ2lubmluZyBvZiB0aGUgZnVuY3Rpb24gYW5kIHRoaXMgbGluZSBu
dW1iZXIgd2lsbCBiZSB3cm9uZy4KCSBUbyBhdm9pZCB0aGlzIHByb2JsZW0gc2V0IHRoZSBs
aW5lbm8gdG8gMCBoZXJlOyB0aGF0IHByZXZlbnRzCgkgaXQgZnJvbSBhcHBlYXJpbmcgaW4g
dGhlIFJUTC4gICovCiAgICAgIGludCBzYXZlZF9saW5lbm8gPSBpbnB1dF9saW5lOwogICAg
ICBpbnB1dF9saW5lID0gMDsKCiAgICAgIGRlY2wgPSAoKm1ha2VfZm5hbWVfZGVjbCkgKGlk
LCBmbmFtZV92YXJzW2l4XS5wcmV0dHkpOwogICAgICBpZiAobGFzdF90cmVlICE9IHNhdmVk
X2xhc3RfdHJlZSkKCXsKCSAgLyogV2UgY3JlYXRlZCBzb21lIHN0YXRlbWVudCB0cmVlIGZv
ciB0aGUgZGVjbC4gVGhpcyBiZWxvbmdzCgkgICAgIGF0IHRoZSBzdGFydCBvZiB0aGUgZnVu
Y3Rpb24sIHNvIHJlbW92ZSBpdCBub3cgYW5kIHJlaW5zZXJ0CgkgICAgIGl0IGFmdGVyIHRo
ZSBmdW5jdGlvbiBpcyBjb21wbGV0ZS4gICovCgkgIHRyZWUgc3RtdHMgPSBUUkVFX0NIQUlO
IChzYXZlZF9sYXN0X3RyZWUpOwoKCSAgVFJFRV9DSEFJTiAoc2F2ZWRfbGFzdF90cmVlKSA9
IE5VTExfVFJFRTsKCSAgbGFzdF90cmVlID0gc2F2ZWRfbGFzdF90cmVlOwoJICBzYXZlZF9m
dW5jdGlvbl9uYW1lX2RlY2xzID0gdHJlZV9jb25zIChkZWNsLCBzdG10cywKCQkJCQkJIHNh
dmVkX2Z1bmN0aW9uX25hbWVfZGVjbHMpOwoJfQogICAgICAqZm5hbWVfdmFyc1tpeF0uZGVj
bCA9IGRlY2w7CiAgICAgIGlucHV0X2xpbmUgPSBzYXZlZF9saW5lbm87CiAgICB9CiAgaWYg
KCFpeCAmJiAhY3VycmVudF9mdW5jdGlvbl9kZWNsKQogICAgcGVkd2Fybl93aXRoX2RlY2wg
KGRlY2wsICJgJXMnIGlzIG5vdCBkZWZpbmVkIG91dHNpZGUgb2YgZnVuY3Rpb24gc2NvcGUi
KTsKCiAgcmV0dXJuIGRlY2w7Cn0KCi8qIEdpdmVuIGEgU1RSSU5HX0NTVCwgZ2l2ZSBpdCBh
IHN1aXRhYmxlIGFycmF5LW9mLWNoYXJzIGRhdGEgdHlwZS4gICovCgp0cmVlCmZpeF9zdHJp
bmdfdHlwZSAodHJlZSB2YWx1ZSkKewogIGNvbnN0IGludCB3Y2hhcl9ieXRlcyA9IFRZUEVf
UFJFQ0lTSU9OICh3Y2hhcl90eXBlX25vZGUpIC8gQklUU19QRVJfVU5JVDsKICBjb25zdCBp
bnQgd2lkZV9mbGFnID0gVFJFRV9UWVBFICh2YWx1ZSkgPT0gd2NoYXJfYXJyYXlfdHlwZV9u
b2RlOwogIGNvbnN0IGludCBuY2hhcnNfbWF4ID0gZmxhZ19pc29jOTkgPyA0MDk1IDogNTA5
OwogIGludCBsZW5ndGggPSBUUkVFX1NUUklOR19MRU5HVEggKHZhbHVlKTsKICBpbnQgbmNo
YXJzOwoKICAvKiBDb21wdXRlIHRoZSBudW1iZXIgb2YgZWxlbWVudHMsIGZvciB0aGUgYXJy
YXkgdHlwZS4gICovCiAgbmNoYXJzID0gd2lkZV9mbGFnID8gbGVuZ3RoIC8gd2NoYXJfYnl0
ZXMgOiBsZW5ndGg7CgogIGlmIChwZWRhbnRpYyAmJiBuY2hhcnMgLSAxID4gbmNoYXJzX21h
eCAmJiAhY19kaWFsZWN0X2N4eCAoKSkKICAgIHBlZHdhcm4gKCJzdHJpbmcgbGVuZ3RoIGAl
ZCcgaXMgZ3JlYXRlciB0aGFuIHRoZSBsZW5ndGggYCVkJyBJU08gQyVkIGNvbXBpbGVycyBh
cmUgcmVxdWlyZWQgdG8gc3VwcG9ydCIsCgkgICAgIG5jaGFycyAtIDEsIG5jaGFyc19tYXgs
IGZsYWdfaXNvYzk5ID8gOTkgOiA4OSk7CgogIC8qIENyZWF0ZSB0aGUgYXJyYXkgdHlwZSBm
b3IgdGhlIHN0cmluZyBjb25zdGFudC4KICAgICAtV3dyaXRlLXN0cmluZ3Mgc2F5cyBtYWtl
IHRoZSBzdHJpbmcgY29uc3RhbnQgYW4gYXJyYXkgb2YgY29uc3QgY2hhcgogICAgIHNvIHRo
YXQgY29weWluZyBpdCB0byBhIG5vbi1jb25zdCBwb2ludGVyIHdpbGwgZ2V0IGEgd2Fybmlu
Zy4KICAgICBGb3IgQysrLCB0aGlzIGlzIHRoZSBzdGFuZGFyZCBiZWhhdmlvci4gICovCiAg
aWYgKGZsYWdfY29uc3Rfc3RyaW5ncyAmJiAhIGZsYWdfd3JpdGFibGVfc3RyaW5ncykKICAg
IHsKICAgICAgdHJlZSBlbGVtZW50cwoJPSBidWlsZF90eXBlX3ZhcmlhbnQgKHdpZGVfZmxh
ZyA/IHdjaGFyX3R5cGVfbm9kZSA6IGNoYXJfdHlwZV9ub2RlLAoJCQkgICAgICAxLCAwKTsK
ICAgICAgVFJFRV9UWVBFICh2YWx1ZSkKCT0gYnVpbGRfYXJyYXlfdHlwZSAoZWxlbWVudHMs
CgkJCSAgICBidWlsZF9pbmRleF90eXBlIChidWlsZF9pbnRfMiAobmNoYXJzIC0gMSwgMCkp
KTsKICAgIH0KICBlbHNlCiAgICBUUkVFX1RZUEUgKHZhbHVlKQogICAgICA9IGJ1aWxkX2Fy
cmF5X3R5cGUgKHdpZGVfZmxhZyA/IHdjaGFyX3R5cGVfbm9kZSA6IGNoYXJfdHlwZV9ub2Rl
LAoJCQkgIGJ1aWxkX2luZGV4X3R5cGUgKGJ1aWxkX2ludF8yIChuY2hhcnMgLSAxLCAwKSkp
OwoKICBUUkVFX0NPTlNUQU5UICh2YWx1ZSkgPSAxOwogIFRSRUVfUkVBRE9OTFkgKHZhbHVl
KSA9ICEgZmxhZ193cml0YWJsZV9zdHJpbmdzOwogIFRSRUVfU1RBVElDICh2YWx1ZSkgPSAx
OwogIHJldHVybiB2YWx1ZTsKfQoMCnN0YXRpYyBpbnQgaXNfdmFsaWRfcHJpbnRmX2FyZ2xp
c3QgKHRyZWUpOwpzdGF0aWMgcnR4IGNfZXhwYW5kX2J1aWx0aW4gKHRyZWUsIHJ0eCwgZW51
bSBtYWNoaW5lX21vZGUsCgkJCSAgICAgZW51bSBleHBhbmRfbW9kaWZpZXIpOwpzdGF0aWMg
cnR4IGNfZXhwYW5kX2J1aWx0aW5fcHJpbnRmICh0cmVlLCBydHgsIGVudW0gbWFjaGluZV9t
b2RlLAoJCQkJICAgIGVudW0gZXhwYW5kX21vZGlmaWVyLCBpbnQsIGludCk7CnN0YXRpYyBy
dHggY19leHBhbmRfYnVpbHRpbl9mcHJpbnRmICh0cmVlLCBydHgsIGVudW0gbWFjaGluZV9t
b2RlLAoJCQkJICAgICBlbnVtIGV4cGFuZF9tb2RpZmllciwgaW50LCBpbnQpOwoMCi8qIFBy
aW50IGEgd2FybmluZyBpZiBhIGNvbnN0YW50IGV4cHJlc3Npb24gaGFkIG92ZXJmbG93IGlu
IGZvbGRpbmcuCiAgIEludm9rZSB0aGlzIGZ1bmN0aW9uIG9uIGV2ZXJ5IGV4cHJlc3Npb24g
dGhhdCB0aGUgbGFuZ3VhZ2UKICAgcmVxdWlyZXMgdG8gYmUgYSBjb25zdGFudCBleHByZXNz
aW9uLgogICBOb3RlIHRoZSBBTlNJIEMgc3RhbmRhcmQgc2F5cyBpdCBpcyBlcnJvbmVvdXMg
Zm9yIGEKICAgY29uc3RhbnQgZXhwcmVzc2lvbiB0byBvdmVyZmxvdy4gICovCgp2b2lkCmNv
bnN0YW50X2V4cHJlc3Npb25fd2FybmluZyAodHJlZSB2YWx1ZSkKewogIGlmICgoVFJFRV9D
T0RFICh2YWx1ZSkgPT0gSU5URUdFUl9DU1QgfHwgVFJFRV9DT0RFICh2YWx1ZSkgPT0gUkVB
TF9DU1QKICAgICAgIHx8IFRSRUVfQ09ERSAodmFsdWUpID09IFZFQ1RPUl9DU1QKICAgICAg
IHx8IFRSRUVfQ09ERSAodmFsdWUpID09IENPTVBMRVhfQ1NUKQogICAgICAmJiBUUkVFX0NP
TlNUQU5UX09WRVJGTE9XICh2YWx1ZSkgJiYgcGVkYW50aWMpCiAgICBwZWR3YXJuICgib3Zl
cmZsb3cgaW4gY29uc3RhbnQgZXhwcmVzc2lvbiIpOwp9CgovKiBQcmludCBhIHdhcm5pbmcg
aWYgYW4gZXhwcmVzc2lvbiBoYWQgb3ZlcmZsb3cgaW4gZm9sZGluZy4KICAgSW52b2tlIHRo
aXMgZnVuY3Rpb24gb24gZXZlcnkgZXhwcmVzc2lvbiB0aGF0CiAgICgxKSBhcHBlYXJzIGlu
IHRoZSBzb3VyY2UgY29kZSwgYW5kCiAgICgyKSBtaWdodCBiZSBhIGNvbnN0YW50IGV4cHJl
c3Npb24gdGhhdCBvdmVyZmxvd2VkLCBhbmQKICAgKDMpIGlzIG5vdCBhbHJlYWR5IGNoZWNr
ZWQgYnkgY29udmVydF9hbmRfY2hlY2s7CiAgIGhvd2V2ZXIsIGRvIG5vdCBpbnZva2UgdGhp
cyBmdW5jdGlvbiBvbiBvcGVyYW5kcyBvZiBleHBsaWNpdCBjYXN0cy4gICovCgp2b2lkCm92
ZXJmbG93X3dhcm5pbmcgKHRyZWUgdmFsdWUpCnsKICBpZiAoKFRSRUVfQ09ERSAodmFsdWUp
ID09IElOVEVHRVJfQ1NUCiAgICAgICB8fCAoVFJFRV9DT0RFICh2YWx1ZSkgPT0gQ09NUExF
WF9DU1QKCSAgICYmIFRSRUVfQ09ERSAoVFJFRV9SRUFMUEFSVCAodmFsdWUpKSA9PSBJTlRF
R0VSX0NTVCkpCiAgICAgICYmIFRSRUVfT1ZFUkZMT1cgKHZhbHVlKSkKICAgIHsKICAgICAg
VFJFRV9PVkVSRkxPVyAodmFsdWUpID0gMDsKICAgICAgaWYgKHNraXBfZXZhbHVhdGlvbiA9
PSAwKQoJd2FybmluZyAoImludGVnZXIgb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbiIpOwogICAg
fQogIGVsc2UgaWYgKChUUkVFX0NPREUgKHZhbHVlKSA9PSBSRUFMX0NTVAoJICAgIHx8IChU
UkVFX0NPREUgKHZhbHVlKSA9PSBDT01QTEVYX0NTVAoJCSYmIFRSRUVfQ09ERSAoVFJFRV9S
RUFMUEFSVCAodmFsdWUpKSA9PSBSRUFMX0NTVCkpCgkgICAmJiBUUkVFX09WRVJGTE9XICh2
YWx1ZSkpCiAgICB7CiAgICAgIFRSRUVfT1ZFUkZMT1cgKHZhbHVlKSA9IDA7CiAgICAgIGlm
IChza2lwX2V2YWx1YXRpb24gPT0gMCkKCXdhcm5pbmcgKCJmbG9hdGluZyBwb2ludCBvdmVy
ZmxvdyBpbiBleHByZXNzaW9uIik7CiAgICB9CiAgZWxzZSBpZiAoVFJFRV9DT0RFICh2YWx1
ZSkgPT0gVkVDVE9SX0NTVCAmJiBUUkVFX09WRVJGTE9XICh2YWx1ZSkpCiAgICB7CiAgICAg
IFRSRUVfT1ZFUkZMT1cgKHZhbHVlKSA9IDA7CiAgICAgIGlmIChza2lwX2V2YWx1YXRpb24g
PT0gMCkKCXdhcm5pbmcgKCJ2ZWN0b3Igb3ZlcmZsb3cgaW4gZXhwcmVzc2lvbiIpOwogICAg
fQp9CgovKiBQcmludCBhIHdhcm5pbmcgaWYgYSBsYXJnZSBjb25zdGFudCBpcyB0cnVuY2F0
ZWQgdG8gdW5zaWduZWQsCiAgIG9yIGlmIC1XY29udmVyc2lvbiBpcyB1c2VkIGFuZCBhIGNv
bnN0YW50IDwgMCBpcyBjb252ZXJ0ZWQgdG8gdW5zaWduZWQuCiAgIEludm9rZSB0aGlzIGZ1
bmN0aW9uIG9uIGV2ZXJ5IGV4cHJlc3Npb24gdGhhdCBtaWdodCBiZSBpbXBsaWNpdGx5CiAg
IGNvbnZlcnRlZCB0byBhbiB1bnNpZ25lZCB0eXBlLiAgKi8KCnZvaWQKdW5zaWduZWRfY29u
dmVyc2lvbl93YXJuaW5nICh0cmVlIHJlc3VsdCwgdHJlZSBvcGVyYW5kKQp7CiAgdHJlZSB0
eXBlID0gVFJFRV9UWVBFIChyZXN1bHQpOwoKICBpZiAoVFJFRV9DT0RFIChvcGVyYW5kKSA9
PSBJTlRFR0VSX0NTVAogICAgICAmJiBUUkVFX0NPREUgKHR5cGUpID09IElOVEVHRVJfVFlQ
RQogICAgICAmJiBUUkVFX1VOU0lHTkVEICh0eXBlKQogICAgICAmJiBza2lwX2V2YWx1YXRp
b24gPT0gMAogICAgICAmJiAhaW50X2ZpdHNfdHlwZV9wIChvcGVyYW5kLCB0eXBlKSkKICAg
IHsKICAgICAgaWYgKCFpbnRfZml0c190eXBlX3AgKG9wZXJhbmQsIGNfY29tbW9uX3NpZ25l
ZF90eXBlICh0eXBlKSkpCgkvKiBUaGlzIGRldGVjdHMgY2FzZXMgbGlrZSBjb252ZXJ0aW5n
IC0xMjkgb3IgMjU2IHRvIHVuc2lnbmVkIGNoYXIuICAqLwoJd2FybmluZyAoImxhcmdlIGlu
dGVnZXIgaW1wbGljaXRseSB0cnVuY2F0ZWQgdG8gdW5zaWduZWQgdHlwZSIpOwogICAgICBl
bHNlIGlmICh3YXJuX2NvbnZlcnNpb24pCgl3YXJuaW5nICgibmVnYXRpdmUgaW50ZWdlciBp
bXBsaWNpdGx5IGNvbnZlcnRlZCB0byB1bnNpZ25lZCB0eXBlIik7CiAgICB9Cn0KCi8qIE5v
bnplcm8gaWYgY29uc3RhbnQgQyBoYXMgYSB2YWx1ZSB0aGF0IGlzIHBlcm1pc3NpYmxlCiAg
IGZvciB0eXBlIFRZUEUgKGFuIElOVEVHRVJfVFlQRSkuICAqLwoKc3RhdGljIGludApjb25z
dGFudF9maXRzX3R5cGVfcCAodHJlZSBjLCB0cmVlIHR5cGUpCnsKICBpZiAoVFJFRV9DT0RF
IChjKSA9PSBJTlRFR0VSX0NTVCkKICAgIHJldHVybiBpbnRfZml0c190eXBlX3AgKGMsIHR5
cGUpOwoKICBjID0gY29udmVydCAodHlwZSwgYyk7CiAgcmV0dXJuICFUUkVFX09WRVJGTE9X
IChjKTsKfQoKLyogQ29udmVydCBFWFBSIHRvIFRZUEUsIHdhcm5pbmcgYWJvdXQgY29udmVy
c2lvbiBwcm9ibGVtcyB3aXRoIGNvbnN0YW50cy4KICAgSW52b2tlIHRoaXMgZnVuY3Rpb24g
b24gZXZlcnkgZXhwcmVzc2lvbiB0aGF0IGlzIGNvbnZlcnRlZCBpbXBsaWNpdGx5LAogICBp
LmUuIGJlY2F1c2Ugb2YgbGFuZ3VhZ2UgcnVsZXMgYW5kIG5vdCBiZWNhdXNlIG9mIGFuIGV4
cGxpY2l0IGNhc3QuICAqLwoKdHJlZQpjb252ZXJ0X2FuZF9jaGVjayAodHJlZSB0eXBlLCB0
cmVlIGV4cHIpCnsKICB0cmVlIHQgPSBjb252ZXJ0ICh0eXBlLCBleHByKTsKICBpZiAoVFJF
RV9DT0RFICh0KSA9PSBJTlRFR0VSX0NTVCkKICAgIHsKICAgICAgaWYgKFRSRUVfT1ZFUkZM
T1cgKHQpKQoJewoJICBUUkVFX09WRVJGTE9XICh0KSA9IDA7CgoJICAvKiBEbyBub3QgZGlh
Z25vc2Ugb3ZlcmZsb3cgaW4gYSBjb25zdGFudCBleHByZXNzaW9uIG1lcmVseQoJICAgICBi
ZWNhdXNlIGEgY29udmVyc2lvbiBvdmVyZmxvd2VkLiAgKi8KCSAgVFJFRV9DT05TVEFOVF9P
VkVSRkxPVyAodCkgPSBUUkVFX0NPTlNUQU5UX09WRVJGTE9XIChleHByKTsKCgkgIC8qIE5v
IHdhcm5pbmcgZm9yIGNvbnZlcnRpbmcgMHg4MDAwMDAwMCB0byBpbnQuICAqLwoJICBpZiAo
IShUUkVFX1VOU0lHTkVEICh0eXBlKSA8IFRSRUVfVU5TSUdORUQgKFRSRUVfVFlQRSAoZXhw
cikpCgkJJiYgVFJFRV9DT0RFIChUUkVFX1RZUEUgKGV4cHIpKSA9PSBJTlRFR0VSX1RZUEUK
CQkmJiBUWVBFX1BSRUNJU0lPTiAodHlwZSkgPT0gVFlQRV9QUkVDSVNJT04gKFRSRUVfVFlQ
RSAoZXhwcikpKSkKCSAgICAvKiBJZiBFWFBSIGZpdHMgaW4gdGhlIHVuc2lnbmVkIHZlcnNp
b24gb2YgVFlQRSwKCSAgICAgICBkb24ndCB3YXJuIHVubGVzcyBwZWRhbnRpYy4gICovCgkg
ICAgaWYgKChwZWRhbnRpYwoJCSB8fCBUUkVFX1VOU0lHTkVEICh0eXBlKQoJCSB8fCAhIGNv
bnN0YW50X2ZpdHNfdHlwZV9wIChleHByLAoJCQkJCSAgICBjX2NvbW1vbl91bnNpZ25lZF90
eXBlICh0eXBlKSkpCgkgICAgICAgICYmIHNraXBfZXZhbHVhdGlvbiA9PSAwKQoJICAgICAg
d2FybmluZyAoIm92ZXJmbG93IGluIGltcGxpY2l0IGNvbnN0YW50IGNvbnZlcnNpb24iKTsK
CX0KICAgICAgZWxzZQoJdW5zaWduZWRfY29udmVyc2lvbl93YXJuaW5nICh0LCBleHByKTsK
ICAgIH0KICByZXR1cm4gdDsKfQoMCi8qIEEgbm9kZSBpbiBhIGxpc3QgdGhhdCBkZXNjcmli
ZXMgcmVmZXJlbmNlcyB0byB2YXJpYWJsZXMgKEVYUFIpLCB3aGljaCBhcmUKICAgZWl0aGVy
IHJlYWQgYWNjZXNzZXMgaWYgV1JJVEVSIGlzIHplcm8sIG9yIHdyaXRlIGFjY2Vzc2VzLCBp
biB3aGljaCBjYXNlCiAgIFdSSVRFUiBpcyB0aGUgcGFyZW50IG9mIEVYUFIuICAqLwpzdHJ1
Y3QgdGxpc3QKewogIHN0cnVjdCB0bGlzdCAqbmV4dDsKICB0cmVlIGV4cHIsIHdyaXRlcjsK
fTsKCi8qIFVzZWQgdG8gaW1wbGVtZW50IGEgY2FjaGUgdGhlIHJlc3VsdHMgb2YgYSBjYWxs
IHRvIHZlcmlmeV90cmVlLiAgV2Ugb25seQogICB1c2UgdGhpcyBmb3IgU0FWRV9FWFBScy4g
ICovCnN0cnVjdCB0bGlzdF9jYWNoZQp7CiAgc3RydWN0IHRsaXN0X2NhY2hlICpuZXh0Owog
IHN0cnVjdCB0bGlzdCAqY2FjaGVfYmVmb3JlX3NwOwogIHN0cnVjdCB0bGlzdCAqY2FjaGVf
YWZ0ZXJfc3A7CiAgdHJlZSBleHByOwp9OwoKLyogT2JzdGFjayB0byB1c2Ugd2hlbiBhbGxv
Y2F0aW5nIHRsaXN0IHN0cnVjdHVyZXMsIGFuZCBjb3JyZXNwb25kaW5nCiAgIGZpcnN0b2Jq
LiAgKi8Kc3RhdGljIHN0cnVjdCBvYnN0YWNrIHRsaXN0X29ic3RhY2s7CnN0YXRpYyBjaGFy
ICp0bGlzdF9maXJzdG9iaiA9IDA7CgovKiBLZWVwIHRyYWNrIG9mIHRoZSBpZGVudGlmaWVy
cyB3ZSd2ZSB3YXJuZWQgYWJvdXQsIHNvIHdlIGNhbiBhdm9pZCBkdXBsaWNhdGUKICAgd2Fy
bmluZ3MuICAqLwpzdGF0aWMgc3RydWN0IHRsaXN0ICp3YXJuZWRfaWRzOwovKiBTQVZFX0VY
UFJzIG5lZWQgc3BlY2lhbCB0cmVhdG1lbnQuICBXZSBwcm9jZXNzIHRoZW0gb25seSBvbmNl
IGFuZCB0aGVuCiAgIGNhY2hlIHRoZSByZXN1bHRzLiAgKi8Kc3RhdGljIHN0cnVjdCB0bGlz
dF9jYWNoZSAqc2F2ZV9leHByX2NhY2hlOwoKc3RhdGljIHZvaWQgYWRkX3RsaXN0IChzdHJ1
Y3QgdGxpc3QgKiosIHN0cnVjdCB0bGlzdCAqLCB0cmVlLCBpbnQpOwpzdGF0aWMgdm9pZCBt
ZXJnZV90bGlzdCAoc3RydWN0IHRsaXN0ICoqLCBzdHJ1Y3QgdGxpc3QgKiwgaW50KTsKc3Rh
dGljIHZvaWQgdmVyaWZ5X3RyZWUgKHRyZWUsIHN0cnVjdCB0bGlzdCAqKiwgc3RydWN0IHRs
aXN0ICoqLCB0cmVlKTsKc3RhdGljIGludCB3YXJuaW5nX2NhbmRpZGF0ZV9wICh0cmVlKTsK
c3RhdGljIHZvaWQgd2Fybl9mb3JfY29sbGlzaW9ucyAoc3RydWN0IHRsaXN0ICopOwpzdGF0
aWMgdm9pZCB3YXJuX2Zvcl9jb2xsaXNpb25zXzEgKHRyZWUsIHRyZWUsIHN0cnVjdCB0bGlz
dCAqLCBpbnQpOwpzdGF0aWMgc3RydWN0IHRsaXN0ICpuZXdfdGxpc3QgKHN0cnVjdCB0bGlz
dCAqLCB0cmVlLCB0cmVlKTsKc3RhdGljIHZvaWQgdmVyaWZ5X3NlcXVlbmNlX3BvaW50cyAo
dHJlZSk7CgovKiBDcmVhdGUgYSBuZXcgc3RydWN0IHRsaXN0IGFuZCBmaWxsIGluIGl0cyBm
aWVsZHMuICAqLwpzdGF0aWMgc3RydWN0IHRsaXN0ICoKbmV3X3RsaXN0IChzdHJ1Y3QgdGxp
c3QgKm5leHQsIHRyZWUgdCwgdHJlZSB3cml0ZXIpCnsKICBzdHJ1Y3QgdGxpc3QgKmw7CiAg
bCA9IChzdHJ1Y3QgdGxpc3QgKikgb2JzdGFja19hbGxvYyAoJnRsaXN0X29ic3RhY2ssIHNp
emVvZiAqbCk7CiAgbC0+bmV4dCA9IG5leHQ7CiAgbC0+ZXhwciA9IHQ7CiAgbC0+d3JpdGVy
ID0gd3JpdGVyOwogIHJldHVybiBsOwp9CgovKiBBZGQgZHVwbGljYXRlcyBvZiB0aGUgbm9k
ZXMgZm91bmQgaW4gQUREIHRvIHRoZSBsaXN0ICpUTy4gIElmIEVYQ0xVREVfV1JJVEVSCiAg
IGlzIG5vbm51bGwsIHdlIGlnbm9yZSBhbnkgbm9kZSB3ZSBmaW5kIHdoaWNoIGhhcyBhIHdy
aXRlciBlcXVhbCB0byBpdC4gICovCgpzdGF0aWMgdm9pZAphZGRfdGxpc3QgKHN0cnVjdCB0
bGlzdCAqKnRvLCBzdHJ1Y3QgdGxpc3QgKmFkZCwgdHJlZSBleGNsdWRlX3dyaXRlciwgaW50
IGNvcHkpCnsKICB3aGlsZSAoYWRkKQogICAgewogICAgICBzdHJ1Y3QgdGxpc3QgKm5leHQg
PSBhZGQtPm5leHQ7CiAgICAgIGlmICghIGNvcHkpCglhZGQtPm5leHQgPSAqdG87CiAgICAg
IGlmICghIGV4Y2x1ZGVfd3JpdGVyIHx8IGFkZC0+d3JpdGVyICE9IGV4Y2x1ZGVfd3JpdGVy
KQoJKnRvID0gY29weSA/IG5ld190bGlzdCAoKnRvLCBhZGQtPmV4cHIsIGFkZC0+d3JpdGVy
KSA6IGFkZDsKICAgICAgYWRkID0gbmV4dDsKICAgIH0KfQoKLyogTWVyZ2UgdGhlIG5vZGVz
IG9mIEFERCBpbnRvIFRPLiAgVGhpcyBtZXJnaW5nIHByb2Nlc3MgaXMgZG9uZSBzbyB0aGF0
IGZvcgogICBlYWNoIHZhcmlhYmxlIHRoYXQgYWxyZWFkeSBleGlzdHMgaW4gVE8sIG5vIG5l
dyBub2RlIGlzIGFkZGVkOyBob3dldmVyIGlmCiAgIHRoZXJlIGlzIGEgd3JpdGUgYWNjZXNz
IHJlY29yZGVkIGluIEFERCwgYW5kIGFuIG9jY3VycmVuY2Ugb24gVE8gaXMgb25seQogICBh
IHJlYWQgYWNjZXNzLCB0aGVuIHRoZSBvY2N1cnJlbmNlIGluIFRPIHdpbGwgYmUgbW9kaWZp
ZWQgdG8gcmVjb3JkIHRoZQogICB3cml0ZS4gICovCgpzdGF0aWMgdm9pZAptZXJnZV90bGlz
dCAoc3RydWN0IHRsaXN0ICoqdG8sIHN0cnVjdCB0bGlzdCAqYWRkLCBpbnQgY29weSkKewog
IHN0cnVjdCB0bGlzdCAqKmVuZCA9IHRvOwoKICB3aGlsZSAoKmVuZCkKICAgIGVuZCA9ICYo
KmVuZCktPm5leHQ7CgogIHdoaWxlIChhZGQpCiAgICB7CiAgICAgIGludCBmb3VuZCA9IDA7
CiAgICAgIHN0cnVjdCB0bGlzdCAqdG1wMjsKICAgICAgc3RydWN0IHRsaXN0ICpuZXh0ID0g
YWRkLT5uZXh0OwoKICAgICAgZm9yICh0bXAyID0gKnRvOyB0bXAyOyB0bXAyID0gdG1wMi0+
bmV4dCkKCWlmICh0bXAyLT5leHByID09IGFkZC0+ZXhwcikKCSAgewoJICAgIGZvdW5kID0g
MTsKCSAgICBpZiAoISB0bXAyLT53cml0ZXIpCgkgICAgICB0bXAyLT53cml0ZXIgPSBhZGQt
PndyaXRlcjsKCSAgfQogICAgICBpZiAoISBmb3VuZCkKCXsKCSAgKmVuZCA9IGNvcHkgPyBh
ZGQgOiBuZXdfdGxpc3QgKE5VTEwsIGFkZC0+ZXhwciwgYWRkLT53cml0ZXIpOwoJICBlbmQg
PSAmKCplbmQpLT5uZXh0OwoJICAqZW5kID0gMDsKCX0KICAgICAgYWRkID0gbmV4dDsKICAg
IH0KfQoKLyogV1JJVFRFTiBpcyBhIHZhcmlhYmxlLCBXUklURVIgaXMgaXRzIHBhcmVudC4g
IFdhcm4gaWYgYW55IG9mIHRoZSB2YXJpYWJsZQogICByZWZlcmVuY2VzIGluIGxpc3QgTElT
VCBjb25mbGljdCB3aXRoIGl0LCBleGNsdWRpbmcgcmVhZHMgaWYgT05MWSB3cml0ZXJzCiAg
IGlzIG5vbnplcm8uICAqLwoKc3RhdGljIHZvaWQKd2Fybl9mb3JfY29sbGlzaW9uc18xICh0
cmVlIHdyaXR0ZW4sIHRyZWUgd3JpdGVyLCBzdHJ1Y3QgdGxpc3QgKmxpc3QsCgkJICAgICAg
IGludCBvbmx5X3dyaXRlcykKewogIHN0cnVjdCB0bGlzdCAqdG1wOwoKICAvKiBBdm9pZCBk
dXBsaWNhdGUgd2FybmluZ3MuICAqLwogIGZvciAodG1wID0gd2FybmVkX2lkczsgdG1wOyB0
bXAgPSB0bXAtPm5leHQpCiAgICBpZiAodG1wLT5leHByID09IHdyaXR0ZW4pCiAgICAgIHJl
dHVybjsKCiAgd2hpbGUgKGxpc3QpCiAgICB7CiAgICAgIGlmIChsaXN0LT5leHByID09IHdy
aXR0ZW4KCSAgJiYgbGlzdC0+d3JpdGVyICE9IHdyaXRlcgoJICAmJiAoISBvbmx5X3dyaXRl
cyB8fCBsaXN0LT53cml0ZXIpKQoJewoJICB3YXJuZWRfaWRzID0gbmV3X3RsaXN0ICh3YXJu
ZWRfaWRzLCB3cml0dGVuLCBOVUxMX1RSRUUpOwoJICB3YXJuaW5nICgib3BlcmF0aW9uIG9u
IGAlcycgbWF5IGJlIHVuZGVmaW5lZCIsCgkJICAgSURFTlRJRklFUl9QT0lOVEVSIChERUNM
X05BTUUgKGxpc3QtPmV4cHIpKSk7Cgl9CiAgICAgIGxpc3QgPSBsaXN0LT5uZXh0OwogICAg
fQp9CgovKiBHaXZlbiBhIGxpc3QgTElTVCBvZiByZWZlcmVuY2VzIHRvIHZhcmlhYmxlcywg
ZmluZCB3aGV0aGVyIGFueSBvZiB0aGVzZQogICBjYW4gY2F1c2UgY29uZmxpY3RzIGR1ZSB0
byBtaXNzaW5nIHNlcXVlbmNlIHBvaW50cy4gICovCgpzdGF0aWMgdm9pZAp3YXJuX2Zvcl9j
b2xsaXNpb25zIChzdHJ1Y3QgdGxpc3QgKmxpc3QpCnsKICBzdHJ1Y3QgdGxpc3QgKnRtcDsK
CiAgZm9yICh0bXAgPSBsaXN0OyB0bXA7IHRtcCA9IHRtcC0+bmV4dCkKICAgIHsKICAgICAg
aWYgKHRtcC0+d3JpdGVyKQoJd2Fybl9mb3JfY29sbGlzaW9uc18xICh0bXAtPmV4cHIsIHRt
cC0+d3JpdGVyLCBsaXN0LCAwKTsKICAgIH0KfQoKLyogUmV0dXJuIG5vbnplcm8gaWYgWCBp
cyBhIHRyZWUgdGhhdCBjYW4gYmUgdmVyaWZpZWQgYnkgdGhlIHNlcXVlbmNlIHBvaW50CiAg
IHdhcm5pbmdzLiAgKi8Kc3RhdGljIGludAp3YXJuaW5nX2NhbmRpZGF0ZV9wICh0cmVlIHgp
CnsKICByZXR1cm4gVFJFRV9DT0RFICh4KSA9PSBWQVJfREVDTCB8fCBUUkVFX0NPREUgKHgp
ID09IFBBUk1fREVDTDsKfQoKLyogV2FsayB0aGUgdHJlZSBYLCBhbmQgcmVjb3JkIGFjY2Vz
c2VzIHRvIHZhcmlhYmxlcy4gIElmIFggaXMgd3JpdHRlbiBieSB0aGUKICAgcGFyZW50IHRy
ZWUsIFdSSVRFUiBpcyB0aGUgcGFyZW50LgogICBXZSBzdG9yZSBhY2Nlc3NlcyBpbiBvbmUg
b2YgdGhlIHR3byBsaXN0czogUEJFRk9SRV9TUCwgYW5kIFBOT19TUC4gIElmIHRoaXMKICAg
ZXhwcmVzc2lvbiBvciBpdHMgb25seSBvcGVyYW5kIGZvcmNlcyBhIHNlcXVlbmNlIHBvaW50
LCB0aGVuIGV2ZXJ5dGhpbmcgdXAKICAgdG8gdGhlIHNlcXVlbmNlIHBvaW50IGlzIHN0b3Jl
ZCBpbiBQQkVGT1JFX1NQLiAgRXZlcnl0aGluZyBlbHNlIGdldHMgc3RvcmVkCiAgIGluIFBO
T19TUC4KICAgT25jZSB3ZSByZXR1cm4sIHdlIHdpbGwgaGF2ZSBlbWl0dGVkIHdhcm5pbmdz
IGlmIGFueSBzdWJleHByZXNzaW9uIGJlZm9yZQogICBzdWNoIGEgc2VxdWVuY2UgcG9pbnQg
Y291bGQgYmUgdW5kZWZpbmVkLiAgT24gYSBoaWdoZXIgbGV2ZWwsIGhvd2V2ZXIsIHRoZQog
ICBzZXF1ZW5jZSBwb2ludCBtYXkgbm90IGJlIHJlbGV2YW50LCBhbmQgd2UnbGwgbWVyZ2Ug
dGhlIHR3byBsaXN0cy4KCiAgIEV4YW1wbGU6IChiKyssIGEpICsgYjsKICAgVGhlIGNhbGwg
dGhhdCBwcm9jZXNzZXMgdGhlIENPTVBPVU5EX0VYUFIgd2lsbCBzdG9yZSB0aGUgaW5jcmVt
ZW50IG9mIEIKICAgaW4gUEJFRk9SRV9TUCwgYW5kIHRoZSB1c2Ugb2YgQSBpbiBQTk9fU1Au
ICBUaGUgaGlnaGVyLWxldmVsIGNhbGwgdGhhdAogICBwcm9jZXNzZXMgdGhlIFBMVVNfRVhQ
UiB3aWxsIG5lZWQgdG8gbWVyZ2UgdGhlIHR3byBsaXN0cyBzbyB0aGF0CiAgIGV2ZW50dWFs
bHksIGFsbCBhY2Nlc3NlcyBlbmQgdXAgb24gdGhlIHNhbWUgbGlzdCAoYW5kIHdlJ2xsIHdh
cm4gYWJvdXQgdGhlCiAgIHVub3JkZXJlZCBzdWJleHByZXNzaW9ucyBiKysgYW5kIGIuCgog
ICBBIG5vdGUgb24gbWVyZ2luZy4gIElmIHdlIG1vZGlmeSB0aGUgZm9ybWVyIGV4YW1wbGUg
c28gdGhhdCBvdXIgZXhwcmVzc2lvbgogICBiZWNvbWVzCiAgICAgKGIrKywgYikgKyBhCiAg
IGNhcmUgbXVzdCBiZSB0YWtlbiBub3Qgc2ltcGx5IHRvIGFkZCBhbGwgdGhyZWUgZXhwcmVz
c2lvbnMgaW50byB0aGUgZmluYWwKICAgUE5PX1NQIGxpc3QuICBUaGUgZnVuY3Rpb24gbWVy
Z2VfdGxpc3QgdGFrZXMgY2FyZSBvZiB0aGF0IGJ5IG1lcmdpbmcgdGhlCiAgIGJlZm9yZS1T
UCBsaXN0IG9mIHRoZSBDT01QT1VORF9FWFBSIGludG8gaXRzIGFmdGVyLVNQIGxpc3QgaW4g
YSBzcGVjaWFsCiAgIHdheSwgc28gdGhhdCBubyBtb3JlIHRoYW4gb25lIGFjY2VzcyB0byBC
IGlzIHJlY29yZGVkLiAgKi8KCnN0YXRpYyB2b2lkCnZlcmlmeV90cmVlICh0cmVlIHgsIHN0
cnVjdCB0bGlzdCAqKnBiZWZvcmVfc3AsIHN0cnVjdCB0bGlzdCAqKnBub19zcCwKCSAgICAg
dHJlZSB3cml0ZXIpCnsKICBzdHJ1Y3QgdGxpc3QgKnRtcF9iZWZvcmUsICp0bXBfbm9zcCwg
KnRtcF9saXN0MiwgKnRtcF9saXN0MzsKICBlbnVtIHRyZWVfY29kZSBjb2RlOwogIGNoYXIg
Y2xhc3M7CgogIC8qIFggbWF5IGJlIE5VTEwgaWYgaXQgaXMgdGhlIG9wZXJhbmQgb2YgYW4g
ZW1wdHkgc3RhdGVtZW50IGV4cHJlc3Npb24KICAgICAoeyB9KS4gICovCiAgaWYgKHggPT0g
TlVMTCkKICAgIHJldHVybjsKCiByZXN0YXJ0OgogIGNvZGUgPSBUUkVFX0NPREUgKHgpOwog
IGNsYXNzID0gVFJFRV9DT0RFX0NMQVNTIChjb2RlKTsKCiAgaWYgKHdhcm5pbmdfY2FuZGlk
YXRlX3AgKHgpKQogICAgewogICAgICAqcG5vX3NwID0gbmV3X3RsaXN0ICgqcG5vX3NwLCB4
LCB3cml0ZXIpOwogICAgICByZXR1cm47CiAgICB9CgogIHN3aXRjaCAoY29kZSkKICAgIHsK
ICAgIGNhc2UgQ09OU1RSVUNUT1I6CiAgICAgIHJldHVybjsKCiAgICBjYXNlIENPTVBPVU5E
X0VYUFI6CiAgICBjYXNlIFRSVVRIX0FORElGX0VYUFI6CiAgICBjYXNlIFRSVVRIX09SSUZf
RVhQUjoKICAgICAgdG1wX2JlZm9yZSA9IHRtcF9ub3NwID0gdG1wX2xpc3QzID0gMDsKICAg
ICAgdmVyaWZ5X3RyZWUgKFRSRUVfT1BFUkFORCAoeCwgMCksICZ0bXBfYmVmb3JlLCAmdG1w
X25vc3AsIE5VTExfVFJFRSk7CiAgICAgIHdhcm5fZm9yX2NvbGxpc2lvbnMgKHRtcF9ub3Nw
KTsKICAgICAgbWVyZ2VfdGxpc3QgKHBiZWZvcmVfc3AsIHRtcF9iZWZvcmUsIDApOwogICAg
ICBtZXJnZV90bGlzdCAocGJlZm9yZV9zcCwgdG1wX25vc3AsIDApOwogICAgICB2ZXJpZnlf
dHJlZSAoVFJFRV9PUEVSQU5EICh4LCAxKSwgJnRtcF9saXN0MywgcG5vX3NwLCBOVUxMX1RS
RUUpOwogICAgICBtZXJnZV90bGlzdCAocGJlZm9yZV9zcCwgdG1wX2xpc3QzLCAwKTsKICAg
ICAgcmV0dXJuOwoKICAgIGNhc2UgQ09ORF9FWFBSOgogICAgICB0bXBfYmVmb3JlID0gdG1w
X2xpc3QyID0gMDsKICAgICAgdmVyaWZ5X3RyZWUgKFRSRUVfT1BFUkFORCAoeCwgMCksICZ0
bXBfYmVmb3JlLCAmdG1wX2xpc3QyLCBOVUxMX1RSRUUpOwogICAgICB3YXJuX2Zvcl9jb2xs
aXNpb25zICh0bXBfbGlzdDIpOwogICAgICBtZXJnZV90bGlzdCAocGJlZm9yZV9zcCwgdG1w
X2JlZm9yZSwgMCk7CiAgICAgIG1lcmdlX3RsaXN0IChwYmVmb3JlX3NwLCB0bXBfbGlzdDIs
IDEpOwoKICAgICAgdG1wX2xpc3QzID0gdG1wX25vc3AgPSAwOwogICAgICB2ZXJpZnlfdHJl
ZSAoVFJFRV9PUEVSQU5EICh4LCAxKSwgJnRtcF9saXN0MywgJnRtcF9ub3NwLCBOVUxMX1RS
RUUpOwogICAgICB3YXJuX2Zvcl9jb2xsaXNpb25zICh0bXBfbm9zcCk7CiAgICAgIG1lcmdl
X3RsaXN0IChwYmVmb3JlX3NwLCB0bXBfbGlzdDMsIDApOwoKICAgICAgdG1wX2xpc3QzID0g
dG1wX2xpc3QyID0gMDsKICAgICAgdmVyaWZ5X3RyZWUgKFRSRUVfT1BFUkFORCAoeCwgMiks
ICZ0bXBfbGlzdDMsICZ0bXBfbGlzdDIsIE5VTExfVFJFRSk7CiAgICAgIHdhcm5fZm9yX2Nv
bGxpc2lvbnMgKHRtcF9saXN0Mik7CiAgICAgIG1lcmdlX3RsaXN0IChwYmVmb3JlX3NwLCB0
bXBfbGlzdDMsIDApOwogICAgICAvKiBSYXRoZXIgdGhhbiBhZGQgYm90aCB0bXBfbm9zcCBh
bmQgdG1wX2xpc3QyLCB3ZSBoYXZlIHRvIG1lcmdlIHRoZQoJIHR3byBmaXJzdCwgdG8gYXZv
aWQgd2FybmluZyBmb3IgKGEgPyBiKysgOiBiKyspLiAgKi8KICAgICAgbWVyZ2VfdGxpc3Qg
KCZ0bXBfbm9zcCwgdG1wX2xpc3QyLCAwKTsKICAgICAgYWRkX3RsaXN0IChwbm9fc3AsIHRt
cF9ub3NwLCBOVUxMX1RSRUUsIDApOwogICAgICByZXR1cm47CgogICAgY2FzZSBQUkVERUNS
RU1FTlRfRVhQUjoKICAgIGNhc2UgUFJFSU5DUkVNRU5UX0VYUFI6CiAgICBjYXNlIFBPU1RE
RUNSRU1FTlRfRVhQUjoKICAgIGNhc2UgUE9TVElOQ1JFTUVOVF9FWFBSOgogICAgICB2ZXJp
ZnlfdHJlZSAoVFJFRV9PUEVSQU5EICh4LCAwKSwgcG5vX3NwLCBwbm9fc3AsIHgpOwogICAg
ICByZXR1cm47CgogICAgY2FzZSBNT0RJRllfRVhQUjoKICAgICAgdG1wX2JlZm9yZSA9IHRt
cF9ub3NwID0gdG1wX2xpc3QzID0gMDsKICAgICAgdmVyaWZ5X3RyZWUgKFRSRUVfT1BFUkFO
RCAoeCwgMSksICZ0bXBfYmVmb3JlLCAmdG1wX25vc3AsIE5VTExfVFJFRSk7CiAgICAgIHZl
cmlmeV90cmVlIChUUkVFX09QRVJBTkQgKHgsIDApLCAmdG1wX2xpc3QzLCAmdG1wX2xpc3Qz
LCB4KTsKICAgICAgLyogRXhwcmVzc2lvbnMgaW5zaWRlIHRoZSBMSFMgYXJlIG5vdCBvcmRl
cmVkIHdydC4gdGhlIHNlcXVlbmNlIHBvaW50cwoJIGluIHRoZSBSSFMuICBFeGFtcGxlOgoJ
ICAgKmEgPSAoYSsrLCAyKQoJIERlc3BpdGUgdGhlIGZhY3QgdGhhdCB0aGUgbW9kaWZpY2F0
aW9uIG9mICJhIiBpcyBpbiB0aGUgYmVmb3JlX3NwCgkgbGlzdCAodG1wX2JlZm9yZSksIGl0
IGNvbmZsaWN0cyB3aXRoIHRoZSB1c2Ugb2YgImEiIGluIHRoZSBMSFMuCgkgV2UgY2FuIGhh
bmRsZSB0aGlzIGJ5IGFkZGluZyB0aGUgY29udGVudHMgb2YgdG1wX2xpc3QzCgkgdG8gdGhv
c2Ugb2YgdG1wX2JlZm9yZSwgYW5kIHJlZG9pbmcgdGhlIGNvbGxpc2lvbiB3YXJuaW5ncyBm
b3IgdGhhdAoJIGxpc3QuICAqLwogICAgICBhZGRfdGxpc3QgKCZ0bXBfYmVmb3JlLCB0bXBf
bGlzdDMsIHgsIDEpOwogICAgICB3YXJuX2Zvcl9jb2xsaXNpb25zICh0bXBfYmVmb3JlKTsK
ICAgICAgLyogRXhjbHVkZSB0aGUgTEhTIGl0c2VsZiBoZXJlOyB3ZSBmaXJzdCBoYXZlIHRv
IG1lcmdlIGl0IGludG8gdGhlCgkgdG1wX25vc3AgbGlzdC4gIFRoaXMgaXMgZG9uZSB0byBh
dm9pZCB3YXJuaW5nIGZvciAiYSA9IGEiOyBpZiB3ZQoJIGRpZG4ndCBleGNsdWRlIHRoZSBM
SFMsIHdlJ2QgZ2V0IGl0IHR3aWNlLCBvbmNlIGFzIGEgcmVhZCBhbmQgb25jZQoJIGFzIGEg
d3JpdGUuICAqLwogICAgICBhZGRfdGxpc3QgKHBub19zcCwgdG1wX2xpc3QzLCB4LCAwKTsK
ICAgICAgd2Fybl9mb3JfY29sbGlzaW9uc18xIChUUkVFX09QRVJBTkQgKHgsIDApLCB4LCB0
bXBfbm9zcCwgMSk7CgogICAgICBtZXJnZV90bGlzdCAocGJlZm9yZV9zcCwgdG1wX2JlZm9y
ZSwgMCk7CiAgICAgIGlmICh3YXJuaW5nX2NhbmRpZGF0ZV9wIChUUkVFX09QRVJBTkQgKHgs
IDApKSkKCW1lcmdlX3RsaXN0ICgmdG1wX25vc3AsIG5ld190bGlzdCAoTlVMTCwgVFJFRV9P
UEVSQU5EICh4LCAwKSwgeCksIDApOwogICAgICBhZGRfdGxpc3QgKHBub19zcCwgdG1wX25v
c3AsIE5VTExfVFJFRSwgMSk7CiAgICAgIHJldHVybjsKCiAgICBjYXNlIENBTExfRVhQUjoK
ICAgICAgLyogV2UgbmVlZCB0byB3YXJuIGFib3V0IGNvbmZsaWN0cyBhbW9uZyBhcmd1bWVu
dHMgYW5kIGNvbmZsaWN0cyBiZXR3ZWVuCgkgYXJncyBhbmQgdGhlIGZ1bmN0aW9uIGFkZHJl
c3MuICBTaWRlIGVmZmVjdHMgb2YgdGhlIGZ1bmN0aW9uIGFkZHJlc3MsCgkgaG93ZXZlciwg
YXJlIG5vdCBvcmRlcmVkIGJ5IHRoZSBzZXF1ZW5jZSBwb2ludCBvZiB0aGUgY2FsbC4gICov
CiAgICAgIHRtcF9iZWZvcmUgPSB0bXBfbm9zcCA9IHRtcF9saXN0MiA9IHRtcF9saXN0MyA9
IDA7CiAgICAgIHZlcmlmeV90cmVlIChUUkVFX09QRVJBTkQgKHgsIDApLCAmdG1wX2JlZm9y
ZSwgJnRtcF9ub3NwLCBOVUxMX1RSRUUpOwogICAgICBpZiAoVFJFRV9PUEVSQU5EICh4LCAx
KSkKCXZlcmlmeV90cmVlIChUUkVFX09QRVJBTkQgKHgsIDEpLCAmdG1wX2xpc3QyLCAmdG1w
X2xpc3QzLCBOVUxMX1RSRUUpOwogICAgICBtZXJnZV90bGlzdCAoJnRtcF9saXN0MywgdG1w
X2xpc3QyLCAwKTsKICAgICAgYWRkX3RsaXN0ICgmdG1wX2JlZm9yZSwgdG1wX2xpc3QzLCBO
VUxMX1RSRUUsIDApOwogICAgICBhZGRfdGxpc3QgKCZ0bXBfYmVmb3JlLCB0bXBfbm9zcCwg
TlVMTF9UUkVFLCAwKTsKICAgICAgd2Fybl9mb3JfY29sbGlzaW9ucyAodG1wX2JlZm9yZSk7
CiAgICAgIGFkZF90bGlzdCAocGJlZm9yZV9zcCwgdG1wX2JlZm9yZSwgTlVMTF9UUkVFLCAw
KTsKICAgICAgcmV0dXJuOwoKICAgIGNhc2UgVFJFRV9MSVNUOgogICAgICAvKiBTY2FuIGFs
bCB0aGUgbGlzdCwgZS5nLiBpbmRpY2VzIG9mIG11bHRpIGRpbWVuc2lvbmFsIGFycmF5LiAg
Ki8KICAgICAgd2hpbGUgKHgpCgl7CgkgIHRtcF9iZWZvcmUgPSB0bXBfbm9zcCA9IDA7Cgkg
IHZlcmlmeV90cmVlIChUUkVFX1ZBTFVFICh4KSwgJnRtcF9iZWZvcmUsICZ0bXBfbm9zcCwg
TlVMTF9UUkVFKTsKCSAgbWVyZ2VfdGxpc3QgKCZ0bXBfbm9zcCwgdG1wX2JlZm9yZSwgMCk7
CgkgIGFkZF90bGlzdCAocG5vX3NwLCB0bXBfbm9zcCwgTlVMTF9UUkVFLCAwKTsKCSAgeCA9
IFRSRUVfQ0hBSU4gKHgpOwoJfQogICAgICByZXR1cm47CgogICAgY2FzZSBTQVZFX0VYUFI6
CiAgICAgIHsKCXN0cnVjdCB0bGlzdF9jYWNoZSAqdDsKCWZvciAodCA9IHNhdmVfZXhwcl9j
YWNoZTsgdDsgdCA9IHQtPm5leHQpCgkgIGlmICh0LT5leHByID09IHgpCgkgICAgYnJlYWs7
CgoJaWYgKCEgdCkKCSAgewoJICAgIHQgPSAoc3RydWN0IHRsaXN0X2NhY2hlICopIG9ic3Rh
Y2tfYWxsb2MgKCZ0bGlzdF9vYnN0YWNrLAoJCQkJCQkgICAgICBzaXplb2YgKnQpOwoJICAg
IHQtPm5leHQgPSBzYXZlX2V4cHJfY2FjaGU7CgkgICAgdC0+ZXhwciA9IHg7CgkgICAgc2F2
ZV9leHByX2NhY2hlID0gdDsKCgkgICAgdG1wX2JlZm9yZSA9IHRtcF9ub3NwID0gMDsKCSAg
ICB2ZXJpZnlfdHJlZSAoVFJFRV9PUEVSQU5EICh4LCAwKSwgJnRtcF9iZWZvcmUsICZ0bXBf
bm9zcCwgTlVMTF9UUkVFKTsKCSAgICB3YXJuX2Zvcl9jb2xsaXNpb25zICh0bXBfbm9zcCk7
CgoJICAgIHRtcF9saXN0MyA9IDA7CgkgICAgd2hpbGUgKHRtcF9ub3NwKQoJICAgICAgewoJ
CXN0cnVjdCB0bGlzdCAqdCA9IHRtcF9ub3NwOwoJCXRtcF9ub3NwID0gdC0+bmV4dDsKCQlt
ZXJnZV90bGlzdCAoJnRtcF9saXN0MywgdCwgMCk7CgkgICAgICB9CgkgICAgdC0+Y2FjaGVf
YmVmb3JlX3NwID0gdG1wX2JlZm9yZTsKCSAgICB0LT5jYWNoZV9hZnRlcl9zcCA9IHRtcF9s
aXN0MzsKCSAgfQoJbWVyZ2VfdGxpc3QgKHBiZWZvcmVfc3AsIHQtPmNhY2hlX2JlZm9yZV9z
cCwgMSk7CglhZGRfdGxpc3QgKHBub19zcCwgdC0+Y2FjaGVfYWZ0ZXJfc3AsIE5VTExfVFJF
RSwgMSk7CglyZXR1cm47CiAgICAgIH0KICAgIGRlZmF1bHQ6CiAgICAgIGJyZWFrOwogICAg
fQoKICBpZiAoY2xhc3MgPT0gJzEnKQogICAgewogICAgICBpZiAoZmlyc3RfcnRsX29wIChj
b2RlKSA9PSAwKQoJcmV0dXJuOwogICAgICB4ID0gVFJFRV9PUEVSQU5EICh4LCAwKTsKICAg
ICAgd3JpdGVyID0gMDsKICAgICAgZ290byByZXN0YXJ0OwogICAgfQoKICBzd2l0Y2ggKGNs
YXNzKQogICAgewogICAgY2FzZSAncic6CiAgICBjYXNlICc8JzoKICAgIGNhc2UgJzInOgog
ICAgY2FzZSAnYic6CiAgICBjYXNlICdlJzoKICAgIGNhc2UgJ3MnOgogICAgY2FzZSAneCc6
CiAgICAgIHsKCWludCBscDsKCWludCBtYXggPSBmaXJzdF9ydGxfb3AgKFRSRUVfQ09ERSAo
eCkpOwoJZm9yIChscCA9IDA7IGxwIDwgbWF4OyBscCsrKQoJICB7CgkgICAgdG1wX2JlZm9y
ZSA9IHRtcF9ub3NwID0gMDsKCSAgICB2ZXJpZnlfdHJlZSAoVFJFRV9PUEVSQU5EICh4LCBs
cCksICZ0bXBfYmVmb3JlLCAmdG1wX25vc3AsIE5VTExfVFJFRSk7CgkgICAgbWVyZ2VfdGxp
c3QgKCZ0bXBfbm9zcCwgdG1wX2JlZm9yZSwgMCk7CgkgICAgYWRkX3RsaXN0IChwbm9fc3As
IHRtcF9ub3NwLCBOVUxMX1RSRUUsIDApOwoJICB9CglicmVhazsKICAgICAgfQogICAgfQp9
CgovKiBUcnkgdG8gd2FybiBmb3IgdW5kZWZpbmVkIGJlaGF2aW9yIGluIEVYUFIgZHVlIHRv
IG1pc3Npbmcgc2VxdWVuY2UKICAgcG9pbnRzLiAgKi8KCnN0YXRpYyB2b2lkCnZlcmlmeV9z
ZXF1ZW5jZV9wb2ludHMgKHRyZWUgZXhwcikKewogIHN0cnVjdCB0bGlzdCAqYmVmb3JlX3Nw
ID0gMCwgKmFmdGVyX3NwID0gMDsKCiAgd2FybmVkX2lkcyA9IDA7CiAgc2F2ZV9leHByX2Nh
Y2hlID0gMDsKICBpZiAodGxpc3RfZmlyc3RvYmogPT0gMCkKICAgIHsKICAgICAgZ2NjX29i
c3RhY2tfaW5pdCAoJnRsaXN0X29ic3RhY2spOwogICAgICB0bGlzdF9maXJzdG9iaiA9IG9i
c3RhY2tfYWxsb2MgKCZ0bGlzdF9vYnN0YWNrLCAwKTsKICAgIH0KCiAgdmVyaWZ5X3RyZWUg
KGV4cHIsICZiZWZvcmVfc3AsICZhZnRlcl9zcCwgMCk7CiAgd2Fybl9mb3JfY29sbGlzaW9u
cyAoYWZ0ZXJfc3ApOwogIG9ic3RhY2tfZnJlZSAoJnRsaXN0X29ic3RhY2ssIHRsaXN0X2Zp
cnN0b2JqKTsKfQoKdHJlZQpjX2V4cGFuZF9leHByX3N0bXQgKHRyZWUgZXhwcikKewogIC8q
IERvIGRlZmF1bHQgY29udmVyc2lvbiBpZiBzYWZlIGFuZCBwb3NzaWJseSBpbXBvcnRhbnQs
CiAgICAgaW4gY2FzZSB3aXRoaW4gKHsuLi59KS4gICovCiAgaWYgKChUUkVFX0NPREUgKFRS
RUVfVFlQRSAoZXhwcikpID09IEFSUkFZX1RZUEUKICAgICAgICYmIChmbGFnX2lzb2M5OSB8
fCBsdmFsdWVfcCAoZXhwcikpKQogICAgICB8fCBUUkVFX0NPREUgKFRSRUVfVFlQRSAoZXhw
cikpID09IEZVTkNUSU9OX1RZUEUpCiAgICBleHByID0gZGVmYXVsdF9jb252ZXJzaW9uIChl
eHByKTsKCiAgaWYgKHdhcm5fc2VxdWVuY2VfcG9pbnQpCiAgICB2ZXJpZnlfc2VxdWVuY2Vf
cG9pbnRzIChleHByKTsKCiAgaWYgKFRSRUVfVFlQRSAoZXhwcikgIT0gZXJyb3JfbWFya19u
b2RlCiAgICAgICYmICFDT01QTEVURV9PUl9WT0lEX1RZUEVfUCAoVFJFRV9UWVBFIChleHBy
KSkKICAgICAgJiYgVFJFRV9DT0RFIChUUkVFX1RZUEUgKGV4cHIpKSAhPSBBUlJBWV9UWVBF
KQogICAgZXJyb3IgKCJleHByZXNzaW9uIHN0YXRlbWVudCBoYXMgaW5jb21wbGV0ZSB0eXBl
Iik7CgogIGxhc3RfZXhwcl90eXBlID0gVFJFRV9UWVBFIChleHByKTsKICByZXR1cm4gYWRk
X3N0bXQgKGJ1aWxkX3N0bXQgKEVYUFJfU1RNVCwgZXhwcikpOwp9CgwKLyogVmFsaWRhdGUg
dGhlIGV4cHJlc3Npb24gYWZ0ZXIgYGNhc2UnIGFuZCBhcHBseSBkZWZhdWx0IHByb21vdGlv
bnMuICAqLwoKdHJlZQpjaGVja19jYXNlX3ZhbHVlICh0cmVlIHZhbHVlKQp7CiAgaWYgKHZh
bHVlID09IE5VTExfVFJFRSkKICAgIHJldHVybiB2YWx1ZTsKCiAgLyogU3RyaXAgTk9OX0xW
QUxVRV9FWFBScyBzaW5jZSB3ZSBhcmVuJ3QgdXNpbmcgYXMgYW4gbHZhbHVlLiAgKi8KICBT
VFJJUF9UWVBFX05PUFMgKHZhbHVlKTsKICAvKiBJbiBDKyssIHRoZSBmb2xsb3dpbmcgaXMg
YWxsb3dlZDoKCiAgICAgICBjb25zdCBpbnQgaSA9IDM7CiAgICAgICBzd2l0Y2ggKC4uLikg
eyBjYXNlIGk6IC4uLiB9CgogICAgIFNvLCB3ZSB0cnkgdG8gcmVkdWNlIHRoZSBWQUxVRSB0
byBhIGNvbnN0YW50IHRoYXQgd2F5LiAgKi8KICBpZiAoY19kaWFsZWN0X2N4eCAoKSkKICAg
IHsKICAgICAgdmFsdWUgPSBkZWNsX2NvbnN0YW50X3ZhbHVlICh2YWx1ZSk7CiAgICAgIFNU
UklQX1RZUEVfTk9QUyAodmFsdWUpOwogICAgICB2YWx1ZSA9IGZvbGQgKHZhbHVlKTsKICAg
IH0KCiAgaWYgKFRSRUVfQ09ERSAodmFsdWUpICE9IElOVEVHRVJfQ1NUCiAgICAgICYmIHZh
bHVlICE9IGVycm9yX21hcmtfbm9kZSkKICAgIHsKICAgICAgZXJyb3IgKCJjYXNlIGxhYmVs
IGRvZXMgbm90IHJlZHVjZSB0byBhbiBpbnRlZ2VyIGNvbnN0YW50Iik7CiAgICAgIHZhbHVl
ID0gZXJyb3JfbWFya19ub2RlOwogICAgfQogIGVsc2UKICAgIC8qIFByb21vdGUgY2hhciBv
ciBzaG9ydCB0byBpbnQuICAqLwogICAgdmFsdWUgPSBkZWZhdWx0X2NvbnZlcnNpb24gKHZh
bHVlKTsKCiAgY29uc3RhbnRfZXhwcmVzc2lvbl93YXJuaW5nICh2YWx1ZSk7CgogIHJldHVy
biB2YWx1ZTsKfQoMCi8qIFJldHVybiBhbiBpbnRlZ2VyIHR5cGUgd2l0aCBCSVRTIGJpdHMg
b2YgcHJlY2lzaW9uLAogICB0aGF0IGlzIHVuc2lnbmVkIGlmIFVOU0lHTkVEUCBpcyBub256
ZXJvLCBvdGhlcndpc2Ugc2lnbmVkLiAgKi8KCnRyZWUKY19jb21tb25fdHlwZV9mb3Jfc2l6
ZSAodW5zaWduZWQgaW50IGJpdHMsIGludCB1bnNpZ25lZHApCnsKICBpZiAoYml0cyA9PSBU
WVBFX1BSRUNJU0lPTiAoaW50ZWdlcl90eXBlX25vZGUpKQogICAgcmV0dXJuIHVuc2lnbmVk
cCA/IHVuc2lnbmVkX3R5cGVfbm9kZSA6IGludGVnZXJfdHlwZV9ub2RlOwoKICBpZiAoYml0
cyA9PSBUWVBFX1BSRUNJU0lPTiAoc2lnbmVkX2NoYXJfdHlwZV9ub2RlKSkKICAgIHJldHVy
biB1bnNpZ25lZHAgPyB1bnNpZ25lZF9jaGFyX3R5cGVfbm9kZSA6IHNpZ25lZF9jaGFyX3R5
cGVfbm9kZTsKCiAgaWYgKGJpdHMgPT0gVFlQRV9QUkVDSVNJT04gKHNob3J0X2ludGVnZXJf
dHlwZV9ub2RlKSkKICAgIHJldHVybiB1bnNpZ25lZHAgPyBzaG9ydF91bnNpZ25lZF90eXBl
X25vZGUgOiBzaG9ydF9pbnRlZ2VyX3R5cGVfbm9kZTsKCiAgaWYgKGJpdHMgPT0gVFlQRV9Q
UkVDSVNJT04gKGxvbmdfaW50ZWdlcl90eXBlX25vZGUpKQogICAgcmV0dXJuIHVuc2lnbmVk
cCA/IGxvbmdfdW5zaWduZWRfdHlwZV9ub2RlIDogbG9uZ19pbnRlZ2VyX3R5cGVfbm9kZTsK
CiAgaWYgKGJpdHMgPT0gVFlQRV9QUkVDSVNJT04gKGxvbmdfbG9uZ19pbnRlZ2VyX3R5cGVf
bm9kZSkpCiAgICByZXR1cm4gKHVuc2lnbmVkcCA/IGxvbmdfbG9uZ191bnNpZ25lZF90eXBl
X25vZGUKCSAgICA6IGxvbmdfbG9uZ19pbnRlZ2VyX3R5cGVfbm9kZSk7CgogIGlmIChiaXRz
ID09IFRZUEVfUFJFQ0lTSU9OICh3aWRlc3RfaW50ZWdlcl9saXRlcmFsX3R5cGVfbm9kZSkp
CiAgICByZXR1cm4gKHVuc2lnbmVkcCA/IHdpZGVzdF91bnNpZ25lZF9saXRlcmFsX3R5cGVf
bm9kZQoJICAgIDogd2lkZXN0X2ludGVnZXJfbGl0ZXJhbF90eXBlX25vZGUpOwoKICBpZiAo
Yml0cyA8PSBUWVBFX1BSRUNJU0lPTiAoaW50UUlfdHlwZV9ub2RlKSkKICAgIHJldHVybiB1
bnNpZ25lZHAgPyB1bnNpZ25lZF9pbnRRSV90eXBlX25vZGUgOiBpbnRRSV90eXBlX25vZGU7
CgogIGlmIChiaXRzIDw9IFRZUEVfUFJFQ0lTSU9OIChpbnRISV90eXBlX25vZGUpKQogICAg
cmV0dXJuIHVuc2lnbmVkcCA/IHVuc2lnbmVkX2ludEhJX3R5cGVfbm9kZSA6IGludEhJX3R5
cGVfbm9kZTsKCiAgaWYgKGJpdHMgPD0gVFlQRV9QUkVDSVNJT04gKGludFNJX3R5cGVfbm9k
ZSkpCiAgICByZXR1cm4gdW5zaWduZWRwID8gdW5zaWduZWRfaW50U0lfdHlwZV9ub2RlIDog
aW50U0lfdHlwZV9ub2RlOwoKICBpZiAoYml0cyA8PSBUWVBFX1BSRUNJU0lPTiAoaW50RElf
dHlwZV9ub2RlKSkKICAgIHJldHVybiB1bnNpZ25lZHAgPyB1bnNpZ25lZF9pbnRESV90eXBl
X25vZGUgOiBpbnRESV90eXBlX25vZGU7CgogIHJldHVybiAwOwp9CgovKiBSZXR1cm4gYSBk
YXRhIHR5cGUgdGhhdCBoYXMgbWFjaGluZSBtb2RlIE1PREUuCiAgIElmIHRoZSBtb2RlIGlz
IGFuIGludGVnZXIsCiAgIHRoZW4gVU5TSUdORURQIHNlbGVjdHMgYmV0d2VlbiBzaWduZWQg
YW5kIHVuc2lnbmVkIHR5cGVzLiAgKi8KCnRyZWUKY19jb21tb25fdHlwZV9mb3JfbW9kZSAo
ZW51bSBtYWNoaW5lX21vZGUgbW9kZSwgaW50IHVuc2lnbmVkcCkKewogIGlmIChtb2RlID09
IFRZUEVfTU9ERSAoaW50ZWdlcl90eXBlX25vZGUpKQogICAgcmV0dXJuIHVuc2lnbmVkcCA/
IHVuc2lnbmVkX3R5cGVfbm9kZSA6IGludGVnZXJfdHlwZV9ub2RlOwoKICBpZiAobW9kZSA9
PSBUWVBFX01PREUgKHNpZ25lZF9jaGFyX3R5cGVfbm9kZSkpCiAgICByZXR1cm4gdW5zaWdu
ZWRwID8gdW5zaWduZWRfY2hhcl90eXBlX25vZGUgOiBzaWduZWRfY2hhcl90eXBlX25vZGU7
CgogIGlmIChtb2RlID09IFRZUEVfTU9ERSAoc2hvcnRfaW50ZWdlcl90eXBlX25vZGUpKQog
ICAgcmV0dXJuIHVuc2lnbmVkcCA/IHNob3J0X3Vuc2lnbmVkX3R5cGVfbm9kZSA6IHNob3J0
X2ludGVnZXJfdHlwZV9ub2RlOwoKICBpZiAobW9kZSA9PSBUWVBFX01PREUgKGxvbmdfaW50
ZWdlcl90eXBlX25vZGUpKQogICAgcmV0dXJuIHVuc2lnbmVkcCA/IGxvbmdfdW5zaWduZWRf
dHlwZV9ub2RlIDogbG9uZ19pbnRlZ2VyX3R5cGVfbm9kZTsKCiAgaWYgKG1vZGUgPT0gVFlQ
RV9NT0RFIChsb25nX2xvbmdfaW50ZWdlcl90eXBlX25vZGUpKQogICAgcmV0dXJuIHVuc2ln
bmVkcCA/IGxvbmdfbG9uZ191bnNpZ25lZF90eXBlX25vZGUgOiBsb25nX2xvbmdfaW50ZWdl
cl90eXBlX25vZGU7CgogIGlmIChtb2RlID09IFRZUEVfTU9ERSAod2lkZXN0X2ludGVnZXJf
bGl0ZXJhbF90eXBlX25vZGUpKQogICAgcmV0dXJuIHVuc2lnbmVkcCA/IHdpZGVzdF91bnNp
Z25lZF9saXRlcmFsX3R5cGVfbm9kZQogICAgICAgICAgICAgICAgICAgICA6IHdpZGVzdF9p
bnRlZ2VyX2xpdGVyYWxfdHlwZV9ub2RlOwoKICBpZiAobW9kZSA9PSBRSW1vZGUpCiAgICBy
ZXR1cm4gdW5zaWduZWRwID8gdW5zaWduZWRfaW50UUlfdHlwZV9ub2RlIDogaW50UUlfdHlw
ZV9ub2RlOwoKICBpZiAobW9kZSA9PSBISW1vZGUpCiAgICByZXR1cm4gdW5zaWduZWRwID8g
dW5zaWduZWRfaW50SElfdHlwZV9ub2RlIDogaW50SElfdHlwZV9ub2RlOwoKICBpZiAobW9k
ZSA9PSBTSW1vZGUpCiAgICByZXR1cm4gdW5zaWduZWRwID8gdW5zaWduZWRfaW50U0lfdHlw
ZV9ub2RlIDogaW50U0lfdHlwZV9ub2RlOwoKICBpZiAobW9kZSA9PSBESW1vZGUpCiAgICBy
ZXR1cm4gdW5zaWduZWRwID8gdW5zaWduZWRfaW50RElfdHlwZV9ub2RlIDogaW50RElfdHlw
ZV9ub2RlOwoKI2lmIEhPU1RfQklUU19QRVJfV0lERV9JTlQgPj0gNjQKICBpZiAobW9kZSA9
PSBUWVBFX01PREUgKGludFRJX3R5cGVfbm9kZSkpCiAgICByZXR1cm4gdW5zaWduZWRwID8g
dW5zaWduZWRfaW50VElfdHlwZV9ub2RlIDogaW50VElfdHlwZV9ub2RlOwojZW5kaWYKCiAg
aWYgKG1vZGUgPT0gVFlQRV9NT0RFIChmbG9hdF90eXBlX25vZGUpKQogICAgcmV0dXJuIGZs
b2F0X3R5cGVfbm9kZTsKCiAgaWYgKG1vZGUgPT0gVFlQRV9NT0RFIChkb3VibGVfdHlwZV9u
b2RlKSkKICAgIHJldHVybiBkb3VibGVfdHlwZV9ub2RlOwoKICBpZiAobW9kZSA9PSBUWVBF
X01PREUgKGxvbmdfZG91YmxlX3R5cGVfbm9kZSkpCiAgICByZXR1cm4gbG9uZ19kb3VibGVf
dHlwZV9ub2RlOwoKICBpZiAobW9kZSA9PSBUWVBFX01PREUgKGJ1aWxkX3BvaW50ZXJfdHlw
ZSAoY2hhcl90eXBlX25vZGUpKSkKICAgIHJldHVybiBidWlsZF9wb2ludGVyX3R5cGUgKGNo
YXJfdHlwZV9ub2RlKTsKCiAgaWYgKG1vZGUgPT0gVFlQRV9NT0RFIChidWlsZF9wb2ludGVy
X3R5cGUgKGludGVnZXJfdHlwZV9ub2RlKSkpCiAgICByZXR1cm4gYnVpbGRfcG9pbnRlcl90
eXBlIChpbnRlZ2VyX3R5cGVfbm9kZSk7CgogIHN3aXRjaCAobW9kZSkKICAgIHsKICAgIGNh
c2UgVjE2UUltb2RlOgogICAgICByZXR1cm4gdW5zaWduZWRwID8gdW5zaWduZWRfVjE2UUlf
dHlwZV9ub2RlIDogVjE2UUlfdHlwZV9ub2RlOwogICAgY2FzZSBWOEhJbW9kZToKICAgICAg
cmV0dXJuIHVuc2lnbmVkcCA/IHVuc2lnbmVkX1Y4SElfdHlwZV9ub2RlIDogVjhISV90eXBl
X25vZGU7CiAgICBjYXNlIFY0U0ltb2RlOgogICAgICByZXR1cm4gdW5zaWduZWRwID8gdW5z
aWduZWRfVjRTSV90eXBlX25vZGUgOiBWNFNJX3R5cGVfbm9kZTsKICAgIGNhc2UgVjJESW1v
ZGU6CiAgICAgIHJldHVybiB1bnNpZ25lZHAgPyB1bnNpZ25lZF9WMkRJX3R5cGVfbm9kZSA6
IFYyRElfdHlwZV9ub2RlOwogICAgY2FzZSBWMlNJbW9kZToKICAgICAgcmV0dXJuIHVuc2ln
bmVkcCA/IHVuc2lnbmVkX1YyU0lfdHlwZV9ub2RlIDogVjJTSV90eXBlX25vZGU7CiAgICBj
YXNlIFYySEltb2RlOgogICAgICByZXR1cm4gdW5zaWduZWRwID8gdW5zaWduZWRfVjJISV90
eXBlX25vZGUgOiBWMkhJX3R5cGVfbm9kZTsKICAgIGNhc2UgVjRISW1vZGU6CiAgICAgIHJl
dHVybiB1bnNpZ25lZHAgPyB1bnNpZ25lZF9WNEhJX3R5cGVfbm9kZSA6IFY0SElfdHlwZV9u
b2RlOwogICAgY2FzZSBWOFFJbW9kZToKICAgICAgcmV0dXJuIHVuc2lnbmVkcCA/IHVuc2ln
bmVkX1Y4UUlfdHlwZV9ub2RlIDogVjhRSV90eXBlX25vZGU7CiAgICBjYXNlIFYxREltb2Rl
OgogICAgICByZXR1cm4gdW5zaWduZWRwID8gdW5zaWduZWRfVjFESV90eXBlX25vZGUgOiBW
MURJX3R5cGVfbm9kZTsKICAgIGNhc2UgVjE2U0Ztb2RlOgogICAgICByZXR1cm4gVjE2U0Zf
dHlwZV9ub2RlOwogICAgY2FzZSBWNFNGbW9kZToKICAgICAgcmV0dXJuIFY0U0ZfdHlwZV9u
b2RlOwogICAgY2FzZSBWMlNGbW9kZToKICAgICAgcmV0dXJuIFYyU0ZfdHlwZV9ub2RlOwog
ICAgY2FzZSBWMkRGbW9kZToKICAgICAgcmV0dXJuIFYyREZfdHlwZV9ub2RlOwogICAgZGVm
YXVsdDoKICAgICAgYnJlYWs7CiAgICB9CgogIHJldHVybiAwOwp9CgovKiBSZXR1cm4gYW4g
dW5zaWduZWQgdHlwZSB0aGUgc2FtZSBhcyBUWVBFIGluIG90aGVyIHJlc3BlY3RzLiAgKi8K
dHJlZQpjX2NvbW1vbl91bnNpZ25lZF90eXBlICh0cmVlIHR5cGUpCnsKICB0cmVlIHR5cGUx
ID0gVFlQRV9NQUlOX1ZBUklBTlQgKHR5cGUpOwogIGlmICh0eXBlMSA9PSBzaWduZWRfY2hh
cl90eXBlX25vZGUgfHwgdHlwZTEgPT0gY2hhcl90eXBlX25vZGUpCiAgICByZXR1cm4gdW5z
aWduZWRfY2hhcl90eXBlX25vZGU7CiAgaWYgKHR5cGUxID09IGludGVnZXJfdHlwZV9ub2Rl
KQogICAgcmV0dXJuIHVuc2lnbmVkX3R5cGVfbm9kZTsKICBpZiAodHlwZTEgPT0gc2hvcnRf
aW50ZWdlcl90eXBlX25vZGUpCiAgICByZXR1cm4gc2hvcnRfdW5zaWduZWRfdHlwZV9ub2Rl
OwogIGlmICh0eXBlMSA9PSBsb25nX2ludGVnZXJfdHlwZV9ub2RlKQogICAgcmV0dXJuIGxv
bmdfdW5zaWduZWRfdHlwZV9ub2RlOwogIGlmICh0eXBlMSA9PSBsb25nX2xvbmdfaW50ZWdl
cl90eXBlX25vZGUpCiAgICByZXR1cm4gbG9uZ19sb25nX3Vuc2lnbmVkX3R5cGVfbm9kZTsK
ICBpZiAodHlwZTEgPT0gd2lkZXN0X2ludGVnZXJfbGl0ZXJhbF90eXBlX25vZGUpCiAgICBy
ZXR1cm4gd2lkZXN0X3Vuc2lnbmVkX2xpdGVyYWxfdHlwZV9ub2RlOwojaWYgSE9TVF9CSVRT
X1BFUl9XSURFX0lOVCA+PSA2NAogIGlmICh0eXBlMSA9PSBpbnRUSV90eXBlX25vZGUpCiAg
ICByZXR1cm4gdW5zaWduZWRfaW50VElfdHlwZV9ub2RlOwojZW5kaWYKICBpZiAodHlwZTEg
PT0gaW50RElfdHlwZV9ub2RlKQogICAgcmV0dXJuIHVuc2lnbmVkX2ludERJX3R5cGVfbm9k
ZTsKICBpZiAodHlwZTEgPT0gaW50U0lfdHlwZV9ub2RlKQogICAgcmV0dXJuIHVuc2lnbmVk
X2ludFNJX3R5cGVfbm9kZTsKICBpZiAodHlwZTEgPT0gaW50SElfdHlwZV9ub2RlKQogICAg
cmV0dXJuIHVuc2lnbmVkX2ludEhJX3R5cGVfbm9kZTsKICBpZiAodHlwZTEgPT0gaW50UUlf
dHlwZV9ub2RlKQogICAgcmV0dXJuIHVuc2lnbmVkX2ludFFJX3R5cGVfbm9kZTsKCiAgcmV0
dXJuIGNfY29tbW9uX3NpZ25lZF9vcl91bnNpZ25lZF90eXBlICgxLCB0eXBlKTsKfQoKLyog
UmV0dXJuIGEgc2lnbmVkIHR5cGUgdGhlIHNhbWUgYXMgVFlQRSBpbiBvdGhlciByZXNwZWN0
cy4gICovCgp0cmVlCmNfY29tbW9uX3NpZ25lZF90eXBlICh0cmVlIHR5cGUpCnsKICB0cmVl
IHR5cGUxID0gVFlQRV9NQUlOX1ZBUklBTlQgKHR5cGUpOwogIGlmICh0eXBlMSA9PSB1bnNp
Z25lZF9jaGFyX3R5cGVfbm9kZSB8fCB0eXBlMSA9PSBjaGFyX3R5cGVfbm9kZSkKICAgIHJl
dHVybiBzaWduZWRfY2hhcl90eXBlX25vZGU7CiAgaWYgKHR5cGUxID09IHVuc2lnbmVkX3R5
cGVfbm9kZSkKICAgIHJldHVybiBpbnRlZ2VyX3R5cGVfbm9kZTsKICBpZiAodHlwZTEgPT0g
c2hvcnRfdW5zaWduZWRfdHlwZV9ub2RlKQogICAgcmV0dXJuIHNob3J0X2ludGVnZXJfdHlw
ZV9ub2RlOwogIGlmICh0eXBlMSA9PSBsb25nX3Vuc2lnbmVkX3R5cGVfbm9kZSkKICAgIHJl
dHVybiBsb25nX2ludGVnZXJfdHlwZV9ub2RlOwogIGlmICh0eXBlMSA9PSBsb25nX2xvbmdf
dW5zaWduZWRfdHlwZV9ub2RlKQogICAgcmV0dXJuIGxvbmdfbG9uZ19pbnRlZ2VyX3R5cGVf
bm9kZTsKICBpZiAodHlwZTEgPT0gd2lkZXN0X3Vuc2lnbmVkX2xpdGVyYWxfdHlwZV9ub2Rl
KQogICAgcmV0dXJuIHdpZGVzdF9pbnRlZ2VyX2xpdGVyYWxfdHlwZV9ub2RlOwojaWYgSE9T
VF9CSVRTX1BFUl9XSURFX0lOVCA+PSA2NAogIGlmICh0eXBlMSA9PSB1bnNpZ25lZF9pbnRU
SV90eXBlX25vZGUpCiAgICByZXR1cm4gaW50VElfdHlwZV9ub2RlOwojZW5kaWYKICBpZiAo
dHlwZTEgPT0gdW5zaWduZWRfaW50RElfdHlwZV9ub2RlKQogICAgcmV0dXJuIGludERJX3R5
cGVfbm9kZTsKICBpZiAodHlwZTEgPT0gdW5zaWduZWRfaW50U0lfdHlwZV9ub2RlKQogICAg
cmV0dXJuIGludFNJX3R5cGVfbm9kZTsKICBpZiAodHlwZTEgPT0gdW5zaWduZWRfaW50SElf
dHlwZV9ub2RlKQogICAgcmV0dXJuIGludEhJX3R5cGVfbm9kZTsKICBpZiAodHlwZTEgPT0g
dW5zaWduZWRfaW50UUlfdHlwZV9ub2RlKQogICAgcmV0dXJuIGludFFJX3R5cGVfbm9kZTsK
CiAgcmV0dXJuIGNfY29tbW9uX3NpZ25lZF9vcl91bnNpZ25lZF90eXBlICgwLCB0eXBlKTsK
fQoKLyogUmV0dXJuIGEgdHlwZSB0aGUgc2FtZSBhcyBUWVBFIGV4Y2VwdCB1bnNpZ25lZCBv
cgogICBzaWduZWQgYWNjb3JkaW5nIHRvIFVOU0lHTkVEUC4gICovCgp0cmVlCmNfY29tbW9u
X3NpZ25lZF9vcl91bnNpZ25lZF90eXBlIChpbnQgdW5zaWduZWRwLCB0cmVlIHR5cGUpCnsK
ICBpZiAoISBJTlRFR1JBTF9UWVBFX1AgKHR5cGUpCiAgICAgIHx8IFRSRUVfVU5TSUdORUQg
KHR5cGUpID09IHVuc2lnbmVkcCkKICAgIHJldHVybiB0eXBlOwoKICBpZiAoVFlQRV9QUkVD
SVNJT04gKHR5cGUpID09IFRZUEVfUFJFQ0lTSU9OIChzaWduZWRfY2hhcl90eXBlX25vZGUp
KQogICAgcmV0dXJuIHVuc2lnbmVkcCA/IHVuc2lnbmVkX2NoYXJfdHlwZV9ub2RlIDogc2ln
bmVkX2NoYXJfdHlwZV9ub2RlOwogIGlmIChUWVBFX1BSRUNJU0lPTiAodHlwZSkgPT0gVFlQ
RV9QUkVDSVNJT04gKGludGVnZXJfdHlwZV9ub2RlKSkKICAgIHJldHVybiB1bnNpZ25lZHAg
PyB1bnNpZ25lZF90eXBlX25vZGUgOiBpbnRlZ2VyX3R5cGVfbm9kZTsKICBpZiAoVFlQRV9Q
UkVDSVNJT04gKHR5cGUpID09IFRZUEVfUFJFQ0lTSU9OIChzaG9ydF9pbnRlZ2VyX3R5cGVf
bm9kZSkpCiAgICByZXR1cm4gdW5zaWduZWRwID8gc2hvcnRfdW5zaWduZWRfdHlwZV9ub2Rl
IDogc2hvcnRfaW50ZWdlcl90eXBlX25vZGU7CiAgaWYgKFRZUEVfUFJFQ0lTSU9OICh0eXBl
KSA9PSBUWVBFX1BSRUNJU0lPTiAobG9uZ19pbnRlZ2VyX3R5cGVfbm9kZSkpCiAgICByZXR1
cm4gdW5zaWduZWRwID8gbG9uZ191bnNpZ25lZF90eXBlX25vZGUgOiBsb25nX2ludGVnZXJf
dHlwZV9ub2RlOwogIGlmIChUWVBFX1BSRUNJU0lPTiAodHlwZSkgPT0gVFlQRV9QUkVDSVNJ
T04gKGxvbmdfbG9uZ19pbnRlZ2VyX3R5cGVfbm9kZSkpCiAgICByZXR1cm4gKHVuc2lnbmVk
cCA/IGxvbmdfbG9uZ191bnNpZ25lZF90eXBlX25vZGUKCSAgICA6IGxvbmdfbG9uZ19pbnRl
Z2VyX3R5cGVfbm9kZSk7CiAgaWYgKFRZUEVfUFJFQ0lTSU9OICh0eXBlKSA9PSBUWVBFX1BS
RUNJU0lPTiAod2lkZXN0X2ludGVnZXJfbGl0ZXJhbF90eXBlX25vZGUpKQogICAgcmV0dXJu
ICh1bnNpZ25lZHAgPyB3aWRlc3RfdW5zaWduZWRfbGl0ZXJhbF90eXBlX25vZGUKCSAgICA6
IHdpZGVzdF9pbnRlZ2VyX2xpdGVyYWxfdHlwZV9ub2RlKTsKCiNpZiBIT1NUX0JJVFNfUEVS
X1dJREVfSU5UID49IDY0CiAgaWYgKFRZUEVfUFJFQ0lTSU9OICh0eXBlKSA9PSBUWVBFX1BS
RUNJU0lPTiAoaW50VElfdHlwZV9ub2RlKSkKICAgIHJldHVybiB1bnNpZ25lZHAgPyB1bnNp
Z25lZF9pbnRUSV90eXBlX25vZGUgOiBpbnRUSV90eXBlX25vZGU7CiNlbmRpZgogIGlmIChU
WVBFX1BSRUNJU0lPTiAodHlwZSkgPT0gVFlQRV9QUkVDSVNJT04gKGludERJX3R5cGVfbm9k
ZSkpCiAgICByZXR1cm4gdW5zaWduZWRwID8gdW5zaWduZWRfaW50RElfdHlwZV9ub2RlIDog
aW50RElfdHlwZV9ub2RlOwogIGlmIChUWVBFX1BSRUNJU0lPTiAodHlwZSkgPT0gVFlQRV9Q
UkVDSVNJT04gKGludFNJX3R5cGVfbm9kZSkpCiAgICByZXR1cm4gdW5zaWduZWRwID8gdW5z
aWduZWRfaW50U0lfdHlwZV9ub2RlIDogaW50U0lfdHlwZV9ub2RlOwogIGlmIChUWVBFX1BS
RUNJU0lPTiAodHlwZSkgPT0gVFlQRV9QUkVDSVNJT04gKGludEhJX3R5cGVfbm9kZSkpCiAg
ICByZXR1cm4gdW5zaWduZWRwID8gdW5zaWduZWRfaW50SElfdHlwZV9ub2RlIDogaW50SElf
dHlwZV9ub2RlOwogIGlmIChUWVBFX1BSRUNJU0lPTiAodHlwZSkgPT0gVFlQRV9QUkVDSVNJ
T04gKGludFFJX3R5cGVfbm9kZSkpCiAgICByZXR1cm4gdW5zaWduZWRwID8gdW5zaWduZWRf
aW50UUlfdHlwZV9ub2RlIDogaW50UUlfdHlwZV9ub2RlOwoKICByZXR1cm4gdHlwZTsKfQoM
Ci8qIFJldHVybiB0aGUgbWluaW11bSBudW1iZXIgb2YgYml0cyBuZWVkZWQgdG8gcmVwcmVz
ZW50IFZBTFVFIGluIGEKICAgc2lnbmVkIG9yIHVuc2lnbmVkIHR5cGUsIFVOU0lHTkVEUCBz
YXlzIHdoaWNoLiAgKi8KCnVuc2lnbmVkIGludAptaW5fcHJlY2lzaW9uICh0cmVlIHZhbHVl
LCBpbnQgdW5zaWduZWRwKQp7CiAgaW50IGxvZzsKCiAgLyogSWYgdGhlIHZhbHVlIGlzIG5l
Z2F0aXZlLCBjb21wdXRlIGl0cyBuZWdhdGl2ZSBtaW51cyAxLiAgVGhlIGxhdHRlcgogICAg
IGFkanVzdG1lbnQgaXMgYmVjYXVzZSB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIGxhcmdl
c3QgbmVnYXRpdmUgdmFsdWUKICAgICBpcyBvbmUgbGFyZ2VyIHRoYW4gdGhlIGxhcmdlc3Qg
cG9zaXRpdmUgdmFsdWUuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8KICAgICBhIGJpdC13aXNl
IG5lZ2F0aW9uLCBzbyB1c2UgdGhhdCBvcGVyYXRpb24gaW5zdGVhZC4gICovCgogIGlmICh0
cmVlX2ludF9jc3Rfc2duICh2YWx1ZSkgPCAwKQogICAgdmFsdWUgPSBmb2xkIChidWlsZDEg
KEJJVF9OT1RfRVhQUiwgVFJFRV9UWVBFICh2YWx1ZSksIHZhbHVlKSk7CgogIC8qIFJldHVy
biB0aGUgbnVtYmVyIG9mIGJpdHMgbmVlZGVkLCB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBm
YWN0CiAgICAgdGhhdCB3ZSBuZWVkIG9uZSBtb3JlIGJpdCBmb3IgYSBzaWduZWQgdGhhbiB1
bnNpZ25lZCB0eXBlLiAgKi8KCiAgaWYgKGludGVnZXJfemVyb3AgKHZhbHVlKSkKICAgIGxv
ZyA9IDA7CiAgZWxzZQogICAgbG9nID0gdHJlZV9mbG9vcl9sb2cyICh2YWx1ZSk7CgogIHJl
dHVybiBsb2cgKyAxICsgISB1bnNpZ25lZHA7Cn0KDAovKiBQcmludCBhbiBlcnJvciBtZXNz
YWdlIGZvciBpbnZhbGlkIG9wZXJhbmRzIHRvIGFyaXRoIG9wZXJhdGlvbgogICBDT0RFLiAg
Tk9QX0VYUFIgaXMgdXNlZCBhcyBhIHNwZWNpYWwgY2FzZSAoc2VlCiAgIGNfY29tbW9uX3Ry
dXRodmFsdWVfY29udmVyc2lvbikuICAqLwoKdm9pZApiaW5hcnlfb3BfZXJyb3IgKGVudW0g
dHJlZV9jb2RlIGNvZGUpCnsKICBjb25zdCBjaGFyICpvcG5hbWU7CgogIHN3aXRjaCAoY29k
ZSkKICAgIHsKICAgIGNhc2UgTk9QX0VYUFI6CiAgICAgIGVycm9yICgiaW52YWxpZCB0cnV0
aC12YWx1ZSBleHByZXNzaW9uIik7CiAgICAgIHJldHVybjsKCiAgICBjYXNlIFBMVVNfRVhQ
UjoKICAgICAgb3BuYW1lID0gIisiOyBicmVhazsKICAgIGNhc2UgTUlOVVNfRVhQUjoKICAg
ICAgb3BuYW1lID0gIi0iOyBicmVhazsKICAgIGNhc2UgTVVMVF9FWFBSOgogICAgICBvcG5h
bWUgPSAiKiI7IGJyZWFrOwogICAgY2FzZSBNQVhfRVhQUjoKICAgICAgb3BuYW1lID0gIm1h
eCI7IGJyZWFrOwogICAgY2FzZSBNSU5fRVhQUjoKICAgICAgb3BuYW1lID0gIm1pbiI7IGJy
ZWFrOwogICAgY2FzZSBFUV9FWFBSOgogICAgICBvcG5hbWUgPSAiPT0iOyBicmVhazsKICAg
IGNhc2UgTkVfRVhQUjoKICAgICAgb3BuYW1lID0gIiE9IjsgYnJlYWs7CiAgICBjYXNlIExF
X0VYUFI6CiAgICAgIG9wbmFtZSA9ICI8PSI7IGJyZWFrOwogICAgY2FzZSBHRV9FWFBSOgog
ICAgICBvcG5hbWUgPSAiPj0iOyBicmVhazsKICAgIGNhc2UgTFRfRVhQUjoKICAgICAgb3Bu
YW1lID0gIjwiOyBicmVhazsKICAgIGNhc2UgR1RfRVhQUjoKICAgICAgb3BuYW1lID0gIj4i
OyBicmVhazsKICAgIGNhc2UgTFNISUZUX0VYUFI6CiAgICAgIG9wbmFtZSA9ICI8PCI7IGJy
ZWFrOwogICAgY2FzZSBSU0hJRlRfRVhQUjoKICAgICAgb3BuYW1lID0gIj4+IjsgYnJlYWs7
CiAgICBjYXNlIFRSVU5DX01PRF9FWFBSOgogICAgY2FzZSBGTE9PUl9NT0RfRVhQUjoKICAg
ICAgb3BuYW1lID0gIiUiOyBicmVhazsKICAgIGNhc2UgVFJVTkNfRElWX0VYUFI6CiAgICBj
YXNlIEZMT09SX0RJVl9FWFBSOgogICAgICBvcG5hbWUgPSAiLyI7IGJyZWFrOwogICAgY2Fz
ZSBCSVRfQU5EX0VYUFI6CiAgICAgIG9wbmFtZSA9ICImIjsgYnJlYWs7CiAgICBjYXNlIEJJ
VF9JT1JfRVhQUjoKICAgICAgb3BuYW1lID0gInwiOyBicmVhazsKICAgIGNhc2UgVFJVVEhf
QU5ESUZfRVhQUjoKICAgICAgb3BuYW1lID0gIiYmIjsgYnJlYWs7CiAgICBjYXNlIFRSVVRI
X09SSUZfRVhQUjoKICAgICAgb3BuYW1lID0gInx8IjsgYnJlYWs7CiAgICBjYXNlIEJJVF9Y
T1JfRVhQUjoKICAgICAgb3BuYW1lID0gIl4iOyBicmVhazsKICAgIGNhc2UgTFJPVEFURV9F
WFBSOgogICAgY2FzZSBSUk9UQVRFX0VYUFI6CiAgICAgIG9wbmFtZSA9ICJyb3RhdGUiOyBi
cmVhazsKICAgIGRlZmF1bHQ6CiAgICAgIG9wbmFtZSA9ICJ1bmtub3duIjsgYnJlYWs7CiAg
ICB9CiAgZXJyb3IgKCJpbnZhbGlkIG9wZXJhbmRzIHRvIGJpbmFyeSAlcyIsIG9wbmFtZSk7
Cn0KDAovKiBTdWJyb3V0aW5lIG9mIGJ1aWxkX2JpbmFyeV9vcCwgdXNlZCBmb3IgY29tcGFy
aXNvbiBvcGVyYXRpb25zLgogICBTZWUgaWYgdGhlIG9wZXJhbmRzIGhhdmUgYm90aCBiZWVu
IGNvbnZlcnRlZCBmcm9tIHN1YndvcmQgaW50ZWdlciB0eXBlcwogICBhbmQsIGlmIHNvLCBw
ZXJoYXBzIGNoYW5nZSB0aGVtIGJvdGggYmFjayB0byB0aGVpciBvcmlnaW5hbCB0eXBlLgog
ICBUaGlzIGZ1bmN0aW9uIGlzIGFsc28gcmVzcG9uc2libGUgZm9yIGNvbnZlcnRpbmcgdGhl
IHR3byBvcGVyYW5kcwogICB0byB0aGUgcHJvcGVyIGNvbW1vbiB0eXBlIGZvciBjb21wYXJp
c29uLgoKICAgVGhlIGFyZ3VtZW50cyBvZiB0aGlzIGZ1bmN0aW9uIGFyZSBhbGwgcG9pbnRl
cnMgdG8gbG9jYWwgdmFyaWFibGVzCiAgIG9mIGJ1aWxkX2JpbmFyeV9vcDogT1AwX1BUUiBp
cyAmT1AwLCBPUDFfUFRSIGlzICZPUDEsCiAgIFJFU1RZUEVfUFRSIGlzICZSRVNVTFRfVFlQ
RSBhbmQgUkVTQ09ERV9QVFIgaXMgJlJFU1VMVENPREUuCgogICBJZiB0aGlzIGZ1bmN0aW9u
IHJldHVybnMgbm9uemVybywgaXQgbWVhbnMgdGhhdCB0aGUgY29tcGFyaXNvbiBoYXMKICAg
YSBjb25zdGFudCB2YWx1ZS4gIFdoYXQgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGlzIGFuIGV4
cHJlc3Npb24gZm9yCiAgIHRoYXQgdmFsdWUuICAqLwoKdHJlZQpzaG9ydGVuX2NvbXBhcmUg
KHRyZWUgKm9wMF9wdHIsIHRyZWUgKm9wMV9wdHIsIHRyZWUgKnJlc3R5cGVfcHRyLAoJCSBl
bnVtIHRyZWVfY29kZSAqcmVzY29kZV9wdHIpCnsKICB0cmVlIHR5cGU7CiAgdHJlZSBvcDAg
PSAqb3AwX3B0cjsKICB0cmVlIG9wMSA9ICpvcDFfcHRyOwogIGludCB1bnNpZ25lZHAwLCB1
bnNpZ25lZHAxOwogIGludCByZWFsMSwgcmVhbDI7CiAgdHJlZSBwcmltb3AwLCBwcmltb3Ax
OwogIGVudW0gdHJlZV9jb2RlIGNvZGUgPSAqcmVzY29kZV9wdHI7CgogIC8qIFRocm93IGF3
YXkgYW55IGNvbnZlcnNpb25zIHRvIHdpZGVyIHR5cGVzCiAgICAgYWxyZWFkeSBwcmVzZW50
IGluIHRoZSBvcGVyYW5kcy4gICovCgogIHByaW1vcDAgPSBnZXRfbmFycm93ZXIgKG9wMCwg
JnVuc2lnbmVkcDApOwogIHByaW1vcDEgPSBnZXRfbmFycm93ZXIgKG9wMSwgJnVuc2lnbmVk
cDEpOwoKICAvKiBIYW5kbGUgdGhlIGNhc2UgdGhhdCBPUDAgZG9lcyBub3QgKmNvbnRhaW4q
IGEgY29udmVyc2lvbgogICAgIGJ1dCBpdCAqcmVxdWlyZXMqIGNvbnZlcnNpb24gdG8gRklO
QUxfVFlQRS4gICovCgogIGlmIChvcDAgPT0gcHJpbW9wMCAmJiBUUkVFX1RZUEUgKG9wMCkg
IT0gKnJlc3R5cGVfcHRyKQogICAgdW5zaWduZWRwMCA9IFRSRUVfVU5TSUdORUQgKFRSRUVf
VFlQRSAob3AwKSk7CiAgaWYgKG9wMSA9PSBwcmltb3AxICYmIFRSRUVfVFlQRSAob3AxKSAh
PSAqcmVzdHlwZV9wdHIpCiAgICB1bnNpZ25lZHAxID0gVFJFRV9VTlNJR05FRCAoVFJFRV9U
WVBFIChvcDEpKTsKCiAgLyogSWYgb25lIG9mIHRoZSBvcGVyYW5kcyBtdXN0IGJlIGZsb2F0
ZWQsIHdlIGNhbm5vdCBvcHRpbWl6ZS4gICovCiAgcmVhbDEgPSBUUkVFX0NPREUgKFRSRUVf
VFlQRSAocHJpbW9wMCkpID09IFJFQUxfVFlQRTsKICByZWFsMiA9IFRSRUVfQ09ERSAoVFJF
RV9UWVBFIChwcmltb3AxKSkgPT0gUkVBTF9UWVBFOwoKICAvKiBJZiBmaXJzdCBhcmcgaXMg
Y29uc3RhbnQsIHN3YXAgdGhlIGFyZ3MgKGNoYW5naW5nIG9wZXJhdGlvbgogICAgIHNvIHZh
bHVlIGlzIHByZXNlcnZlZCksIGZvciBjYW5vbmljYWxpemF0aW9uLiAgRG9uJ3QgZG8gdGhp
cyBpZgogICAgIHRoZSBzZWNvbmQgYXJnIGlzIDAuICAqLwoKICBpZiAoVFJFRV9DT05TVEFO
VCAocHJpbW9wMCkKICAgICAgJiYgISBpbnRlZ2VyX3plcm9wIChwcmltb3AxKSAmJiAhIHJl
YWxfemVyb3AgKHByaW1vcDEpKQogICAgewogICAgICB0cmVlIHRlbSA9IHByaW1vcDA7CiAg
ICAgIGludCB0ZW1pID0gdW5zaWduZWRwMDsKICAgICAgcHJpbW9wMCA9IHByaW1vcDE7CiAg
ICAgIHByaW1vcDEgPSB0ZW07CiAgICAgIHRlbSA9IG9wMDsKICAgICAgb3AwID0gb3AxOwog
ICAgICBvcDEgPSB0ZW07CiAgICAgICpvcDBfcHRyID0gb3AwOwogICAgICAqb3AxX3B0ciA9
IG9wMTsKICAgICAgdW5zaWduZWRwMCA9IHVuc2lnbmVkcDE7CiAgICAgIHVuc2lnbmVkcDEg
PSB0ZW1pOwogICAgICB0ZW1pID0gcmVhbDE7CiAgICAgIHJlYWwxID0gcmVhbDI7CiAgICAg
IHJlYWwyID0gdGVtaTsKCiAgICAgIHN3aXRjaCAoY29kZSkKCXsKCWNhc2UgTFRfRVhQUjoK
CSAgY29kZSA9IEdUX0VYUFI7CgkgIGJyZWFrOwoJY2FzZSBHVF9FWFBSOgoJICBjb2RlID0g
TFRfRVhQUjsKCSAgYnJlYWs7CgljYXNlIExFX0VYUFI6CgkgIGNvZGUgPSBHRV9FWFBSOwoJ
ICBicmVhazsKCWNhc2UgR0VfRVhQUjoKCSAgY29kZSA9IExFX0VYUFI7CgkgIGJyZWFrOwoJ
ZGVmYXVsdDoKCSAgYnJlYWs7Cgl9CiAgICAgICpyZXNjb2RlX3B0ciA9IGNvZGU7CiAgICB9
CgogIC8qIElmIGNvbXBhcmluZyBhbiBpbnRlZ2VyIGFnYWluc3QgYSBjb25zdGFudCBtb3Jl
IGJpdHMgd2lkZSwKICAgICBtYXliZSB3ZSBjYW4gZGVkdWNlIGEgdmFsdWUgb2YgMSBvciAw
IGluZGVwZW5kZW50IG9mIHRoZSBkYXRhLgogICAgIE9yIGVsc2UgdHJ1bmNhdGUgdGhlIGNv
bnN0YW50IG5vdwogICAgIHJhdGhlciB0aGFuIGV4dGVuZCB0aGUgdmFyaWFibGUgYXQgcnVu
IHRpbWUuCgogICAgIFRoaXMgaXMgb25seSBpbnRlcmVzdGluZyBpZiB0aGUgY29uc3RhbnQg
aXMgdGhlIHdpZGVyIGFyZy4KICAgICBBbHNvLCBpdCBpcyBub3Qgc2FmZSBpZiB0aGUgY29u
c3RhbnQgaXMgdW5zaWduZWQgYW5kIHRoZQogICAgIHZhcmlhYmxlIGFyZyBpcyBzaWduZWQs
IHNpbmNlIGluIHRoaXMgY2FzZSB0aGUgdmFyaWFibGUKICAgICB3b3VsZCBiZSBzaWduLWV4
dGVuZGVkIGFuZCB0aGVuIHJlZ2FyZGVkIGFzIHVuc2lnbmVkLgogICAgIE91ciB0ZWNobmlx
dWUgZmFpbHMgaW4gdGhpcyBjYXNlIGJlY2F1c2UgdGhlIGxvd2VzdC9oaWdoZXN0CiAgICAg
cG9zc2libGUgdW5zaWduZWQgcmVzdWx0cyBkb24ndCBmb2xsb3cgbmF0dXJhbGx5IGZyb20g
dGhlCiAgICAgbG93ZXN0L2hpZ2hlc3QgcG9zc2libGUgdmFsdWVzIG9mIHRoZSB2YXJpYWJs
ZSBvcGVyYW5kLgogICAgIEZvciBqdXN0IEVRX0VYUFIgYW5kIE5FX0VYUFIgdGhlcmUgaXMg
YW5vdGhlciB0ZWNobmlxdWUgdGhhdAogICAgIGNvdWxkIGJlIHVzZWQ6IHNlZSBpZiB0aGUg
Y29uc3RhbnQgY2FuIGJlIGZhaXRoZnVsbHkgcmVwcmVzZW50ZWQKICAgICBpbiB0aGUgb3Ro
ZXIgb3BlcmFuZCdzIHR5cGUsIGJ5IHRydW5jYXRpbmcgaXQgYW5kIHJlZXh0ZW5kaW5nIGl0
CiAgICAgYW5kIHNlZSBpZiB0aGF0IHByZXNlcnZlcyB0aGUgY29uc3RhbnQncyB2YWx1ZS4g
ICovCgogIGlmICghcmVhbDEgJiYgIXJlYWwyCiAgICAgICYmIFRSRUVfQ09ERSAocHJpbW9w
MSkgPT0gSU5URUdFUl9DU1QKICAgICAgJiYgVFlQRV9QUkVDSVNJT04gKFRSRUVfVFlQRSAo
cHJpbW9wMCkpIDwgVFlQRV9QUkVDSVNJT04gKCpyZXN0eXBlX3B0cikpCiAgICB7CiAgICAg
IGludCBtaW5fZ3QsIG1heF9ndCwgbWluX2x0LCBtYXhfbHQ7CiAgICAgIHRyZWUgbWF4dmFs
LCBtaW52YWw7CiAgICAgIC8qIDEgaWYgY29tcGFyaXNvbiBpcyBub21pbmFsbHkgdW5zaWdu
ZWQuICAqLwogICAgICBpbnQgdW5zaWduZWRwID0gVFJFRV9VTlNJR05FRCAoKnJlc3R5cGVf
cHRyKTsKICAgICAgdHJlZSB2YWw7CgogICAgICB0eXBlID0gY19jb21tb25fc2lnbmVkX29y
X3Vuc2lnbmVkX3R5cGUgKHVuc2lnbmVkcDAsCgkJCQkJICAgICAgIFRSRUVfVFlQRSAocHJp
bW9wMCkpOwoKICAgICAgLyogSWYgVFlQRSBpcyBhbiBlbnVtZXJhdGlvbiwgdGhlbiB3ZSBu
ZWVkIHRvIGdldCBpdHMgbWluL21heAoJIHZhbHVlcyBmcm9tIGl0J3MgdW5kZXJseWluZyBp
bnRlZ3JhbCB0eXBlLCBub3QgdGhlIGVudW1lcmF0ZWQKCSB0eXBlIGl0c2VsZi4gICovCiAg
ICAgIGlmIChUUkVFX0NPREUgKHR5cGUpID09IEVOVU1FUkFMX1RZUEUpCgl0eXBlID0gY19j
b21tb25fdHlwZV9mb3Jfc2l6ZSAoVFlQRV9QUkVDSVNJT04gKHR5cGUpLCB1bnNpZ25lZHAw
KTsKCiAgICAgIG1heHZhbCA9IFRZUEVfTUFYX1ZBTFVFICh0eXBlKTsKICAgICAgbWludmFs
ID0gVFlQRV9NSU5fVkFMVUUgKHR5cGUpOwoKICAgICAgaWYgKHVuc2lnbmVkcCAmJiAhdW5z
aWduZWRwMCkKCSpyZXN0eXBlX3B0ciA9IGNfY29tbW9uX3NpZ25lZF90eXBlICgqcmVzdHlw
ZV9wdHIpOwoKICAgICAgaWYgKFRSRUVfVFlQRSAocHJpbW9wMSkgIT0gKnJlc3R5cGVfcHRy
KQoJcHJpbW9wMSA9IGNvbnZlcnQgKCpyZXN0eXBlX3B0ciwgcHJpbW9wMSk7CiAgICAgIGlm
ICh0eXBlICE9ICpyZXN0eXBlX3B0cikKCXsKCSAgbWludmFsID0gY29udmVydCAoKnJlc3R5
cGVfcHRyLCBtaW52YWwpOwoJICBtYXh2YWwgPSBjb252ZXJ0ICgqcmVzdHlwZV9wdHIsIG1h
eHZhbCk7Cgl9CgogICAgICBpZiAodW5zaWduZWRwICYmIHVuc2lnbmVkcDApCgl7CgkgIG1p
bl9ndCA9IElOVF9DU1RfTFRfVU5TSUdORUQgKHByaW1vcDEsIG1pbnZhbCk7CgkgIG1heF9n
dCA9IElOVF9DU1RfTFRfVU5TSUdORUQgKHByaW1vcDEsIG1heHZhbCk7CgkgIG1pbl9sdCA9
IElOVF9DU1RfTFRfVU5TSUdORUQgKG1pbnZhbCwgcHJpbW9wMSk7CgkgIG1heF9sdCA9IElO
VF9DU1RfTFRfVU5TSUdORUQgKG1heHZhbCwgcHJpbW9wMSk7Cgl9CiAgICAgIGVsc2UKCXsK
CSAgbWluX2d0ID0gSU5UX0NTVF9MVCAocHJpbW9wMSwgbWludmFsKTsKCSAgbWF4X2d0ID0g
SU5UX0NTVF9MVCAocHJpbW9wMSwgbWF4dmFsKTsKCSAgbWluX2x0ID0gSU5UX0NTVF9MVCAo
bWludmFsLCBwcmltb3AxKTsKCSAgbWF4X2x0ID0gSU5UX0NTVF9MVCAobWF4dmFsLCBwcmlt
b3AxKTsKCX0KCiAgICAgIHZhbCA9IDA7CiAgICAgIC8qIFRoaXMgdXNlZCB0byBiZSBhIHN3
aXRjaCwgYnV0IEdlbml4IGNvbXBpbGVyIGNhbid0IGhhbmRsZSB0aGF0LiAgKi8KICAgICAg
aWYgKGNvZGUgPT0gTkVfRVhQUikKCXsKCSAgaWYgKG1heF9sdCB8fCBtaW5fZ3QpCgkgICAg
dmFsID0gYm9vbGVhbl90cnVlX25vZGU7Cgl9CiAgICAgIGVsc2UgaWYgKGNvZGUgPT0gRVFf
RVhQUikKCXsKCSAgaWYgKG1heF9sdCB8fCBtaW5fZ3QpCgkgICAgdmFsID0gYm9vbGVhbl9m
YWxzZV9ub2RlOwoJfQogICAgICBlbHNlIGlmIChjb2RlID09IExUX0VYUFIpCgl7CgkgIGlm
IChtYXhfbHQpCgkgICAgdmFsID0gYm9vbGVhbl90cnVlX25vZGU7CgkgIGlmICghbWluX2x0
KQoJICAgIHZhbCA9IGJvb2xlYW5fZmFsc2Vfbm9kZTsKCX0KICAgICAgZWxzZSBpZiAoY29k
ZSA9PSBHVF9FWFBSKQoJewoJICBpZiAobWluX2d0KQoJICAgIHZhbCA9IGJvb2xlYW5fdHJ1
ZV9ub2RlOwoJICBpZiAoIW1heF9ndCkKCSAgICB2YWwgPSBib29sZWFuX2ZhbHNlX25vZGU7
Cgl9CiAgICAgIGVsc2UgaWYgKGNvZGUgPT0gTEVfRVhQUikKCXsKCSAgaWYgKCFtYXhfZ3Qp
CgkgICAgdmFsID0gYm9vbGVhbl90cnVlX25vZGU7CgkgIGlmIChtaW5fZ3QpCgkgICAgdmFs
ID0gYm9vbGVhbl9mYWxzZV9ub2RlOwoJfQogICAgICBlbHNlIGlmIChjb2RlID09IEdFX0VY
UFIpCgl7CgkgIGlmICghbWluX2x0KQoJICAgIHZhbCA9IGJvb2xlYW5fdHJ1ZV9ub2RlOwoJ
ICBpZiAobWF4X2x0KQoJICAgIHZhbCA9IGJvb2xlYW5fZmFsc2Vfbm9kZTsKCX0KCiAgICAg
IC8qIElmIHByaW1vcDAgd2FzIHNpZ24tZXh0ZW5kZWQgYW5kIHVuc2lnbmVkIGNvbXBhcmlz
b24gc3BlY2QsCgkgd2UgZGlkIGEgc2lnbmVkIGNvbXBhcmlzb24gYWJvdmUgdXNpbmcgdGhl
IHNpZ25lZCB0eXBlIGJvdW5kcy4KCSBCdXQgdGhlIGNvbXBhcmlzb24gd2Ugb3V0cHV0IG11
c3QgYmUgdW5zaWduZWQuCgoJIEFsc28sIGZvciBpbmVxdWFsaXRpZXMsIFZBTCBpcyBubyBn
b29kOyBidXQgaWYgdGhlIHNpZ25lZAoJIGNvbXBhcmlzb24gaGFkICphbnkqIGZpeGVkIHJl
c3VsdCwgaXQgZm9sbG93cyB0aGF0IHRoZQoJIHVuc2lnbmVkIGNvbXBhcmlzb24ganVzdCB0
ZXN0cyB0aGUgc2lnbiBpbiByZXZlcnNlCgkgKHBvc2l0aXZlIHZhbHVlcyBhcmUgTEUsIG5l
Z2F0aXZlIG9uZXMgR0UpLgoJIFNvIHdlIGNhbiBnZW5lcmF0ZSBhbiB1bnNpZ25lZCBjb21w
YXJpc29uCgkgYWdhaW5zdCBhbiBleHRyZW1lIHZhbHVlIG9mIHRoZSBzaWduZWQgdHlwZS4g
ICovCgogICAgICBpZiAodW5zaWduZWRwICYmICF1bnNpZ25lZHAwKQoJewoJICBpZiAodmFs
ICE9IDApCgkgICAgc3dpdGNoIChjb2RlKQoJICAgICAgewoJICAgICAgY2FzZSBMVF9FWFBS
OgoJICAgICAgY2FzZSBHRV9FWFBSOgoJCXByaW1vcDEgPSBUWVBFX01JTl9WQUxVRSAodHlw
ZSk7CgkJdmFsID0gMDsKCQlicmVhazsKCgkgICAgICBjYXNlIExFX0VYUFI6CgkgICAgICBj
YXNlIEdUX0VYUFI6CgkJcHJpbW9wMSA9IFRZUEVfTUFYX1ZBTFVFICh0eXBlKTsKCQl2YWwg
PSAwOwoJCWJyZWFrOwoKCSAgICAgIGRlZmF1bHQ6CgkJYnJlYWs7CgkgICAgICB9CgkgIHR5
cGUgPSBjX2NvbW1vbl91bnNpZ25lZF90eXBlICh0eXBlKTsKCX0KCiAgICAgIGlmIChUUkVF
X0NPREUgKHByaW1vcDApICE9IElOVEVHRVJfQ1NUKQoJewoJICBpZiAodmFsID09IGJvb2xl
YW5fZmFsc2Vfbm9kZSkKCSAgICB3YXJuaW5nICgiY29tcGFyaXNvbiBpcyBhbHdheXMgZmFs
c2UgZHVlIHRvIGxpbWl0ZWQgcmFuZ2Ugb2YgZGF0YSB0eXBlIik7CgkgIGlmICh2YWwgPT0g
Ym9vbGVhbl90cnVlX25vZGUpCgkgICAgd2FybmluZyAoImNvbXBhcmlzb24gaXMgYWx3YXlz
IHRydWUgZHVlIHRvIGxpbWl0ZWQgcmFuZ2Ugb2YgZGF0YSB0eXBlIik7Cgl9CgogICAgICBp
ZiAodmFsICE9IDApCgl7CgkgIC8qIERvbid0IGZvcmdldCB0byBldmFsdWF0ZSBQUklNT1Aw
IGlmIGl0IGhhcyBzaWRlIGVmZmVjdHMuICAqLwoJICBpZiAoVFJFRV9TSURFX0VGRkVDVFMg
KHByaW1vcDApKQoJICAgIHJldHVybiBidWlsZCAoQ09NUE9VTkRfRVhQUiwgVFJFRV9UWVBF
ICh2YWwpLCBwcmltb3AwLCB2YWwpOwoJICByZXR1cm4gdmFsOwoJfQoKICAgICAgLyogVmFs
dWUgaXMgbm90IHByZWRldGVybWluZWQsIGJ1dCBkbyB0aGUgY29tcGFyaXNvbgoJIGluIHRo
ZSB0eXBlIG9mIHRoZSBvcGVyYW5kIHRoYXQgaXMgbm90IGNvbnN0YW50LgoJIFRZUEUgaXMg
YWxyZWFkeSBwcm9wZXJseSBzZXQuICAqLwogICAgfQogIGVsc2UgaWYgKHJlYWwxICYmIHJl
YWwyCgkgICAmJiAoVFlQRV9QUkVDSVNJT04gKFRSRUVfVFlQRSAocHJpbW9wMCkpCgkgICAg
ICAgPT0gVFlQRV9QUkVDSVNJT04gKFRSRUVfVFlQRSAocHJpbW9wMSkpKSkKICAgIHR5cGUg
PSBUUkVFX1RZUEUgKHByaW1vcDApOwoKICAvKiBJZiBhcmdzJyBuYXR1cmFsIHR5cGVzIGFy
ZSBib3RoIG5hcnJvd2VyIHRoYW4gbm9taW5hbCB0eXBlCiAgICAgYW5kIGJvdGggZXh0ZW5k
IGluIHRoZSBzYW1lIG1hbm5lciwgY29tcGFyZSB0aGVtCiAgICAgaW4gdGhlIHR5cGUgb2Yg
dGhlIHdpZGVyIGFyZy4KICAgICBPdGhlcndpc2UgbXVzdCBhY3R1YWxseSBleHRlbmQgYm90
aCB0byB0aGUgbm9taW5hbAogICAgIGNvbW1vbiB0eXBlIGxlc3QgZGlmZmVyZW50IHdheXMg
b2YgZXh0ZW5kaW5nCiAgICAgYWx0ZXIgdGhlIHJlc3VsdC4KICAgICAoZWcsIChzaG9ydCkt
MSA9PSAodW5zaWduZWQgc2hvcnQpLTEgIHNob3VsZCBiZSAwLikgICovCgogIGVsc2UgaWYg
KHVuc2lnbmVkcDAgPT0gdW5zaWduZWRwMSAmJiByZWFsMSA9PSByZWFsMgoJICAgJiYgVFlQ
RV9QUkVDSVNJT04gKFRSRUVfVFlQRSAocHJpbW9wMCkpIDwgVFlQRV9QUkVDSVNJT04gKCpy
ZXN0eXBlX3B0cikKCSAgICYmIFRZUEVfUFJFQ0lTSU9OIChUUkVFX1RZUEUgKHByaW1vcDEp
KSA8IFRZUEVfUFJFQ0lTSU9OICgqcmVzdHlwZV9wdHIpKQogICAgewogICAgICB0eXBlID0g
Y29tbW9uX3R5cGUgKFRSRUVfVFlQRSAocHJpbW9wMCksIFRSRUVfVFlQRSAocHJpbW9wMSkp
OwogICAgICB0eXBlID0gY19jb21tb25fc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGUgKHVuc2ln
bmVkcDAKCQkJCQkgICAgICAgfHwgVFJFRV9VTlNJR05FRCAoKnJlc3R5cGVfcHRyKSwKCQkJ
CQkgICAgICAgdHlwZSk7CiAgICAgIC8qIE1ha2Ugc3VyZSBzaG9ydGVyIG9wZXJhbmQgaXMg
ZXh0ZW5kZWQgdGhlIHJpZ2h0IHdheQoJIHRvIG1hdGNoIHRoZSBsb25nZXIgb3BlcmFuZC4g
ICovCiAgICAgIHByaW1vcDAKCT0gY29udmVydCAoY19jb21tb25fc2lnbmVkX29yX3Vuc2ln
bmVkX3R5cGUgKHVuc2lnbmVkcDAsCgkJCQkJCSAgICAgVFJFRV9UWVBFIChwcmltb3AwKSks
CgkJICAgcHJpbW9wMCk7CiAgICAgIHByaW1vcDEKCT0gY29udmVydCAoY19jb21tb25fc2ln
bmVkX29yX3Vuc2lnbmVkX3R5cGUgKHVuc2lnbmVkcDEsCgkJCQkJCSAgICAgVFJFRV9UWVBF
IChwcmltb3AxKSksCgkJICAgcHJpbW9wMSk7CiAgICB9CiAgZWxzZQogICAgewogICAgICAv
KiBIZXJlIHdlIG11c3QgZG8gdGhlIGNvbXBhcmlzb24gb24gdGhlIG5vbWluYWwgdHlwZQoJ
IHVzaW5nIHRoZSBhcmdzIGV4YWN0bHkgYXMgd2UgcmVjZWl2ZWQgdGhlbS4gICovCiAgICAg
IHR5cGUgPSAqcmVzdHlwZV9wdHI7CiAgICAgIHByaW1vcDAgPSBvcDA7CiAgICAgIHByaW1v
cDEgPSBvcDE7CgogICAgICBpZiAoIXJlYWwxICYmICFyZWFsMiAmJiBpbnRlZ2VyX3plcm9w
IChwcmltb3AxKQoJICAmJiBUUkVFX1VOU0lHTkVEICgqcmVzdHlwZV9wdHIpKQoJewoJICB0
cmVlIHZhbHVlID0gMDsKCSAgc3dpdGNoIChjb2RlKQoJICAgIHsKCSAgICBjYXNlIEdFX0VY
UFI6CgkgICAgICAvKiBBbGwgdW5zaWduZWQgdmFsdWVzIGFyZSA+PSAwLCBzbyB3ZSB3YXJu
IGlmIGV4dHJhIHdhcm5pbmdzCgkJIGFyZSByZXF1ZXN0ZWQuICBIb3dldmVyLCBpZiBPUDAg
aXMgYSBjb25zdGFudCB0aGF0IGlzCgkJID49IDAsIHRoZSBzaWduZWRuZXNzIG9mIHRoZSBj
b21wYXJpc29uIGlzbid0IGFuIGlzc3VlLAoJCSBzbyBzdXBwcmVzcyB0aGUgd2FybmluZy4g
ICovCgkgICAgICBpZiAoZXh0cmFfd2FybmluZ3MgJiYgIWluX3N5c3RlbV9oZWFkZXIKCQkg
ICYmICEgKFRSRUVfQ09ERSAocHJpbW9wMCkgPT0gSU5URUdFUl9DU1QKCQkJJiYgISBUUkVF
X09WRVJGTE9XIChjb252ZXJ0IChjX2NvbW1vbl9zaWduZWRfdHlwZSAodHlwZSksCgkJCQkJ
CSAgICAgcHJpbW9wMCkpKSkKCQl3YXJuaW5nICgiY29tcGFyaXNvbiBvZiB1bnNpZ25lZCBl
eHByZXNzaW9uID49IDAgaXMgYWx3YXlzIHRydWUiKTsKCSAgICAgIHZhbHVlID0gYm9vbGVh
bl90cnVlX25vZGU7CgkgICAgICBicmVhazsKCgkgICAgY2FzZSBMVF9FWFBSOgoJICAgICAg
aWYgKGV4dHJhX3dhcm5pbmdzICYmICFpbl9zeXN0ZW1faGVhZGVyCgkJICAmJiAhIChUUkVF
X0NPREUgKHByaW1vcDApID09IElOVEVHRVJfQ1NUCgkJCSYmICEgVFJFRV9PVkVSRkxPVyAo
Y29udmVydCAoY19jb21tb25fc2lnbmVkX3R5cGUgKHR5cGUpLAoJCQkJCQkgICAgIHByaW1v
cDApKSkpCgkJd2FybmluZyAoImNvbXBhcmlzb24gb2YgdW5zaWduZWQgZXhwcmVzc2lvbiA8
IDAgaXMgYWx3YXlzIGZhbHNlIik7CgkgICAgICB2YWx1ZSA9IGJvb2xlYW5fZmFsc2Vfbm9k
ZTsKCSAgICAgIGJyZWFrOwoKCSAgICBkZWZhdWx0OgoJICAgICAgYnJlYWs7CgkgICAgfQoK
CSAgaWYgKHZhbHVlICE9IDApCgkgICAgewoJICAgICAgLyogRG9uJ3QgZm9yZ2V0IHRvIGV2
YWx1YXRlIFBSSU1PUDAgaWYgaXQgaGFzIHNpZGUgZWZmZWN0cy4gICovCgkgICAgICBpZiAo
VFJFRV9TSURFX0VGRkVDVFMgKHByaW1vcDApKQoJCXJldHVybiBidWlsZCAoQ09NUE9VTkRf
RVhQUiwgVFJFRV9UWVBFICh2YWx1ZSksCgkJCSAgICAgIHByaW1vcDAsIHZhbHVlKTsKCSAg
ICAgIHJldHVybiB2YWx1ZTsKCSAgICB9Cgl9CiAgICB9CgogICpvcDBfcHRyID0gY29udmVy
dCAodHlwZSwgcHJpbW9wMCk7CiAgKm9wMV9wdHIgPSBjb252ZXJ0ICh0eXBlLCBwcmltb3Ax
KTsKCiAgKnJlc3R5cGVfcHRyID0gYm9vbGVhbl90eXBlX25vZGU7CgogIHJldHVybiAwOwp9
CgwKLyogUmV0dXJuIGEgdHJlZSBmb3IgdGhlIHN1bSBvciBkaWZmZXJlbmNlIChSRVNVTFRD
T0RFIHNheXMgd2hpY2gpCiAgIG9mIHBvaW50ZXIgUFRST1AgYW5kIGludGVnZXIgSU5UT1Au
ICAqLwoKdHJlZQpwb2ludGVyX2ludF9zdW0gKGVudW0gdHJlZV9jb2RlIHJlc3VsdGNvZGUs
IHRyZWUgcHRyb3AsIHRyZWUgaW50b3ApCnsKICB0cmVlIHNpemVfZXhwOwoKICB0cmVlIHJl
c3VsdDsKICB0cmVlIGZvbGRlZDsKCiAgLyogVGhlIHJlc3VsdCBpcyBhIHBvaW50ZXIgb2Yg
dGhlIHNhbWUgdHlwZSB0aGF0IGlzIGJlaW5nIGFkZGVkLiAgKi8KCiAgdHJlZSByZXN1bHRf
dHlwZSA9IFRSRUVfVFlQRSAocHRyb3ApOwoKICBpZiAoVFJFRV9DT0RFIChUUkVFX1RZUEUg
KHJlc3VsdF90eXBlKSkgPT0gVk9JRF9UWVBFKQogICAgewogICAgICBpZiAocGVkYW50aWMg
fHwgd2Fybl9wb2ludGVyX2FyaXRoKQoJcGVkd2FybiAoInBvaW50ZXIgb2YgdHlwZSBgdm9p
ZCAqJyB1c2VkIGluIGFyaXRobWV0aWMiKTsKICAgICAgc2l6ZV9leHAgPSBpbnRlZ2VyX29u
ZV9ub2RlOwogICAgfQogIGVsc2UgaWYgKFRSRUVfQ09ERSAoVFJFRV9UWVBFIChyZXN1bHRf
dHlwZSkpID09IEZVTkNUSU9OX1RZUEUpCiAgICB7CiAgICAgIGlmIChwZWRhbnRpYyB8fCB3
YXJuX3BvaW50ZXJfYXJpdGgpCglwZWR3YXJuICgicG9pbnRlciB0byBhIGZ1bmN0aW9uIHVz
ZWQgaW4gYXJpdGhtZXRpYyIpOwogICAgICBzaXplX2V4cCA9IGludGVnZXJfb25lX25vZGU7
CiAgICB9CiAgZWxzZSBpZiAoVFJFRV9DT0RFIChUUkVFX1RZUEUgKHJlc3VsdF90eXBlKSkg
PT0gTUVUSE9EX1RZUEUpCiAgICB7CiAgICAgIGlmIChwZWRhbnRpYyB8fCB3YXJuX3BvaW50
ZXJfYXJpdGgpCglwZWR3YXJuICgicG9pbnRlciB0byBtZW1iZXIgZnVuY3Rpb24gdXNlZCBp
biBhcml0aG1ldGljIik7CiAgICAgIHNpemVfZXhwID0gaW50ZWdlcl9vbmVfbm9kZTsKICAg
IH0KICBlbHNlIGlmIChUUkVFX0NPREUgKFRSRUVfVFlQRSAocmVzdWx0X3R5cGUpKSA9PSBP
RkZTRVRfVFlQRSkKICAgIHsKICAgICAgaWYgKHBlZGFudGljIHx8IHdhcm5fcG9pbnRlcl9h
cml0aCkKCXBlZHdhcm4gKCJwb2ludGVyIHRvIGEgbWVtYmVyIHVzZWQgaW4gYXJpdGhtZXRp
YyIpOwogICAgICBzaXplX2V4cCA9IGludGVnZXJfb25lX25vZGU7CiAgICB9CiAgZWxzZQog
ICAgc2l6ZV9leHAgPSBzaXplX2luX2J5dGVzIChUUkVFX1RZUEUgKHJlc3VsdF90eXBlKSk7
CgogIC8qIElmIHdoYXQgd2UgYXJlIGFib3V0IHRvIG11bHRpcGx5IGJ5IHRoZSBzaXplIG9m
IHRoZSBlbGVtZW50cwogICAgIGNvbnRhaW5zIGEgY29uc3RhbnQgdGVybSwgYXBwbHkgZGlz
dHJpYnV0aXZlIGxhdwogICAgIGFuZCBtdWx0aXBseSB0aGF0IGNvbnN0YW50IHRlcm0gc2Vw
YXJhdGVseS4KICAgICBUaGlzIGhlbHBzIHByb2R1Y2UgY29tbW9uIHN1YmV4cHJlc3Npb25z
LiAgKi8KCiAgaWYgKChUUkVFX0NPREUgKGludG9wKSA9PSBQTFVTX0VYUFIgfHwgVFJFRV9D
T0RFIChpbnRvcCkgPT0gTUlOVVNfRVhQUikKICAgICAgJiYgISBUUkVFX0NPTlNUQU5UIChp
bnRvcCkKICAgICAgJiYgVFJFRV9DT05TVEFOVCAoVFJFRV9PUEVSQU5EIChpbnRvcCwgMSkp
CiAgICAgICYmIFRSRUVfQ09OU1RBTlQgKHNpemVfZXhwKQogICAgICAvKiBJZiB0aGUgY29u
c3RhbnQgY29tZXMgZnJvbSBwb2ludGVyIHN1YnRyYWN0aW9uLAoJIHNraXAgdGhpcyBvcHRp
bWl6YXRpb24tLWl0IHdvdWxkIGNhdXNlIGFuIGVycm9yLiAgKi8KICAgICAgJiYgVFJFRV9D
T0RFIChUUkVFX1RZUEUgKFRSRUVfT1BFUkFORCAoaW50b3AsIDApKSkgPT0gSU5URUdFUl9U
WVBFCiAgICAgIC8qIElmIHRoZSBjb25zdGFudCBpcyB1bnNpZ25lZCwgYW5kIHNtYWxsZXIg
dGhhbiB0aGUgcG9pbnRlciBzaXplLAoJIHRoZW4gd2UgbXVzdCBza2lwIHRoaXMgb3B0aW1p
emF0aW9uLiAgVGhpcyBpcyBiZWNhdXNlIGl0IGNvdWxkIGNhdXNlCgkgYW4gb3ZlcmZsb3cg
ZXJyb3IgaWYgdGhlIGNvbnN0YW50IGlzIG5lZ2F0aXZlIGJ1dCBJTlRPUCBpcyBub3QuICAq
LwogICAgICAmJiAoISBUUkVFX1VOU0lHTkVEIChUUkVFX1RZUEUgKGludG9wKSkKCSAgfHwg
KFRZUEVfUFJFQ0lTSU9OIChUUkVFX1RZUEUgKGludG9wKSkKCSAgICAgID09IFRZUEVfUFJF
Q0lTSU9OIChUUkVFX1RZUEUgKHB0cm9wKSkpKSkKICAgIHsKICAgICAgZW51bSB0cmVlX2Nv
ZGUgc3ViY29kZSA9IHJlc3VsdGNvZGU7CiAgICAgIHRyZWUgaW50X3R5cGUgPSBUUkVFX1RZ
UEUgKGludG9wKTsKICAgICAgaWYgKFRSRUVfQ09ERSAoaW50b3ApID09IE1JTlVTX0VYUFIp
CglzdWJjb2RlID0gKHN1YmNvZGUgPT0gUExVU19FWFBSID8gTUlOVVNfRVhQUiA6IFBMVVNf
RVhQUik7CiAgICAgIC8qIENvbnZlcnQgYm90aCBzdWJleHByZXNzaW9uIHR5cGVzIHRvIHRo
ZSB0eXBlIG9mIGludG9wLAoJIGJlY2F1c2Ugd2VpcmQgY2FzZXMgaW52b2x2aW5nIHBvaW50
ZXIgYXJpdGhtZXRpYwoJIGNhbiByZXN1bHQgaW4gYSBzdW0gb3IgZGlmZmVyZW5jZSB3aXRo
IGRpZmZlcmVudCB0eXBlIGFyZ3MuICAqLwogICAgICBwdHJvcCA9IGJ1aWxkX2JpbmFyeV9v
cCAoc3ViY29kZSwgcHRyb3AsCgkJCSAgICAgICBjb252ZXJ0IChpbnRfdHlwZSwgVFJFRV9P
UEVSQU5EIChpbnRvcCwgMSkpLCAxKTsKICAgICAgaW50b3AgPSBjb252ZXJ0IChpbnRfdHlw
ZSwgVFJFRV9PUEVSQU5EIChpbnRvcCwgMCkpOwogICAgfQoKICAvKiBDb252ZXJ0IHRoZSBp
bnRlZ2VyIGFyZ3VtZW50IHRvIGEgdHlwZSB0aGUgc2FtZSBzaXplIGFzIHNpemV0eXBlCiAg
ICAgc28gdGhlIG11bHRpcGx5IHdvbid0IG92ZXJmbG93IHNwdXJpb3VzbHkuICAqLwoKICBp
ZiAoVFlQRV9QUkVDSVNJT04gKFRSRUVfVFlQRSAoaW50b3ApKSAhPSBUWVBFX1BSRUNJU0lP
TiAoc2l6ZXR5cGUpCiAgICAgIHx8IFRSRUVfVU5TSUdORUQgKFRSRUVfVFlQRSAoaW50b3Ap
KSAhPSBUUkVFX1VOU0lHTkVEIChzaXpldHlwZSkpCiAgICBpbnRvcCA9IGNvbnZlcnQgKGNf
Y29tbW9uX3R5cGVfZm9yX3NpemUgKFRZUEVfUFJFQ0lTSU9OIChzaXpldHlwZSksCgkJCQkJ
ICAgICBUUkVFX1VOU0lHTkVEIChzaXpldHlwZSkpLCBpbnRvcCk7CgogIC8qIFJlcGxhY2Ug
dGhlIGludGVnZXIgYXJndW1lbnQgd2l0aCBhIHN1aXRhYmxlIHByb2R1Y3QgYnkgdGhlIG9i
amVjdCBzaXplLgogICAgIERvIHRoaXMgbXVsdGlwbGljYXRpb24gYXMgc2lnbmVkLCB0aGVu
IGNvbnZlcnQgdG8gdGhlIGFwcHJvcHJpYXRlCiAgICAgcG9pbnRlciB0eXBlIChhY3R1YWxs
eSB1bnNpZ25lZCBpbnRlZ3JhbCkuICAqLwoKICBpbnRvcCA9IGNvbnZlcnQgKHJlc3VsdF90
eXBlLAoJCSAgIGJ1aWxkX2JpbmFyeV9vcCAoTVVMVF9FWFBSLCBpbnRvcCwKCQkJCSAgICBj
b252ZXJ0IChUUkVFX1RZUEUgKGludG9wKSwgc2l6ZV9leHApLCAxKSk7CgogIC8qIENyZWF0
ZSB0aGUgc3VtIG9yIGRpZmZlcmVuY2UuICAqLwoKICByZXN1bHQgPSBidWlsZCAocmVzdWx0
Y29kZSwgcmVzdWx0X3R5cGUsIHB0cm9wLCBpbnRvcCk7CgogIGZvbGRlZCA9IGZvbGQgKHJl
c3VsdCk7CiAgaWYgKGZvbGRlZCA9PSByZXN1bHQpCiAgICBUUkVFX0NPTlNUQU5UIChmb2xk
ZWQpID0gVFJFRV9DT05TVEFOVCAocHRyb3ApICYgVFJFRV9DT05TVEFOVCAoaW50b3ApOwog
IHJldHVybiBmb2xkZWQ7Cn0KDAovKiBQcmVwYXJlIGV4cHIgdG8gYmUgYW4gYXJndW1lbnQg
b2YgYSBUUlVUSF9OT1RfRVhQUiwKICAgb3IgdmFsaWRhdGUgaXRzIGRhdGEgdHlwZSBmb3Ig
YW4gYGlmJyBvciBgd2hpbGUnIHN0YXRlbWVudCBvciA/Li46IGV4cC4KCiAgIFRoaXMgcHJl
cGFyYXRpb24gY29uc2lzdHMgb2YgdGFraW5nIHRoZSBvcmRpbmFyeQogICByZXByZXNlbnRh
dGlvbiBvZiBhbiBleHByZXNzaW9uIGV4cHIgYW5kIHByb2R1Y2luZyBhIHZhbGlkIHRyZWUK
ICAgYm9vbGVhbiBleHByZXNzaW9uIGRlc2NyaWJpbmcgd2hldGhlciBleHByIGlzIG5vbnpl
cm8uICBXZSBjb3VsZAogICBzaW1wbHkgYWx3YXlzIGRvIGJ1aWxkX2JpbmFyeV9vcCAoTkVf
RVhQUiwgZXhwciwgYm9vbGVhbl9mYWxzZV9ub2RlLCAxKSwKICAgYnV0IHdlIG9wdGltaXpl
IGNvbXBhcmlzb25zLCAmJiwgfHwsIGFuZCAhLgoKICAgVGhlIHJlc3VsdGluZyB0eXBlIHNo
b3VsZCBhbHdheXMgYmUgYGJvb2xlYW5fdHlwZV9ub2RlJy4gICovCgp0cmVlCmNfY29tbW9u
X3RydXRodmFsdWVfY29udmVyc2lvbiAodHJlZSBleHByKQp7CiAgaWYgKFRSRUVfQ09ERSAo
ZXhwcikgPT0gRVJST1JfTUFSSykKICAgIHJldHVybiBleHByOwoKI2lmIDAgLyogVGhpcyBh
cHBlYXJzIHRvIGJlIHdyb25nIGZvciBDKysuICAqLwogIC8qIFRoZXNlIHJlYWxseSBzaG91
bGQgcmV0dXJuIGVycm9yX21hcmtfbm9kZSBhZnRlciAyLjQgaXMgc3RhYmxlLgogICAgIEJ1
dCBub3QgYWxsIGNhbGxlcnMgaGFuZGxlIEVSUk9SX01BUksgcHJvcGVybHkuICAqLwogIHN3
aXRjaCAoVFJFRV9DT0RFIChUUkVFX1RZUEUgKGV4cHIpKSkKICAgIHsKICAgIGNhc2UgUkVD
T1JEX1RZUEU6CiAgICAgIGVycm9yICgic3RydWN0IHR5cGUgdmFsdWUgdXNlZCB3aGVyZSBz
Y2FsYXIgaXMgcmVxdWlyZWQiKTsKICAgICAgcmV0dXJuIGJvb2xlYW5fZmFsc2Vfbm9kZTsK
CiAgICBjYXNlIFVOSU9OX1RZUEU6CiAgICAgIGVycm9yICgidW5pb24gdHlwZSB2YWx1ZSB1
c2VkIHdoZXJlIHNjYWxhciBpcyByZXF1aXJlZCIpOwogICAgICByZXR1cm4gYm9vbGVhbl9m
YWxzZV9ub2RlOwoKICAgIGNhc2UgQVJSQVlfVFlQRToKICAgICAgZXJyb3IgKCJhcnJheSB0
eXBlIHZhbHVlIHVzZWQgd2hlcmUgc2NhbGFyIGlzIHJlcXVpcmVkIik7CiAgICAgIHJldHVy
biBib29sZWFuX2ZhbHNlX25vZGU7CgogICAgZGVmYXVsdDoKICAgICAgYnJlYWs7CiAgICB9
CiNlbmRpZiAvKiAwICovCgogIHN3aXRjaCAoVFJFRV9DT0RFIChleHByKSkKICAgIHsKICAg
IGNhc2UgRVFfRVhQUjoKICAgIGNhc2UgTkVfRVhQUjogY2FzZSBMRV9FWFBSOiBjYXNlIEdF
X0VYUFI6IGNhc2UgTFRfRVhQUjogY2FzZSBHVF9FWFBSOgogICAgY2FzZSBUUlVUSF9BTkRJ
Rl9FWFBSOgogICAgY2FzZSBUUlVUSF9PUklGX0VYUFI6CiAgICBjYXNlIFRSVVRIX0FORF9F
WFBSOgogICAgY2FzZSBUUlVUSF9PUl9FWFBSOgogICAgY2FzZSBUUlVUSF9YT1JfRVhQUjoK
ICAgIGNhc2UgVFJVVEhfTk9UX0VYUFI6CiAgICAgIFRSRUVfVFlQRSAoZXhwcikgPSBib29s
ZWFuX3R5cGVfbm9kZTsKICAgICAgcmV0dXJuIGV4cHI7CgogICAgY2FzZSBFUlJPUl9NQVJL
OgogICAgICByZXR1cm4gZXhwcjsKCiAgICBjYXNlIElOVEVHRVJfQ1NUOgogICAgICByZXR1
cm4gaW50ZWdlcl96ZXJvcCAoZXhwcikgPyBib29sZWFuX2ZhbHNlX25vZGUgOiBib29sZWFu
X3RydWVfbm9kZTsKCiAgICBjYXNlIFJFQUxfQ1NUOgogICAgICByZXR1cm4gcmVhbF96ZXJv
cCAoZXhwcikgPyBib29sZWFuX2ZhbHNlX25vZGUgOiBib29sZWFuX3RydWVfbm9kZTsKCiAg
ICBjYXNlIEFERFJfRVhQUjoKICAgICAgLyogSWYgd2UgYXJlIHRha2luZyB0aGUgYWRkcmVz
cyBvZiBhbiBleHRlcm5hbCBkZWNsLCBpdCBtaWdodCBiZSB6ZXJvCgkgaWYgaXQgaXMgd2Vh
aywgc28gd2UgY2Fubm90IG9wdGltaXplLiAgKi8KICAgICAgaWYgKERFQ0xfUCAoVFJFRV9P
UEVSQU5EIChleHByLCAwKSkKCSAgJiYgREVDTF9FWFRFUk5BTCAoVFJFRV9PUEVSQU5EIChl
eHByLCAwKSkpCglicmVhazsKCiAgICAgIGlmIChUUkVFX1NJREVfRUZGRUNUUyAoVFJFRV9P
UEVSQU5EIChleHByLCAwKSkpCglyZXR1cm4gYnVpbGQgKENPTVBPVU5EX0VYUFIsIGJvb2xl
YW5fdHlwZV9ub2RlLAoJCSAgICAgIFRSRUVfT1BFUkFORCAoZXhwciwgMCksIGJvb2xlYW5f
dHJ1ZV9ub2RlKTsKICAgICAgZWxzZQoJcmV0dXJuIGJvb2xlYW5fdHJ1ZV9ub2RlOwoKICAg
IGNhc2UgQ09NUExFWF9FWFBSOgogICAgICByZXR1cm4gYnVpbGRfYmluYXJ5X29wICgoVFJF
RV9TSURFX0VGRkVDVFMgKFRSRUVfT1BFUkFORCAoZXhwciwgMSkpCgkJCSAgICAgICA/IFRS
VVRIX09SX0VYUFIgOiBUUlVUSF9PUklGX0VYUFIpLAoJCWNfY29tbW9uX3RydXRodmFsdWVf
Y29udmVyc2lvbiAoVFJFRV9PUEVSQU5EIChleHByLCAwKSksCgkJY19jb21tb25fdHJ1dGh2
YWx1ZV9jb252ZXJzaW9uIChUUkVFX09QRVJBTkQgKGV4cHIsIDEpKSwKCQkJICAgICAgMCk7
CgogICAgY2FzZSBORUdBVEVfRVhQUjoKICAgIGNhc2UgQUJTX0VYUFI6CiAgICBjYXNlIEZM
T0FUX0VYUFI6CiAgICBjYXNlIEZGU19FWFBSOgogICAgY2FzZSBQT1BDT1VOVF9FWFBSOgog
ICAgICAvKiBUaGVzZSBkb24ndCBjaGFuZ2Ugd2hldGhlciBhbiBvYmplY3QgaXMgbm9uemVy
byBvciB6ZXJvLiAgKi8KICAgICAgcmV0dXJuIGNfY29tbW9uX3RydXRodmFsdWVfY29udmVy
c2lvbiAoVFJFRV9PUEVSQU5EIChleHByLCAwKSk7CgogICAgY2FzZSBMUk9UQVRFX0VYUFI6
CiAgICBjYXNlIFJST1RBVEVfRVhQUjoKICAgICAgLyogVGhlc2UgZG9uJ3QgY2hhbmdlIHdo
ZXRoZXIgYW4gb2JqZWN0IGlzIHplcm8gb3Igbm9uemVybywgYnV0Cgkgd2UgY2FuJ3QgaWdu
b3JlIHRoZW0gaWYgdGhlaXIgc2Vjb25kIGFyZyBoYXMgc2lkZS1lZmZlY3RzLiAgKi8KICAg
ICAgaWYgKFRSRUVfU0lERV9FRkZFQ1RTIChUUkVFX09QRVJBTkQgKGV4cHIsIDEpKSkKCXJl
dHVybiBidWlsZCAoQ09NUE9VTkRfRVhQUiwgYm9vbGVhbl90eXBlX25vZGUsIFRSRUVfT1BF
UkFORCAoZXhwciwgMSksCgkJICAgICAgY19jb21tb25fdHJ1dGh2YWx1ZV9jb252ZXJzaW9u
IChUUkVFX09QRVJBTkQgKGV4cHIsIDApKSk7CiAgICAgIGVsc2UKCXJldHVybiBjX2NvbW1v
bl90cnV0aHZhbHVlX2NvbnZlcnNpb24gKFRSRUVfT1BFUkFORCAoZXhwciwgMCkpOwoKICAg
IGNhc2UgQ09ORF9FWFBSOgogICAgICAvKiBEaXN0cmlidXRlIHRoZSBjb252ZXJzaW9uIGlu
dG8gdGhlIGFybXMgb2YgYSBDT05EX0VYUFIuICAqLwogICAgICByZXR1cm4gZm9sZCAoYnVp
bGQgKENPTkRfRVhQUiwgYm9vbGVhbl90eXBlX25vZGUsIFRSRUVfT1BFUkFORCAoZXhwciwg
MCksCgkJY19jb21tb25fdHJ1dGh2YWx1ZV9jb252ZXJzaW9uIChUUkVFX09QRVJBTkQgKGV4
cHIsIDEpKSwKCQljX2NvbW1vbl90cnV0aHZhbHVlX2NvbnZlcnNpb24gKFRSRUVfT1BFUkFO
RCAoZXhwciwgMikpKSk7CgogICAgY2FzZSBDT05WRVJUX0VYUFI6CiAgICAgIC8qIERvbid0
IGNhbmNlbCB0aGUgZWZmZWN0IG9mIGEgQ09OVkVSVF9FWFBSIGZyb20gYSBSRUZFUkVOQ0Vf
VFlQRSwKCSBzaW5jZSB0aGF0IGFmZmVjdHMgaG93IGBkZWZhdWx0X2NvbnZlcnNpb24nIHdp
bGwgYmVoYXZlLiAgKi8KICAgICAgaWYgKFRSRUVfQ09ERSAoVFJFRV9UWVBFIChleHByKSkg
PT0gUkVGRVJFTkNFX1RZUEUKCSAgfHwgVFJFRV9DT0RFIChUUkVFX1RZUEUgKFRSRUVfT1BF
UkFORCAoZXhwciwgMCkpKSA9PSBSRUZFUkVOQ0VfVFlQRSkKCWJyZWFrOwogICAgICAvKiBm
YWxsIHRocm91Z2guLi4gICovCiAgICBjYXNlIE5PUF9FWFBSOgogICAgICAvKiBJZiB0aGlz
IGlzIHdpZGVuaW5nIHRoZSBhcmd1bWVudCwgd2UgY2FuIGlnbm9yZSBpdC4gICovCiAgICAg
IGlmIChUWVBFX1BSRUNJU0lPTiAoVFJFRV9UWVBFIChleHByKSkKCSAgPj0gVFlQRV9QUkVD
SVNJT04gKFRSRUVfVFlQRSAoVFJFRV9PUEVSQU5EIChleHByLCAwKSkpKQoJcmV0dXJuIGNf
Y29tbW9uX3RydXRodmFsdWVfY29udmVyc2lvbiAoVFJFRV9PUEVSQU5EIChleHByLCAwKSk7
CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgTUlOVVNfRVhQUjoKICAgICAgLyogUGVyaGFwcyBy
ZWR1Y2UgKHggLSB5KSAhPSAwIHRvICh4ICE9IHkpLiAgVGhlIGV4cHJlc3Npb25zCgkgYXJl
bid0IGd1YXJhbnRlZWQgdG8gdGhlIGJlIHNhbWUgZm9yIG1vZGVzIHRoYXQgY2FuIHJlcHJl
c2VudAoJIGluZmluaXR5LCBzaW5jZSBpZiB4IGFuZCB5IGFyZSBib3RoICtpbmZpbml0eSwg
b3IgYm90aAoJIC1pbmZpbml0eSwgdGhlbiB4IC0geSBpcyBub3QgYSBudW1iZXIuCgoJIE5v
dGUgdGhhdCB0aGlzIHRyYW5zZm9ybWF0aW9uIGlzIHNhZmUgd2hlbiB4IG9yIHkgaXMgTmFO
LgoJICh4IC0geSkgaXMgdGhlbiBOYU4sIGFuZCBib3RoICh4IC0geSkgIT0gMCBhbmQgeCAh
PSB5IHdpbGwKCSBiZSBmYWxzZS4gICovCiAgICAgIGlmIChIT05PUl9JTkZJTklUSUVTIChU
WVBFX01PREUgKFRSRUVfVFlQRSAoVFJFRV9PUEVSQU5EIChleHByLCAwKSkpKSkKCWJyZWFr
OwogICAgICAvKiBmYWxsIHRocm91Z2guLi4gICovCiAgICBjYXNlIEJJVF9YT1JfRVhQUjoK
ICAgICAgLyogVGhpcyBhbmQgTUlOVVNfRVhQUiBjYW4gYmUgY2hhbmdlZCBpbnRvIGEgY29t
cGFyaXNvbiBvZiB0aGUKCSB0d28gb2JqZWN0cy4gICovCiAgICAgIGlmIChUUkVFX1RZUEUg
KFRSRUVfT1BFUkFORCAoZXhwciwgMCkpCgkgID09IFRSRUVfVFlQRSAoVFJFRV9PUEVSQU5E
IChleHByLCAxKSkpCglyZXR1cm4gYnVpbGRfYmluYXJ5X29wIChORV9FWFBSLCBUUkVFX09Q
RVJBTkQgKGV4cHIsIDApLAoJCQkJVFJFRV9PUEVSQU5EIChleHByLCAxKSwgMSk7CiAgICAg
IHJldHVybiBidWlsZF9iaW5hcnlfb3AgKE5FX0VYUFIsIFRSRUVfT1BFUkFORCAoZXhwciwg
MCksCgkJCSAgICAgIGZvbGQgKGJ1aWxkMSAoTk9QX0VYUFIsCgkJCQkJICAgIFRSRUVfVFlQ
RSAoVFJFRV9PUEVSQU5EIChleHByLCAwKSksCgkJCQkJICAgIFRSRUVfT1BFUkFORCAoZXhw
ciwgMSkpKSwgMSk7CgogICAgY2FzZSBCSVRfQU5EX0VYUFI6CiAgICAgIGlmIChpbnRlZ2Vy
X29uZXAgKFRSRUVfT1BFUkFORCAoZXhwciwgMSkpCgkgICYmIFRSRUVfVFlQRSAoZXhwcikg
IT0gYm9vbGVhbl90eXBlX25vZGUpCgkvKiBVc2luZyBjb252ZXJ0IGhlcmUgd291bGQgY2F1
c2UgaW5maW5pdGUgcmVjdXJzaW9uLiAgKi8KCXJldHVybiBidWlsZDEgKE5PUF9FWFBSLCBi
b29sZWFuX3R5cGVfbm9kZSwgZXhwcik7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgTU9ESUZZ
X0VYUFI6CiAgICAgIGlmICh3YXJuX3BhcmVudGhlc2VzICYmIENfRVhQX09SSUdJTkFMX0NP
REUgKGV4cHIpID09IE1PRElGWV9FWFBSKQoJd2FybmluZyAoInN1Z2dlc3QgcGFyZW50aGVz
ZXMgYXJvdW5kIGFzc2lnbm1lbnQgdXNlZCBhcyB0cnV0aCB2YWx1ZSIpOwogICAgICBicmVh
azsKCiAgICBkZWZhdWx0OgogICAgICBicmVhazsKICAgIH0KCiAgaWYgKFRSRUVfQ09ERSAo
VFJFRV9UWVBFIChleHByKSkgPT0gQ09NUExFWF9UWVBFKQogICAgewogICAgICB0cmVlIHQg
PSBzYXZlX2V4cHIgKGV4cHIpOwogICAgICByZXR1cm4gKGJ1aWxkX2JpbmFyeV9vcAoJICAg
ICAgKChUUkVFX1NJREVfRUZGRUNUUyAoZXhwcikKCQk/IFRSVVRIX09SX0VYUFIgOiBUUlVU
SF9PUklGX0VYUFIpLAoJY19jb21tb25fdHJ1dGh2YWx1ZV9jb252ZXJzaW9uIChidWlsZF91
bmFyeV9vcCAoUkVBTFBBUlRfRVhQUiwgdCwgMCkpLAoJY19jb21tb25fdHJ1dGh2YWx1ZV9j
b252ZXJzaW9uIChidWlsZF91bmFyeV9vcCAoSU1BR1BBUlRfRVhQUiwgdCwgMCkpLAoJICAg
ICAgIDApKTsKICAgIH0KCiAgcmV0dXJuIGJ1aWxkX2JpbmFyeV9vcCAoTkVfRVhQUiwgZXhw
ciwgaW50ZWdlcl96ZXJvX25vZGUsIDEpOwp9CgwKc3RhdGljIHRyZWUgYnVpbHRpbl9mdW5j
dGlvbl8yIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgdHJlZSwgdHJlZSwKCQkJCWlu
dCwgZW51bSBidWlsdF9pbl9jbGFzcywgaW50LCBpbnQsCgkJCQl0cmVlKTsKCi8qIE1ha2Ug
YSB2YXJpYW50IHR5cGUgaW4gdGhlIHByb3BlciB3YXkgZm9yIEMvQysrLCBwcm9wYWdhdGlu
ZyBxdWFsaWZpZXJzCiAgIGRvd24gdG8gdGhlIGVsZW1lbnQgdHlwZSBvZiBhbiBhcnJheS4g
ICovCgp0cmVlCmNfYnVpbGRfcXVhbGlmaWVkX3R5cGUgKHRyZWUgdHlwZSwgaW50IHR5cGVf
cXVhbHMpCnsKICAvKiBBIHJlc3RyaWN0LXF1YWxpZmllZCBwb2ludGVyIHR5cGUgbXVzdCBi
ZSBhIHBvaW50ZXIgdG8gb2JqZWN0IG9yCiAgICAgaW5jb21wbGV0ZSB0eXBlLiAgTm90ZSB0
aGF0IHRoZSB1c2Ugb2YgUE9JTlRFUl9UWVBFX1AgYWxzbyBhbGxvd3MKICAgICBSRUZFUkVO
Q0VfVFlQRXMsIHdoaWNoIGlzIGFwcHJvcHJpYXRlIGZvciBDKysuICBVbmZvcnR1bmF0ZWx5
LAogICAgIHRoZSBDKysgZnJvbnQtZW5kIGFsc28gdXNlIFBPSU5URVJfVFlQRSBmb3IgcG9p
bnRlci10by1tZW1iZXIKICAgICB2YWx1ZXMsIHNvIGV2ZW4gdGhvdWdoIGl0IHNob3VsZCBi
ZSBpbGxlZ2FsIHRvIHVzZSBgcmVzdHJpY3QnCiAgICAgd2l0aCBzdWNoIGFuIGVudGl0eSB3
ZSBkb24ndCBmbGFnIHRoYXQgaGVyZS4gIFRodXMsIHNwZWNpYWwgY2FzZQogICAgIGNvZGUg
Zm9yIHRoYXQgY2FzZSBpcyByZXF1aXJlZCBpbiB0aGUgQysrIGZyb250LWVuZC4gICovCiAg
aWYgKCh0eXBlX3F1YWxzICYgVFlQRV9RVUFMX1JFU1RSSUNUKQogICAgICAmJiAoIVBPSU5U
RVJfVFlQRV9QICh0eXBlKQoJICB8fCAhQ19UWVBFX09CSkVDVF9PUl9JTkNPTVBMRVRFX1Ag
KFRSRUVfVFlQRSAodHlwZSkpKSkKICAgIHsKICAgICAgZXJyb3IgKCJpbnZhbGlkIHVzZSBv
ZiBgcmVzdHJpY3QnIik7CiAgICAgIHR5cGVfcXVhbHMgJj0gflRZUEVfUVVBTF9SRVNUUklD
VDsKICAgIH0KCiAgaWYgKFRSRUVfQ09ERSAodHlwZSkgPT0gQVJSQVlfVFlQRSkKICAgIHJl
dHVybiBidWlsZF9hcnJheV90eXBlIChjX2J1aWxkX3F1YWxpZmllZF90eXBlIChUUkVFX1RZ
UEUgKHR5cGUpLAoJCQkJCQkgICAgIHR5cGVfcXVhbHMpLAoJCQkgICAgIFRZUEVfRE9NQUlO
ICh0eXBlKSk7CiAgcmV0dXJuIGJ1aWxkX3F1YWxpZmllZF90eXBlICh0eXBlLCB0eXBlX3F1
YWxzKTsKfQoKLyogQXBwbHkgdGhlIFRZUEVfUVVBTFMgdG8gdGhlIG5ldyBERUNMLiAgKi8K
CnZvaWQKY19hcHBseV90eXBlX3F1YWxzX3RvX2RlY2wgKGludCB0eXBlX3F1YWxzLCB0cmVl
IGRlY2wpCnsKICBpZiAoKHR5cGVfcXVhbHMgJiBUWVBFX1FVQUxfQ09OU1QpCiAgICAgIHx8
IChUUkVFX1RZUEUgKGRlY2wpCgkgICYmIFRSRUVfQ09ERSAoVFJFRV9UWVBFIChkZWNsKSkg
PT0gUkVGRVJFTkNFX1RZUEUpKQogICAgVFJFRV9SRUFET05MWSAoZGVjbCkgPSAxOwogIGlm
ICh0eXBlX3F1YWxzICYgVFlQRV9RVUFMX1ZPTEFUSUxFKQogICAgewogICAgICBUUkVFX1NJ
REVfRUZGRUNUUyAoZGVjbCkgPSAxOwogICAgICBUUkVFX1RISVNfVk9MQVRJTEUgKGRlY2wp
ID0gMTsKICAgIH0KICBpZiAodHlwZV9xdWFscyAmIFRZUEVfUVVBTF9SRVNUUklDVCkKICAg
IHsKICAgICAgaWYgKCFUUkVFX1RZUEUgKGRlY2wpCgkgIHx8ICFQT0lOVEVSX1RZUEVfUCAo
VFJFRV9UWVBFIChkZWNsKSkKCSAgfHwgIUNfVFlQRV9PQkpFQ1RfT1JfSU5DT01QTEVURV9Q
IChUUkVFX1RZUEUgKFRSRUVfVFlQRSAoZGVjbCkpKSkKCWVycm9yICgiaW52YWxpZCB1c2Ug
b2YgYHJlc3RyaWN0JyIpOwogICAgICBlbHNlIGlmIChmbGFnX3N0cmljdF9hbGlhc2luZykK
CS8qIEluZGljYXRlIHdlIG5lZWQgdG8gbWFrZSBhIHVuaXF1ZSBhbGlhcyBzZXQgZm9yIHRo
aXMgcG9pbnRlci4KCSAgIFdlIGNhbid0IGRvIGl0IGhlcmUgYmVjYXVzZSBpdCBtaWdodCBi
ZSBwb2ludGluZyB0byBhbgoJICAgaW5jb21wbGV0ZSB0eXBlLiAgKi8KCURFQ0xfUE9JTlRF
Ul9BTElBU19TRVQgKGRlY2wpID0gLTI7CiAgICB9Cn0KCi8qIFJldHVybiB0aGUgdHlwZWQt
YmFzZWQgYWxpYXMgc2V0IGZvciBULCB3aGljaCBtYXkgYmUgYW4gZXhwcmVzc2lvbgogICBv
ciBhIHR5cGUuICBSZXR1cm4gLTEgaWYgd2UgZG9uJ3QgZG8gYW55dGhpbmcgc3BlY2lhbC4g
ICovCgpIT1NUX1dJREVfSU5UCmNfY29tbW9uX2dldF9hbGlhc19zZXQgKHRyZWUgdCkKewog
IHRyZWUgdTsKCiAgLyogUGVybWl0IHR5cGUtcHVubmluZyB3aGVuIGFjY2Vzc2luZyBhIHVu
aW9uLCBwcm92aWRlZCB0aGUgYWNjZXNzCiAgICAgaXMgZGlyZWN0bHkgdGhyb3VnaCB0aGUg
dW5pb24uICBGb3IgZXhhbXBsZSwgdGhpcyBjb2RlIGRvZXMgbm90CiAgICAgcGVybWl0IHRh
a2luZyB0aGUgYWRkcmVzcyBvZiBhIHVuaW9uIG1lbWJlciBhbmQgdGhlbiBzdG9yaW5nCiAg
ICAgdGhyb3VnaCBpdC4gIEV2ZW4gdGhlIHR5cGUtcHVubmluZyBhbGxvd2VkIGhlcmUgaXMg
YSBHQ0MKICAgICBleHRlbnNpb24sIGFsYmVpdCBhIGNvbW1vbiBhbmQgdXNlZnVsIG9uZTsg
dGhlIEMgc3RhbmRhcmQgc2F5cwogICAgIHRoYXQgc3VjaCBhY2Nlc3NlcyBoYXZlIGltcGxl
bWVudGF0aW9uLWRlZmluZWQgYmVoYXZpb3IuICAqLwogIGZvciAodSA9IHQ7CiAgICAgICBU
UkVFX0NPREUgKHUpID09IENPTVBPTkVOVF9SRUYgfHwgVFJFRV9DT0RFICh1KSA9PSBBUlJB
WV9SRUY7CiAgICAgICB1ID0gVFJFRV9PUEVSQU5EICh1LCAwKSkKICAgIGlmIChUUkVFX0NP
REUgKHUpID09IENPTVBPTkVOVF9SRUYKCSYmIFRSRUVfQ09ERSAoVFJFRV9UWVBFIChUUkVF
X09QRVJBTkQgKHUsIDApKSkgPT0gVU5JT05fVFlQRSkKICAgICAgcmV0dXJuIDA7CgogIC8q
IFRoYXQncyBhbGwgdGhlIGV4cHJlc3Npb25zIHdlIGhhbmRsZSBzcGVjaWFsbHkuICAqLwog
IGlmICghIFRZUEVfUCAodCkpCiAgICByZXR1cm4gLTE7CgogIC8qIFRoZSBDIHN0YW5kYXJk
IGd1YXJhbnRlZXMgdGhhdCBhbnkgb2JqZWN0IG1heSBiZSBhY2Nlc3NlZCB2aWEgYW4KICAg
ICBsdmFsdWUgdGhhdCBoYXMgY2hhcmFjdGVyIHR5cGUuICAqLwogIGlmICh0ID09IGNoYXJf
dHlwZV9ub2RlCiAgICAgIHx8IHQgPT0gc2lnbmVkX2NoYXJfdHlwZV9ub2RlCiAgICAgIHx8
IHQgPT0gdW5zaWduZWRfY2hhcl90eXBlX25vZGUpCiAgICByZXR1cm4gMDsKCiAgLyogSWYg
aXQgaGFzIHRoZSBtYXlfYWxpYXMgYXR0cmlidXRlLCBpdCBjYW4gYWxpYXMgYW55dGhpbmcu
ICAqLwogIGlmIChsb29rdXBfYXR0cmlidXRlICgibWF5X2FsaWFzIiwgVFlQRV9BVFRSSUJV
VEVTICh0KSkpCiAgICByZXR1cm4gMDsKCiAgLyogVGhlIEMgc3RhbmRhcmQgc3BlY2lmaWNh
bGx5IGFsbG93cyBhbGlhc2luZyBiZXR3ZWVuIHNpZ25lZCBhbmQKICAgICB1bnNpZ25lZCB2
YXJpYW50cyBvZiB0aGUgc2FtZSB0eXBlLiAgV2UgdHJlYXQgdGhlIHNpZ25lZAogICAgIHZh
cmlhbnQgYXMgY2Fub25pY2FsLiAgKi8KICBpZiAoVFJFRV9DT0RFICh0KSA9PSBJTlRFR0VS
X1RZUEUgJiYgVFJFRV9VTlNJR05FRCAodCkpCiAgICB7CiAgICAgIHRyZWUgdDEgPSBjX2Nv
bW1vbl9zaWduZWRfdHlwZSAodCk7CgogICAgICAvKiB0MSA9PSB0IGNhbiBoYXBwZW4gZm9y
IGJvb2xlYW4gbm9kZXMgd2hpY2ggYXJlIGFsd2F5cyB1bnNpZ25lZC4gICovCiAgICAgIGlm
ICh0MSAhPSB0KQoJcmV0dXJuIGdldF9hbGlhc19zZXQgKHQxKTsKICAgIH0KICBlbHNlIGlm
IChQT0lOVEVSX1RZUEVfUCAodCkpCiAgICB7CiAgICAgIHRyZWUgdDE7CgogICAgICAvKiBV
bmZvcnR1bmF0ZWx5LCB0aGVyZSBpcyBubyBjYW5vbmljYWwgZm9ybSBvZiBhIHBvaW50ZXIg
dHlwZS4KCSBJbiBwYXJ0aWN1bGFyLCBpZiB3ZSBoYXZlIGB0eXBlZGVmIGludCBJJywgdGhl
biBgaW50IConLCBhbmQKCSBgSSAqJyBhcmUgZGlmZmVyZW50IHR5cGVzLiAgU28sIHdlIGhh
dmUgdG8gcGljayBhIGNhbm9uaWNhbAoJIHJlcHJlc2VudGF0aXZlLiAgV2UgZG8gdGhpcyBi
ZWxvdy4KCgkgVGVjaG5pY2FsbHksIHRoaXMgYXBwcm9hY2ggaXMgYWN0dWFsbHkgbW9yZSBj
b25zZXJ2YXRpdmUgdGhhdAoJIGl0IG5lZWRzIHRvIGJlLiAgSW4gcGFydGljdWxhciwgYGNv
bnN0IGludCAqJyBhbmQgYGludCAqJwoJIHNob3VsZCBiZSBpbiBkaWZmZXJlbnQgYWxpYXMg
c2V0cywgYWNjb3JkaW5nIHRvIHRoZSBDIGFuZCBDKysKCSBzdGFuZGFyZCwgc2luY2UgdGhl
aXIgdHlwZXMgYXJlIG5vdCB0aGUgc2FtZSwgYW5kIHNvLAoJIHRlY2huaWNhbGx5LCBhbiBg
aW50ICoqJyBhbmQgYGNvbnN0IGludCAqKicgY2Fubm90IHBvaW50IGF0CgkgdGhlIHNhbWUg
dGhpbmcuCgogICAgICAgICBCdXQsIHRoZSBzdGFuZGFyZCBpcyB3cm9uZy4gIEluIHBhcnRp
Y3VsYXIsIHRoaXMgY29kZSBpcwoJIGxlZ2FsIEMrKzoKCiAgICAgICAgICAgIGludCAqaXA7
CiAgICAgICAgICAgIGludCAqKmlwcCA9ICZpcDsKICAgICAgICAgICAgY29uc3QgaW50KiBj
b25zdCogY2lwcCA9ICZpcHA7CgogICAgICAgICBBbmQsIGl0IGRvZXNuJ3QgbWFrZSBzZW5z
ZSBmb3IgdGhhdCB0byBiZSBsZWdhbCB1bmxlc3MgeW91CgkgY2FuIGRlcmVmZXJlbmNlIElQ
UCBhbmQgQ0lQUC4gIFNvLCB3ZSBpZ25vcmUgY3YtcXVhbGlmaWVycyBvbgoJIHRoZSBwb2lu
dGVkLXRvIHR5cGVzLiAgVGhpcyBpc3N1ZSBoYXMgYmVlbiByZXBvcnRlZCB0byB0aGUKCSBD
KysgY29tbWl0dGVlLiAgKi8KICAgICAgdDEgPSBidWlsZF90eXBlX25vX3F1YWxzICh0KTsK
ICAgICAgaWYgKHQxICE9IHQpCglyZXR1cm4gZ2V0X2FsaWFzX3NldCAodDEpOwogICAgfQoK
ICByZXR1cm4gLTE7Cn0KDAovKiBDb21wdXRlIHRoZSB2YWx1ZSBvZiAnc2l6ZW9mIChUWVBF
KScgb3IgJ19fYWxpZ25vZl9fIChUWVBFKScsIHdoZXJlIHRoZQogICBzZWNvbmQgcGFyYW1l
dGVyIGluZGljYXRlcyB3aGljaCBPUEVSQVRPUiBpcyBiZWluZyBhcHBsaWVkLiAgVGhlIENP
TVBMQUlOCiAgIGZsYWcgY29udHJvbHMgd2hldGhlciB3ZSBzaG91bGQgZGlhZ25vc2UgcG9z
c2libHkgaWxsLWZvcm1lZAogICBjb25zdHJ1Y3RzIG9yIG5vdC4gICovCnRyZWUKY19zaXpl
b2Zfb3JfYWxpZ25vZl90eXBlICh0cmVlIHR5cGUsIGVudW0gdHJlZV9jb2RlIG9wLCBpbnQg
Y29tcGxhaW4pCnsKICBjb25zdCBjaGFyICpvcF9uYW1lOwogIHRyZWUgdmFsdWUgPSBOVUxM
OwogIGVudW0gdHJlZV9jb2RlIHR5cGVfY29kZSA9IFRSRUVfQ09ERSAodHlwZSk7CgogIG15
X2ZyaWVuZGx5X2Fzc2VydCAob3AgPT0gU0laRU9GX0VYUFIgfHwgb3AgPT0gQUxJR05PRl9F
WFBSLCAyMDAyMDcyMCk7CiAgb3BfbmFtZSA9IG9wID09IFNJWkVPRl9FWFBSID8gInNpemVv
ZiIgOiAiX19hbGlnbm9mX18iOwoKICBpZiAodHlwZV9jb2RlID09IEZVTkNUSU9OX1RZUEUp
CiAgICB7CiAgICAgIGlmIChvcCA9PSBTSVpFT0ZfRVhQUikKCXsKCSAgaWYgKGNvbXBsYWlu
ICYmIChwZWRhbnRpYyB8fCB3YXJuX3BvaW50ZXJfYXJpdGgpKQoJICAgIHBlZHdhcm4gKCJp
bnZhbGlkIGFwcGxpY2F0aW9uIG9mIGBzaXplb2YnIHRvIGEgZnVuY3Rpb24gdHlwZSIpOwoJ
ICB2YWx1ZSA9IHNpemVfb25lX25vZGU7Cgl9CiAgICAgIGVsc2UKCXZhbHVlID0gc2l6ZV9p
bnQgKEZVTkNUSU9OX0JPVU5EQVJZIC8gQklUU19QRVJfVU5JVCk7CiAgICB9CiAgZWxzZSBp
ZiAodHlwZV9jb2RlID09IFZPSURfVFlQRSB8fCB0eXBlX2NvZGUgPT0gRVJST1JfTUFSSykK
ICAgIHsKICAgICAgaWYgKHR5cGVfY29kZSA9PSBWT0lEX1RZUEUKCSAgJiYgY29tcGxhaW4g
JiYgKHBlZGFudGljIHx8IHdhcm5fcG9pbnRlcl9hcml0aCkpCglwZWR3YXJuICgiaW52YWxp
ZCBhcHBsaWNhdGlvbiBvZiBgJXMnIHRvIGEgdm9pZCB0eXBlIiwgb3BfbmFtZSk7CiAgICAg
IHZhbHVlID0gc2l6ZV9vbmVfbm9kZTsKICAgIH0KICBlbHNlIGlmICghQ09NUExFVEVfVFlQ
RV9QICh0eXBlKSkKICAgIHsKICAgICAgaWYgKGNvbXBsYWluKQoJZXJyb3IgKCJpbnZhbGlk
IGFwcGxpY2F0aW9uIG9mIGAlcycgdG8gYW4gaW5jb21wbGV0ZSB0eXBlIiwgb3BfbmFtZSk7
CiAgICAgIHZhbHVlID0gc2l6ZV96ZXJvX25vZGU7CiAgICB9CiAgZWxzZQogICAgewogICAg
ICBpZiAob3AgPT0gU0laRU9GX0VYUFIpCgkvKiBDb252ZXJ0IGluIGNhc2UgYSBjaGFyIGlz
IG1vcmUgdGhhbiBvbmUgdW5pdC4gICovCgl2YWx1ZSA9IHNpemVfYmlub3AgKENFSUxfRElW
X0VYUFIsIFRZUEVfU0laRV9VTklUICh0eXBlKSwKCQkJICAgIHNpemVfaW50IChUWVBFX1BS
RUNJU0lPTiAoY2hhcl90eXBlX25vZGUpCgkJCQkgICAgICAvIEJJVFNfUEVSX1VOSVQpKTsK
ICAgICAgZWxzZQoJdmFsdWUgPSBzaXplX2ludCAoVFlQRV9BTElHTiAodHlwZSkgLyBCSVRT
X1BFUl9VTklUKTsKICAgIH0KCiAgLyogVkFMVUUgd2lsbCBoYXZlIGFuIGludGVnZXIgdHlw
ZSB3aXRoIFRZUEVfSVNfU0laRVRZUEUgc2V0LgogICAgIFRZUEVfSVNfU0laRVRZUEUgbWVh
bnMgdGhhdCBjZXJ0YWluIHRoaW5ncyAobGlrZSBvdmVyZmxvdykgd2lsbAogICAgIG5ldmVy
IGhhcHBlbi4gIEhvd2V2ZXIsIHRoaXMgbm9kZSBzaG91bGQgcmVhbGx5IGhhdmUgdHlwZQog
ICAgIGBzaXplX3QnLCB3aGljaCBpcyBqdXN0IGEgdHlwZWRlZiBmb3IgYW4gb3JkaW5hcnkg
aW50ZWdlciB0eXBlLiAgKi8KICB2YWx1ZSA9IGZvbGQgKGJ1aWxkMSAoTk9QX0VYUFIsIHNp
emVfdHlwZV9ub2RlLCB2YWx1ZSkpOwogIG15X2ZyaWVuZGx5X2Fzc2VydCAoIVRZUEVfSVNf
U0laRVRZUEUgKFRSRUVfVFlQRSAodmFsdWUpKSwgMjAwMDEwMjEpOwoKICByZXR1cm4gdmFs
dWU7Cn0KCi8qIEltcGxlbWVudCB0aGUgX19hbGlnbm9mIGtleXdvcmQ6IFJldHVybiB0aGUg
bWluaW11bSByZXF1aXJlZAogICBhbGlnbm1lbnQgb2YgRVhQUiwgbWVhc3VyZWQgaW4gYnl0
ZXMuICBGb3IgVkFSX0RFQ0wncyBhbmQKICAgRklFTERfREVDTCdzIHJldHVybiBERUNMX0FM
SUdOICh3aGljaCBjYW4gYmUgc2V0IGZyb20gYW4KICAgImFsaWduZWQiIF9fYXR0cmlidXRl
X18gc3BlY2lmaWNhdGlvbikuICAqLwoKdHJlZQpjX2FsaWdub2ZfZXhwciAodHJlZSBleHBy
KQp7CiAgdHJlZSB0OwoKICBpZiAoVFJFRV9DT0RFIChleHByKSA9PSBWQVJfREVDTCkKICAg
IHQgPSBzaXplX2ludCAoREVDTF9BTElHTiAoZXhwcikgLyBCSVRTX1BFUl9VTklUKTsKCiAg
ZWxzZSBpZiAoVFJFRV9DT0RFIChleHByKSA9PSBDT01QT05FTlRfUkVGCgkgICAmJiBERUNM
X0NfQklUX0ZJRUxEIChUUkVFX09QRVJBTkQgKGV4cHIsIDEpKSkKICAgIHsKICAgICAgZXJy
b3IgKCJgX19hbGlnbm9mJyBhcHBsaWVkIHRvIGEgYml0LWZpZWxkIik7CiAgICAgIHQgPSBz
aXplX29uZV9ub2RlOwogICAgfQogIGVsc2UgaWYgKFRSRUVfQ09ERSAoZXhwcikgPT0gQ09N
UE9ORU5UX1JFRgoJICAgJiYgVFJFRV9DT0RFIChUUkVFX09QRVJBTkQgKGV4cHIsIDEpKSA9
PSBGSUVMRF9ERUNMKQogICAgdCA9IHNpemVfaW50IChERUNMX0FMSUdOIChUUkVFX09QRVJB
TkQgKGV4cHIsIDEpKSAvIEJJVFNfUEVSX1VOSVQpOwoKICBlbHNlIGlmIChUUkVFX0NPREUg
KGV4cHIpID09IElORElSRUNUX1JFRikKICAgIHsKICAgICAgdHJlZSB0ID0gVFJFRV9PUEVS
QU5EIChleHByLCAwKTsKICAgICAgdHJlZSBiZXN0ID0gdDsKICAgICAgaW50IGJlc3RhbGln
biA9IFRZUEVfQUxJR04gKFRSRUVfVFlQRSAoVFJFRV9UWVBFICh0KSkpOwoKICAgICAgd2hp
bGUgKFRSRUVfQ09ERSAodCkgPT0gTk9QX0VYUFIKCSAgICAgJiYgVFJFRV9DT0RFIChUUkVF
X1RZUEUgKFRSRUVfT1BFUkFORCAodCwgMCkpKSA9PSBQT0lOVEVSX1RZUEUpCgl7CgkgIGlu
dCB0aGlzYWxpZ247CgoJICB0ID0gVFJFRV9PUEVSQU5EICh0LCAwKTsKCSAgdGhpc2FsaWdu
ID0gVFlQRV9BTElHTiAoVFJFRV9UWVBFIChUUkVFX1RZUEUgKHQpKSk7CgkgIGlmICh0aGlz
YWxpZ24gPiBiZXN0YWxpZ24pCgkgICAgYmVzdCA9IHQsIGJlc3RhbGlnbiA9IHRoaXNhbGln
bjsKCX0KICAgICAgcmV0dXJuIGNfYWxpZ25vZiAoVFJFRV9UWVBFIChUUkVFX1RZUEUgKGJl
c3QpKSk7CiAgICB9CiAgZWxzZQogICAgcmV0dXJuIGNfYWxpZ25vZiAoVFJFRV9UWVBFIChl
eHByKSk7CgogIHJldHVybiBmb2xkIChidWlsZDEgKE5PUF9FWFBSLCBzaXplX3R5cGVfbm9k
ZSwgdCkpOwp9CgwKLyogSGFuZGxlIEMgYW5kIEMrKyBkZWZhdWx0IGF0dHJpYnV0ZXMuICAq
LwoKZW51bSBidWlsdF9pbl9hdHRyaWJ1dGUKewojZGVmaW5lIERFRl9BVFRSX05VTExfVFJF
RShFTlVNKSBFTlVNLAojZGVmaW5lIERFRl9BVFRSX0lOVChFTlVNLCBWQUxVRSkgRU5VTSwK
I2RlZmluZSBERUZfQVRUUl9JREVOVChFTlVNLCBTVFJJTkcpIEVOVU0sCiNkZWZpbmUgREVG
X0FUVFJfVFJFRV9MSVNUKEVOVU0sIFBVUlBPU0UsIFZBTFVFLCBDSEFJTikgRU5VTSwKI2Rl
ZmluZSBERUZfRk5fQVRUUihOQU1FLCBBVFRSUywgUFJFRElDQVRFKSAvKiBObyBlbnRyeSBu
ZWVkZWQgaW4gZW51bS4gICovCiNpbmNsdWRlICJidWlsdGluLWF0dHJzLmRlZiIKI3VuZGVm
IERFRl9BVFRSX05VTExfVFJFRQojdW5kZWYgREVGX0FUVFJfSU5UCiN1bmRlZiBERUZfQVRU
Ul9JREVOVAojdW5kZWYgREVGX0FUVFJfVFJFRV9MSVNUCiN1bmRlZiBERUZfRk5fQVRUUgog
IEFUVFJfTEFTVAp9OwoKc3RhdGljIEdUWSgoKSkgdHJlZSBidWlsdF9pbl9hdHRyaWJ1dGVz
WyhpbnQpIEFUVFJfTEFTVF07CgpzdGF0aWMgYm9vbCBjX2F0dHJzX2luaXRpYWxpemVkID0g
ZmFsc2U7CgpzdGF0aWMgdm9pZCBjX2luaXRfYXR0cmlidXRlcyAodm9pZCk7CgovKiBCdWls
ZCB0cmVlIG5vZGVzIGFuZCBidWlsdGluIGZ1bmN0aW9ucyBjb21tb24gdG8gYm90aCBDIGFu
ZCBDKysgbGFuZ3VhZ2UKICAgZnJvbnRlbmRzLiAgKi8KCnZvaWQKY19jb21tb25fbm9kZXNf
YW5kX2J1aWx0aW5zICh2b2lkKQp7CiAgZW51bSBidWlsdGluX3R5cGUKICB7CiNkZWZpbmUg
REVGX1BSSU1JVElWRV9UWVBFKE5BTUUsIFZBTFVFKSBOQU1FLAojZGVmaW5lIERFRl9GVU5D
VElPTl9UWVBFXzAoTkFNRSwgUkVUVVJOKSBOQU1FLAojZGVmaW5lIERFRl9GVU5DVElPTl9U
WVBFXzEoTkFNRSwgUkVUVVJOLCBBUkcxKSBOQU1FLAojZGVmaW5lIERFRl9GVU5DVElPTl9U
WVBFXzIoTkFNRSwgUkVUVVJOLCBBUkcxLCBBUkcyKSBOQU1FLAojZGVmaW5lIERFRl9GVU5D
VElPTl9UWVBFXzMoTkFNRSwgUkVUVVJOLCBBUkcxLCBBUkcyLCBBUkczKSBOQU1FLAojZGVm
aW5lIERFRl9GVU5DVElPTl9UWVBFXzQoTkFNRSwgUkVUVVJOLCBBUkcxLCBBUkcyLCBBUkcz
LCBBUkc0KSBOQU1FLAojZGVmaW5lIERFRl9GVU5DVElPTl9UWVBFX1ZBUl8wKE5BTUUsIFJF
VFVSTikgTkFNRSwKI2RlZmluZSBERUZfRlVOQ1RJT05fVFlQRV9WQVJfMShOQU1FLCBSRVRV
Uk4sIEFSRzEpIE5BTUUsCiNkZWZpbmUgREVGX0ZVTkNUSU9OX1RZUEVfVkFSXzIoTkFNRSwg
UkVUVVJOLCBBUkcxLCBBUkcyKSBOQU1FLAojZGVmaW5lIERFRl9GVU5DVElPTl9UWVBFX1ZB
Ul8zKE5BTUUsIFJFVFVSTiwgQVJHMSwgQVJHMiwgQVJHMykgTkFNRSwKI2RlZmluZSBERUZf
UE9JTlRFUl9UWVBFKE5BTUUsIFRZUEUpIE5BTUUsCiNpbmNsdWRlICJidWlsdGluLXR5cGVz
LmRlZiIKI3VuZGVmIERFRl9QUklNSVRJVkVfVFlQRQojdW5kZWYgREVGX0ZVTkNUSU9OX1RZ
UEVfMAojdW5kZWYgREVGX0ZVTkNUSU9OX1RZUEVfMQojdW5kZWYgREVGX0ZVTkNUSU9OX1RZ
UEVfMgojdW5kZWYgREVGX0ZVTkNUSU9OX1RZUEVfMwojdW5kZWYgREVGX0ZVTkNUSU9OX1RZ
UEVfNAojdW5kZWYgREVGX0ZVTkNUSU9OX1RZUEVfVkFSXzAKI3VuZGVmIERFRl9GVU5DVElP
Tl9UWVBFX1ZBUl8xCiN1bmRlZiBERUZfRlVOQ1RJT05fVFlQRV9WQVJfMgojdW5kZWYgREVG
X0ZVTkNUSU9OX1RZUEVfVkFSXzMKI3VuZGVmIERFRl9QT0lOVEVSX1RZUEUKICAgIEJUX0xB
U1QKICB9OwoKICB0eXBlZGVmIGVudW0gYnVpbHRpbl90eXBlIGJ1aWx0aW5fdHlwZTsKCiAg
dHJlZSBidWlsdGluX3R5cGVzWyhpbnQpIEJUX0xBU1RdOwogIGludCB3Y2hhcl90eXBlX3Np
emU7CiAgdHJlZSBhcnJheV9kb21haW5fdHlwZTsKICB0cmVlIHZhX2xpc3RfcmVmX3R5cGVf
bm9kZTsKICB0cmVlIHZhX2xpc3RfYXJnX3R5cGVfbm9kZTsKCiAgLyogRGVmaW5lIGBpbnQn
IGFuZCBgY2hhcicgZmlyc3Qgc28gdGhhdCBkYnggd2lsbCBvdXRwdXQgdGhlbSBmaXJzdC4g
ICovCiAgcmVjb3JkX2J1aWx0aW5fdHlwZSAoUklEX0lOVCwgTlVMTCwgaW50ZWdlcl90eXBl
X25vZGUpOwogIHJlY29yZF9idWlsdGluX3R5cGUgKFJJRF9DSEFSLCAiY2hhciIsIGNoYXJf
dHlwZV9ub2RlKTsKCiAgLyogYHNpZ25lZCcgaXMgdGhlIHNhbWUgYXMgYGludCcuICBGSVhN
RTogdGhlIGRlY2xhcmF0aW9ucyBvZiAic2lnbmVkIiwKICAgICAidW5zaWduZWQgbG9uZyIs
ICJsb25nIGxvbmcgdW5zaWduZWQiIGFuZCAidW5zaWduZWQgc2hvcnQiIHdlcmUgaW4gQysr
CiAgICAgYnV0IG5vdCBDLiAgQXJlIHRoZSBjb25kaXRpb25hbHMgaGVyZSBuZWVkZWQ/ICAq
LwogIGlmIChjX2RpYWxlY3RfY3h4ICgpKQogICAgcmVjb3JkX2J1aWx0aW5fdHlwZSAoUklE
X1NJR05FRCwgTlVMTCwgaW50ZWdlcl90eXBlX25vZGUpOwogIHJlY29yZF9idWlsdGluX3R5
cGUgKFJJRF9MT05HLCAibG9uZyBpbnQiLCBsb25nX2ludGVnZXJfdHlwZV9ub2RlKTsKICBy
ZWNvcmRfYnVpbHRpbl90eXBlIChSSURfVU5TSUdORUQsICJ1bnNpZ25lZCBpbnQiLCB1bnNp
Z25lZF90eXBlX25vZGUpOwogIHJlY29yZF9idWlsdGluX3R5cGUgKFJJRF9NQVgsICJsb25n
IHVuc2lnbmVkIGludCIsCgkJICAgICAgIGxvbmdfdW5zaWduZWRfdHlwZV9ub2RlKTsKICBp
ZiAoY19kaWFsZWN0X2N4eCAoKSkKICAgIHJlY29yZF9idWlsdGluX3R5cGUgKFJJRF9NQVgs
ICJ1bnNpZ25lZCBsb25nIiwgbG9uZ191bnNpZ25lZF90eXBlX25vZGUpOwogIHJlY29yZF9i
dWlsdGluX3R5cGUgKFJJRF9NQVgsICJsb25nIGxvbmcgaW50IiwKCQkgICAgICAgbG9uZ19s
b25nX2ludGVnZXJfdHlwZV9ub2RlKTsKICByZWNvcmRfYnVpbHRpbl90eXBlIChSSURfTUFY
LCAibG9uZyBsb25nIHVuc2lnbmVkIGludCIsCgkJICAgICAgIGxvbmdfbG9uZ191bnNpZ25l
ZF90eXBlX25vZGUpOwogIGlmIChjX2RpYWxlY3RfY3h4ICgpKQogICAgcmVjb3JkX2J1aWx0
aW5fdHlwZSAoUklEX01BWCwgImxvbmcgbG9uZyB1bnNpZ25lZCIsCgkJCSBsb25nX2xvbmdf
dW5zaWduZWRfdHlwZV9ub2RlKTsKICByZWNvcmRfYnVpbHRpbl90eXBlIChSSURfU0hPUlQs
ICJzaG9ydCBpbnQiLCBzaG9ydF9pbnRlZ2VyX3R5cGVfbm9kZSk7CiAgcmVjb3JkX2J1aWx0
aW5fdHlwZSAoUklEX01BWCwgInNob3J0IHVuc2lnbmVkIGludCIsCgkJICAgICAgIHNob3J0
X3Vuc2lnbmVkX3R5cGVfbm9kZSk7CiAgaWYgKGNfZGlhbGVjdF9jeHggKCkpCiAgICByZWNv
cmRfYnVpbHRpbl90eXBlIChSSURfTUFYLCAidW5zaWduZWQgc2hvcnQiLAoJCQkgc2hvcnRf
dW5zaWduZWRfdHlwZV9ub2RlKTsKCiAgLyogRGVmaW5lIGJvdGggYHNpZ25lZCBjaGFyJyBh
bmQgYHVuc2lnbmVkIGNoYXInLiAgKi8KICByZWNvcmRfYnVpbHRpbl90eXBlIChSSURfTUFY
LCAic2lnbmVkIGNoYXIiLCBzaWduZWRfY2hhcl90eXBlX25vZGUpOwogIHJlY29yZF9idWls
dGluX3R5cGUgKFJJRF9NQVgsICJ1bnNpZ25lZCBjaGFyIiwgdW5zaWduZWRfY2hhcl90eXBl
X25vZGUpOwoKICAvKiBUaGVzZSBhcmUgdHlwZXMgdGhhdCBjX2NvbW1vbl90eXBlX2Zvcl9z
aXplIGFuZAogICAgIGNfY29tbW9uX3R5cGVfZm9yX21vZGUgdXNlLiAgKi8KICAoKmxhbmdf
aG9va3MuZGVjbHMucHVzaGRlY2wpIChidWlsZF9kZWNsIChUWVBFX0RFQ0wsIE5VTExfVFJF
RSwKCQkJCQkgICAgaW50UUlfdHlwZV9ub2RlKSk7CiAgKCpsYW5nX2hvb2tzLmRlY2xzLnB1
c2hkZWNsKSAoYnVpbGRfZGVjbCAoVFlQRV9ERUNMLCBOVUxMX1RSRUUsCgkJCQkJICAgIGlu
dEhJX3R5cGVfbm9kZSkpOwogICgqbGFuZ19ob29rcy5kZWNscy5wdXNoZGVjbCkgKGJ1aWxk
X2RlY2wgKFRZUEVfREVDTCwgTlVMTF9UUkVFLAoJCQkJCSAgICBpbnRTSV90eXBlX25vZGUp
KTsKICAoKmxhbmdfaG9va3MuZGVjbHMucHVzaGRlY2wpIChidWlsZF9kZWNsIChUWVBFX0RF
Q0wsIE5VTExfVFJFRSwKCQkJCQkgICAgaW50RElfdHlwZV9ub2RlKSk7CiNpZiBIT1NUX0JJ
VFNfUEVSX1dJREVfSU5UID49IDY0CiAgKCpsYW5nX2hvb2tzLmRlY2xzLnB1c2hkZWNsKSAo
YnVpbGRfZGVjbCAoVFlQRV9ERUNMLAoJCQkJCSAgICBnZXRfaWRlbnRpZmllciAoIl9faW50
MTI4X3QiKSwKCQkJCQkgICAgaW50VElfdHlwZV9ub2RlKSk7CiNlbmRpZgogICgqbGFuZ19o
b29rcy5kZWNscy5wdXNoZGVjbCkgKGJ1aWxkX2RlY2wgKFRZUEVfREVDTCwgTlVMTF9UUkVF
LAoJCQkJCSAgICB1bnNpZ25lZF9pbnRRSV90eXBlX25vZGUpKTsKICAoKmxhbmdfaG9va3Mu
ZGVjbHMucHVzaGRlY2wpIChidWlsZF9kZWNsIChUWVBFX0RFQ0wsIE5VTExfVFJFRSwKCQkJ
CQkgICAgdW5zaWduZWRfaW50SElfdHlwZV9ub2RlKSk7CiAgKCpsYW5nX2hvb2tzLmRlY2xz
LnB1c2hkZWNsKSAoYnVpbGRfZGVjbCAoVFlQRV9ERUNMLCBOVUxMX1RSRUUsCgkJCQkJICAg
IHVuc2lnbmVkX2ludFNJX3R5cGVfbm9kZSkpOwogICgqbGFuZ19ob29rcy5kZWNscy5wdXNo
ZGVjbCkgKGJ1aWxkX2RlY2wgKFRZUEVfREVDTCwgTlVMTF9UUkVFLAoJCQkJCSAgICB1bnNp
Z25lZF9pbnRESV90eXBlX25vZGUpKTsKI2lmIEhPU1RfQklUU19QRVJfV0lERV9JTlQgPj0g
NjQKICAoKmxhbmdfaG9va3MuZGVjbHMucHVzaGRlY2wpIChidWlsZF9kZWNsIChUWVBFX0RF
Q0wsCgkJCQkJICAgIGdldF9pZGVudGlmaWVyICgiX191aW50MTI4X3QiKSwKCQkJCQkgICAg
dW5zaWduZWRfaW50VElfdHlwZV9ub2RlKSk7CiNlbmRpZgoKICAvKiBDcmVhdGUgdGhlIHdp
ZGVzdCBsaXRlcmFsIHR5cGVzLiAgKi8KICB3aWRlc3RfaW50ZWdlcl9saXRlcmFsX3R5cGVf
bm9kZQogICAgPSBtYWtlX3NpZ25lZF90eXBlIChIT1NUX0JJVFNfUEVSX1dJREVfSU5UICog
Mik7CiAgKCpsYW5nX2hvb2tzLmRlY2xzLnB1c2hkZWNsKSAoYnVpbGRfZGVjbCAoVFlQRV9E
RUNMLCBOVUxMX1RSRUUsCgkJCQkJICAgIHdpZGVzdF9pbnRlZ2VyX2xpdGVyYWxfdHlwZV9u
b2RlKSk7CgogIHdpZGVzdF91bnNpZ25lZF9saXRlcmFsX3R5cGVfbm9kZQogICAgPSBtYWtl
X3Vuc2lnbmVkX3R5cGUgKEhPU1RfQklUU19QRVJfV0lERV9JTlQgKiAyKTsKICAoKmxhbmdf
aG9va3MuZGVjbHMucHVzaGRlY2wpIChidWlsZF9kZWNsIChUWVBFX0RFQ0wsIE5VTExfVFJF
RSwKCQkJCQkgICAgd2lkZXN0X3Vuc2lnbmVkX2xpdGVyYWxfdHlwZV9ub2RlKSk7CgogIC8q
IGB1bnNpZ25lZCBsb25nJyBpcyB0aGUgc3RhbmRhcmQgdHlwZSBmb3Igc2l6ZW9mLgogICAg
IE5vdGUgdGhhdCBzdGRkZWYuaCB1c2VzIGB1bnNpZ25lZCBsb25nJywKICAgICBhbmQgdGhp
cyBtdXN0IGFncmVlLCBldmVuIGlmIGxvbmcgYW5kIGludCBhcmUgdGhlIHNhbWUgc2l6ZS4g
ICovCiAgc2l6ZV90eXBlX25vZGUgPQogICAgVFJFRV9UWVBFIChpZGVudGlmaWVyX2dsb2Jh
bF92YWx1ZSAoZ2V0X2lkZW50aWZpZXIgKFNJWkVfVFlQRSkpKTsKICBzaWduZWRfc2l6ZV90
eXBlX25vZGUgPSBjX2NvbW1vbl9zaWduZWRfdHlwZSAoc2l6ZV90eXBlX25vZGUpOwogIHNl
dF9zaXpldHlwZSAoc2l6ZV90eXBlX25vZGUpOwoKICBidWlsZF9jb21tb25fdHJlZV9ub2Rl
c18yIChmbGFnX3Nob3J0X2RvdWJsZSk7CgogIHJlY29yZF9idWlsdGluX3R5cGUgKFJJRF9G
TE9BVCwgTlVMTCwgZmxvYXRfdHlwZV9ub2RlKTsKICByZWNvcmRfYnVpbHRpbl90eXBlIChS
SURfRE9VQkxFLCBOVUxMLCBkb3VibGVfdHlwZV9ub2RlKTsKICByZWNvcmRfYnVpbHRpbl90
eXBlIChSSURfTUFYLCAibG9uZyBkb3VibGUiLCBsb25nX2RvdWJsZV90eXBlX25vZGUpOwoK
ICAoKmxhbmdfaG9va3MuZGVjbHMucHVzaGRlY2wpIChidWlsZF9kZWNsIChUWVBFX0RFQ0ws
CgkJCQkJICAgIGdldF9pZGVudGlmaWVyICgiY29tcGxleCBpbnQiKSwKCQkJCQkgICAgY29t
cGxleF9pbnRlZ2VyX3R5cGVfbm9kZSkpOwogICgqbGFuZ19ob29rcy5kZWNscy5wdXNoZGVj
bCkgKGJ1aWxkX2RlY2wgKFRZUEVfREVDTCwKCQkJCQkgICAgZ2V0X2lkZW50aWZpZXIgKCJj
b21wbGV4IGZsb2F0IiksCgkJCQkJICAgIGNvbXBsZXhfZmxvYXRfdHlwZV9ub2RlKSk7CiAg
KCpsYW5nX2hvb2tzLmRlY2xzLnB1c2hkZWNsKSAoYnVpbGRfZGVjbCAoVFlQRV9ERUNMLAoJ
CQkJCSAgICBnZXRfaWRlbnRpZmllciAoImNvbXBsZXggZG91YmxlIiksCgkJCQkJICAgIGNv
bXBsZXhfZG91YmxlX3R5cGVfbm9kZSkpOwogICgqbGFuZ19ob29rcy5kZWNscy5wdXNoZGVj
bCkKICAgIChidWlsZF9kZWNsIChUWVBFX0RFQ0wsIGdldF9pZGVudGlmaWVyICgiY29tcGxl
eCBsb25nIGRvdWJsZSIpLAoJCSBjb21wbGV4X2xvbmdfZG91YmxlX3R5cGVfbm9kZSkpOwoK
ICAvKiBUeXBlcyB3aGljaCBhcmUgY29tbW9uIHRvIHRoZSBmb3J0cmFuIGNvbXBpbGVyIGFu
ZCBsaWJmMmMuICBXaGVuCiAgICAgY2hhbmdpbmcgdGhlc2UsIHlvdSBhbHNvIG5lZWQgdG8g
YmUgY29uY2VybmVkIHdpdGggZi9jb20uaC4gICovCgogIGlmIChUWVBFX1BSRUNJU0lPTiAo
ZmxvYXRfdHlwZV9ub2RlKQogICAgICA9PSBUWVBFX1BSRUNJU0lPTiAobG9uZ19pbnRlZ2Vy
X3R5cGVfbm9kZSkpCiAgICB7CiAgICAgIGc3N19pbnRlZ2VyX3R5cGVfbm9kZSA9IGxvbmdf
aW50ZWdlcl90eXBlX25vZGU7CiAgICAgIGc3N191aW50ZWdlcl90eXBlX25vZGUgPSBsb25n
X3Vuc2lnbmVkX3R5cGVfbm9kZTsKICAgIH0KICBlbHNlIGlmIChUWVBFX1BSRUNJU0lPTiAo
ZmxvYXRfdHlwZV9ub2RlKQoJICAgPT0gVFlQRV9QUkVDSVNJT04gKGludGVnZXJfdHlwZV9u
b2RlKSkKICAgIHsKICAgICAgZzc3X2ludGVnZXJfdHlwZV9ub2RlID0gaW50ZWdlcl90eXBl
X25vZGU7CiAgICAgIGc3N191aW50ZWdlcl90eXBlX25vZGUgPSB1bnNpZ25lZF90eXBlX25v
ZGU7CiAgICB9CiAgZWxzZQogICAgZzc3X2ludGVnZXJfdHlwZV9ub2RlID0gZzc3X3VpbnRl
Z2VyX3R5cGVfbm9kZSA9IE5VTExfVFJFRTsKCiAgaWYgKGc3N19pbnRlZ2VyX3R5cGVfbm9k
ZSAhPSBOVUxMX1RSRUUpCiAgICB7CiAgICAgICgqbGFuZ19ob29rcy5kZWNscy5wdXNoZGVj
bCkgKGJ1aWxkX2RlY2wgKFRZUEVfREVDTCwKCQkJCQkJZ2V0X2lkZW50aWZpZXIgKCJfX2c3
N19pbnRlZ2VyIiksCgkJCQkJCWc3N19pbnRlZ2VyX3R5cGVfbm9kZSkpOwogICAgICAoKmxh
bmdfaG9va3MuZGVjbHMucHVzaGRlY2wpIChidWlsZF9kZWNsIChUWVBFX0RFQ0wsCgkJCQkJ
CWdldF9pZGVudGlmaWVyICgiX19nNzdfdWludGVnZXIiKSwKCQkJCQkJZzc3X3VpbnRlZ2Vy
X3R5cGVfbm9kZSkpOwogICAgfQoKICBpZiAoVFlQRV9QUkVDSVNJT04gKGZsb2F0X3R5cGVf
bm9kZSkgKiAyCiAgICAgID09IFRZUEVfUFJFQ0lTSU9OIChsb25nX2ludGVnZXJfdHlwZV9u
b2RlKSkKICAgIHsKICAgICAgZzc3X2xvbmdpbnRfdHlwZV9ub2RlID0gbG9uZ19pbnRlZ2Vy
X3R5cGVfbm9kZTsKICAgICAgZzc3X3Vsb25naW50X3R5cGVfbm9kZSA9IGxvbmdfdW5zaWdu
ZWRfdHlwZV9ub2RlOwogICAgfQogIGVsc2UgaWYgKFRZUEVfUFJFQ0lTSU9OIChmbG9hdF90
eXBlX25vZGUpICogMgoJICAgPT0gVFlQRV9QUkVDSVNJT04gKGxvbmdfbG9uZ19pbnRlZ2Vy
X3R5cGVfbm9kZSkpCiAgICB7CiAgICAgIGc3N19sb25naW50X3R5cGVfbm9kZSA9IGxvbmdf
bG9uZ19pbnRlZ2VyX3R5cGVfbm9kZTsKICAgICAgZzc3X3Vsb25naW50X3R5cGVfbm9kZSA9
IGxvbmdfbG9uZ191bnNpZ25lZF90eXBlX25vZGU7CiAgICB9CiAgZWxzZQogICAgZzc3X2xv
bmdpbnRfdHlwZV9ub2RlID0gZzc3X3Vsb25naW50X3R5cGVfbm9kZSA9IE5VTExfVFJFRTsK
CiAgaWYgKGc3N19sb25naW50X3R5cGVfbm9kZSAhPSBOVUxMX1RSRUUpCiAgICB7CiAgICAg
ICgqbGFuZ19ob29rcy5kZWNscy5wdXNoZGVjbCkgKGJ1aWxkX2RlY2wgKFRZUEVfREVDTCwK
CQkJCQkJZ2V0X2lkZW50aWZpZXIgKCJfX2c3N19sb25naW50IiksCgkJCQkJCWc3N19sb25n
aW50X3R5cGVfbm9kZSkpOwogICAgICAoKmxhbmdfaG9va3MuZGVjbHMucHVzaGRlY2wpIChi
dWlsZF9kZWNsIChUWVBFX0RFQ0wsCgkJCQkJCWdldF9pZGVudGlmaWVyICgiX19nNzdfdWxv
bmdpbnQiKSwKCQkJCQkJZzc3X3Vsb25naW50X3R5cGVfbm9kZSkpOwogICAgfQoKICByZWNv
cmRfYnVpbHRpbl90eXBlIChSSURfVk9JRCwgTlVMTCwgdm9pZF90eXBlX25vZGUpOwoKICB2
b2lkX3plcm9fbm9kZSA9IGJ1aWxkX2ludF8yICgwLCAwKTsKICBUUkVFX1RZUEUgKHZvaWRf
emVyb19ub2RlKSA9IHZvaWRfdHlwZV9ub2RlOwoKICB2b2lkX2xpc3Rfbm9kZSA9IGJ1aWxk
X3ZvaWRfbGlzdF9ub2RlICgpOwoKICAvKiBNYWtlIGEgdHlwZSB0byBiZSB0aGUgZG9tYWlu
IG9mIGEgZmV3IGFycmF5IHR5cGVzCiAgICAgd2hvc2UgZG9tYWlucyBkb24ndCByZWFsbHkg
bWF0dGVyLgogICAgIDIwMCBpcyBzbWFsbCBlbm91Z2ggdGhhdCBpdCBhbHdheXMgZml0cyBp
biBzaXplX3QKICAgICBhbmQgbGFyZ2UgZW5vdWdoIHRoYXQgaXQgY2FuIGhvbGQgbW9zdCBm
dW5jdGlvbiBuYW1lcyBmb3IgdGhlCiAgICAgaW5pdGlhbGl6YXRpb25zIG9mIF9fRlVOQ1RJ
T05fXyBhbmQgX19QUkVUVFlfRlVOQ1RJT05fXy4gICovCiAgYXJyYXlfZG9tYWluX3R5cGUg
PSBidWlsZF9pbmRleF90eXBlIChzaXplX2ludCAoMjAwKSk7CgogIC8qIE1ha2UgYSB0eXBl
IGZvciBhcnJheXMgb2YgY2hhcmFjdGVycy4KICAgICBXaXRoIGx1Y2sgbm90aGluZyB3aWxs
IGV2ZXIgcmVhbGx5IGRlcGVuZCBvbiB0aGUgbGVuZ3RoIG9mIHRoaXMKICAgICBhcnJheSB0
eXBlLiAgKi8KICBjaGFyX2FycmF5X3R5cGVfbm9kZQogICAgPSBidWlsZF9hcnJheV90eXBl
IChjaGFyX3R5cGVfbm9kZSwgYXJyYXlfZG9tYWluX3R5cGUpOwoKICAvKiBMaWtld2lzZSBm
b3IgYXJyYXlzIG9mIGludHMuICAqLwogIGludF9hcnJheV90eXBlX25vZGUKICAgID0gYnVp
bGRfYXJyYXlfdHlwZSAoaW50ZWdlcl90eXBlX25vZGUsIGFycmF5X2RvbWFpbl90eXBlKTsK
CiAgc3RyaW5nX3R5cGVfbm9kZSA9IGJ1aWxkX3BvaW50ZXJfdHlwZSAoY2hhcl90eXBlX25v
ZGUpOwogIGNvbnN0X3N0cmluZ190eXBlX25vZGUKICAgID0gYnVpbGRfcG9pbnRlcl90eXBl
IChidWlsZF9xdWFsaWZpZWRfdHlwZQoJCQkgIChjaGFyX3R5cGVfbm9kZSwgVFlQRV9RVUFM
X0NPTlNUKSk7CgogIC8qIFRoaXMgaXMgc3BlY2lhbCBmb3IgQysrIHNvIGZ1bmN0aW9ucyBj
YW4gYmUgb3ZlcmxvYWRlZC4gICovCiAgd2NoYXJfdHlwZV9ub2RlID0gZ2V0X2lkZW50aWZp
ZXIgKE1PRElGSUVEX1dDSEFSX1RZUEUpOwogIHdjaGFyX3R5cGVfbm9kZSA9IFRSRUVfVFlQ
RSAoaWRlbnRpZmllcl9nbG9iYWxfdmFsdWUgKHdjaGFyX3R5cGVfbm9kZSkpOwogIHdjaGFy
X3R5cGVfc2l6ZSA9IFRZUEVfUFJFQ0lTSU9OICh3Y2hhcl90eXBlX25vZGUpOwogIGlmIChj
X2RpYWxlY3RfY3h4ICgpKQogICAgewogICAgICBpZiAoVFJFRV9VTlNJR05FRCAod2NoYXJf
dHlwZV9ub2RlKSkKCXdjaGFyX3R5cGVfbm9kZSA9IG1ha2VfdW5zaWduZWRfdHlwZSAod2No
YXJfdHlwZV9zaXplKTsKICAgICAgZWxzZQoJd2NoYXJfdHlwZV9ub2RlID0gbWFrZV9zaWdu
ZWRfdHlwZSAod2NoYXJfdHlwZV9zaXplKTsKICAgICAgcmVjb3JkX2J1aWx0aW5fdHlwZSAo
UklEX1dDSEFSLCAid2NoYXJfdCIsIHdjaGFyX3R5cGVfbm9kZSk7CiAgICB9CiAgZWxzZQog
ICAgewogICAgICBzaWduZWRfd2NoYXJfdHlwZV9ub2RlID0gY19jb21tb25fc2lnbmVkX3R5
cGUgKHdjaGFyX3R5cGVfbm9kZSk7CiAgICAgIHVuc2lnbmVkX3djaGFyX3R5cGVfbm9kZSA9
IGNfY29tbW9uX3Vuc2lnbmVkX3R5cGUgKHdjaGFyX3R5cGVfbm9kZSk7CiAgICB9CgogIC8q
IFRoaXMgaXMgZm9yIHdpZGUgc3RyaW5nIGNvbnN0YW50cy4gICovCiAgd2NoYXJfYXJyYXlf
dHlwZV9ub2RlCiAgICA9IGJ1aWxkX2FycmF5X3R5cGUgKHdjaGFyX3R5cGVfbm9kZSwgYXJy
YXlfZG9tYWluX3R5cGUpOwoKICB3aW50X3R5cGVfbm9kZSA9CiAgICBUUkVFX1RZUEUgKGlk
ZW50aWZpZXJfZ2xvYmFsX3ZhbHVlIChnZXRfaWRlbnRpZmllciAoV0lOVF9UWVBFKSkpOwoK
ICBpbnRtYXhfdHlwZV9ub2RlID0KICAgIFRSRUVfVFlQRSAoaWRlbnRpZmllcl9nbG9iYWxf
dmFsdWUgKGdldF9pZGVudGlmaWVyIChJTlRNQVhfVFlQRSkpKTsKICB1aW50bWF4X3R5cGVf
bm9kZSA9CiAgICBUUkVFX1RZUEUgKGlkZW50aWZpZXJfZ2xvYmFsX3ZhbHVlIChnZXRfaWRl
bnRpZmllciAoVUlOVE1BWF9UWVBFKSkpOwoKICBkZWZhdWx0X2Z1bmN0aW9uX3R5cGUgPSBi
dWlsZF9mdW5jdGlvbl90eXBlIChpbnRlZ2VyX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKICBw
dHJkaWZmX3R5cGVfbm9kZQogICAgPSBUUkVFX1RZUEUgKGlkZW50aWZpZXJfZ2xvYmFsX3Zh
bHVlIChnZXRfaWRlbnRpZmllciAoUFRSRElGRl9UWVBFKSkpOwogIHVuc2lnbmVkX3B0cmRp
ZmZfdHlwZV9ub2RlID0gY19jb21tb25fdW5zaWduZWRfdHlwZSAocHRyZGlmZl90eXBlX25v
ZGUpOwoKICAoKmxhbmdfaG9va3MuZGVjbHMucHVzaGRlY2wpCiAgICAoYnVpbGRfZGVjbCAo
VFlQRV9ERUNMLCBnZXRfaWRlbnRpZmllciAoIl9fYnVpbHRpbl92YV9saXN0IiksCgkJIHZh
X2xpc3RfdHlwZV9ub2RlKSk7CgogICgqbGFuZ19ob29rcy5kZWNscy5wdXNoZGVjbCkKICAg
IChidWlsZF9kZWNsIChUWVBFX0RFQ0wsIGdldF9pZGVudGlmaWVyICgiX19idWlsdGluX3B0
cmRpZmZfdCIpLAoJCSBwdHJkaWZmX3R5cGVfbm9kZSkpOwoKICAoKmxhbmdfaG9va3MuZGVj
bHMucHVzaGRlY2wpCiAgICAoYnVpbGRfZGVjbCAoVFlQRV9ERUNMLCBnZXRfaWRlbnRpZmll
ciAoIl9fYnVpbHRpbl9zaXplX3QiKSwKCQkgc2l6ZXR5cGUpKTsKCiAgaWYgKFRSRUVfQ09E
RSAodmFfbGlzdF90eXBlX25vZGUpID09IEFSUkFZX1RZUEUpCiAgICB7CiAgICAgIHZhX2xp
c3RfYXJnX3R5cGVfbm9kZSA9IHZhX2xpc3RfcmVmX3R5cGVfbm9kZSA9CglidWlsZF9wb2lu
dGVyX3R5cGUgKFRSRUVfVFlQRSAodmFfbGlzdF90eXBlX25vZGUpKTsKICAgIH0KICBlbHNl
CiAgICB7CiAgICAgIHZhX2xpc3RfYXJnX3R5cGVfbm9kZSA9IHZhX2xpc3RfdHlwZV9ub2Rl
OwogICAgICB2YV9saXN0X3JlZl90eXBlX25vZGUgPSBidWlsZF9yZWZlcmVuY2VfdHlwZSAo
dmFfbGlzdF90eXBlX25vZGUpOwogICAgfQoKI2RlZmluZSBERUZfUFJJTUlUSVZFX1RZUEUo
RU5VTSwgVkFMVUUpIFwKICBidWlsdGluX3R5cGVzWyhpbnQpIEVOVU1dID0gVkFMVUU7CiNk
ZWZpbmUgREVGX0ZVTkNUSU9OX1RZUEVfMChFTlVNLCBSRVRVUk4pCQlcCiAgYnVpbHRpbl90
eXBlc1soaW50KSBFTlVNXQkJCQlcCiAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGUgKGJ1aWx0
aW5fdHlwZXNbKGludCkgUkVUVVJOXSwJXAoJCQkgICB2b2lkX2xpc3Rfbm9kZSk7CiNkZWZp
bmUgREVGX0ZVTkNUSU9OX1RZUEVfMShFTlVNLCBSRVRVUk4sIEFSRzEpCQkJCVwKICBidWls
dGluX3R5cGVzWyhpbnQpIEVOVU1dCQkJCQkJXAogICAgPSBidWlsZF9mdW5jdGlvbl90eXBl
IChidWlsdGluX3R5cGVzWyhpbnQpIFJFVFVSTl0sCQkJXAoJCQkgICB0cmVlX2NvbnMgKE5V
TExfVFJFRSwJCQlcCgkJCQkgICAgICBidWlsdGluX3R5cGVzWyhpbnQpIEFSRzFdLAlcCgkJ
CQkgICAgICB2b2lkX2xpc3Rfbm9kZSkpOwojZGVmaW5lIERFRl9GVU5DVElPTl9UWVBFXzIo
RU5VTSwgUkVUVVJOLCBBUkcxLCBBUkcyKQlcCiAgYnVpbHRpbl90eXBlc1soaW50KSBFTlVN
XQkJCQlcCiAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGUJCQkJXAogICAgICAoYnVpbHRpbl90
eXBlc1soaW50KSBSRVRVUk5dLAkJCVwKICAgICAgIHRyZWVfY29ucyAoTlVMTF9UUkVFLAkJ
CQlcCgkJICBidWlsdGluX3R5cGVzWyhpbnQpIEFSRzFdLAkJXAoJCSAgdHJlZV9jb25zIChO
VUxMX1RSRUUsCQkJXAoJCQkgICAgIGJ1aWx0aW5fdHlwZXNbKGludCkgQVJHMl0sCVwKCQkJ
ICAgICB2b2lkX2xpc3Rfbm9kZSkpKTsKI2RlZmluZSBERUZfRlVOQ1RJT05fVFlQRV8zKEVO
VU0sIFJFVFVSTiwgQVJHMSwgQVJHMiwgQVJHMykJCSBcCiAgYnVpbHRpbl90eXBlc1soaW50
KSBFTlVNXQkJCQkJCSBcCiAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGUJCQkJCQkgXAogICAg
ICAoYnVpbHRpbl90eXBlc1soaW50KSBSRVRVUk5dLAkJCQkJIFwKICAgICAgIHRyZWVfY29u
cyAoTlVMTF9UUkVFLAkJCQkJCSBcCgkJICBidWlsdGluX3R5cGVzWyhpbnQpIEFSRzFdLAkJ
CQkgXAoJCSAgdHJlZV9jb25zIChOVUxMX1RSRUUsCQkJCQkgXAoJCQkgICAgIGJ1aWx0aW5f
dHlwZXNbKGludCkgQVJHMl0sCQkJIFwKCQkJICAgICB0cmVlX2NvbnMgKE5VTExfVFJFRSwJ
CQkgXAoJCQkJCWJ1aWx0aW5fdHlwZXNbKGludCkgQVJHM10sCSBcCgkJCQkJdm9pZF9saXN0
X25vZGUpKSkpOwojZGVmaW5lIERFRl9GVU5DVElPTl9UWVBFXzQoRU5VTSwgUkVUVVJOLCBB
UkcxLCBBUkcyLCBBUkczLCBBUkc0KQlcCiAgYnVpbHRpbl90eXBlc1soaW50KSBFTlVNXQkJ
CQkJCVwKICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZQkJCQkJCVwKICAgICAgKGJ1aWx0aW5f
dHlwZXNbKGludCkgUkVUVVJOXSwJCQkJCVwKICAgICAgIHRyZWVfY29ucyAoTlVMTF9UUkVF
LAkJCQkJCVwKCQkgIGJ1aWx0aW5fdHlwZXNbKGludCkgQVJHMV0sCQkJCVwKCQkgIHRyZWVf
Y29ucyAoTlVMTF9UUkVFLAkJCQkJXAoJCQkgICAgIGJ1aWx0aW5fdHlwZXNbKGludCkgQVJH
Ml0sCQkJXAoJCQkgICAgIHRyZWVfY29ucwkJCQkJXAoJCQkgICAgIChOVUxMX1RSRUUsCQkJ
CVwKCQkJICAgICAgYnVpbHRpbl90eXBlc1soaW50KSBBUkczXSwJCVwKCQkJICAgICAgdHJl
ZV9jb25zIChOVUxMX1RSRUUsCQkJXAoJCQkJCSBidWlsdGluX3R5cGVzWyhpbnQpIEFSRzRd
LAlcCgkJCQkJIHZvaWRfbGlzdF9ub2RlKSkpKSk7CiNkZWZpbmUgREVGX0ZVTkNUSU9OX1RZ
UEVfVkFSXzAoRU5VTSwgUkVUVVJOKQkJCQlcCiAgYnVpbHRpbl90eXBlc1soaW50KSBFTlVN
XQkJCQkJCVwKICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZSAoYnVpbHRpbl90eXBlc1soaW50
KSBSRVRVUk5dLCBOVUxMX1RSRUUpOwojZGVmaW5lIERFRl9GVU5DVElPTl9UWVBFX1ZBUl8x
KEVOVU0sIFJFVFVSTiwgQVJHMSkJCQkgXAogICBidWlsdGluX3R5cGVzWyhpbnQpIEVOVU1d
CQkJCQkJIFwKICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZSAoYnVpbHRpbl90eXBlc1soaW50
KSBSRVRVUk5dLAkJIFwKCQkJICAgdHJlZV9jb25zIChOVUxMX1RSRUUsCQkJIFwKCQkJCSAg
ICAgIGJ1aWx0aW5fdHlwZXNbKGludCkgQVJHMV0sCSBcCgkJCQkgICAgICBOVUxMX1RSRUUp
KTsKCiNkZWZpbmUgREVGX0ZVTkNUSU9OX1RZUEVfVkFSXzIoRU5VTSwgUkVUVVJOLCBBUkcx
LCBBUkcyKQlcCiAgIGJ1aWx0aW5fdHlwZXNbKGludCkgRU5VTV0JCQkJCVwKICAgID0gYnVp
bGRfZnVuY3Rpb25fdHlwZQkJCQkJXAogICAgICAoYnVpbHRpbl90eXBlc1soaW50KSBSRVRV
Uk5dLAkJCQlcCiAgICAgICB0cmVlX2NvbnMgKE5VTExfVFJFRSwJCQkJCVwKCQkgIGJ1aWx0
aW5fdHlwZXNbKGludCkgQVJHMV0sCQkJXAoJCSAgdHJlZV9jb25zIChOVUxMX1RSRUUsCQkJ
CVwKCQkJICAgICBidWlsdGluX3R5cGVzWyhpbnQpIEFSRzJdLAkJXAoJCQkgICAgIE5VTExf
VFJFRSkpKTsKCiNkZWZpbmUgREVGX0ZVTkNUSU9OX1RZUEVfVkFSXzMoRU5VTSwgUkVUVVJO
LCBBUkcxLCBBUkcyLCBBUkczKQkJXAogICBidWlsdGluX3R5cGVzWyhpbnQpIEVOVU1dCQkJ
CQkJXAogICAgPSBidWlsZF9mdW5jdGlvbl90eXBlCQkJCQkJXAogICAgICAoYnVpbHRpbl90
eXBlc1soaW50KSBSRVRVUk5dLAkJCQkJXAogICAgICAgdHJlZV9jb25zIChOVUxMX1RSRUUs
CQkJCQkJXAoJCSAgYnVpbHRpbl90eXBlc1soaW50KSBBUkcxXSwJCQkJXAoJCSAgdHJlZV9j
b25zIChOVUxMX1RSRUUsCQkJCQlcCgkJCSAgICAgYnVpbHRpbl90eXBlc1soaW50KSBBUkcy
XSwJCQlcCgkJCSAgICAgdHJlZV9jb25zIChOVUxMX1RSRUUsCQkJXAoJCQkJCWJ1aWx0aW5f
dHlwZXNbKGludCkgQVJHM10sCVwKCQkJCQlOVUxMX1RSRUUpKSkpOwoKI2RlZmluZSBERUZf
UE9JTlRFUl9UWVBFKEVOVU0sIFRZUEUpCQkJXAogIGJ1aWx0aW5fdHlwZXNbKGludCkgRU5V
TV0JCQkJXAogICAgPSBidWlsZF9wb2ludGVyX3R5cGUgKGJ1aWx0aW5fdHlwZXNbKGludCkg
VFlQRV0pOwojaW5jbHVkZSAiYnVpbHRpbi10eXBlcy5kZWYiCiN1bmRlZiBERUZfUFJJTUlU
SVZFX1RZUEUKI3VuZGVmIERFRl9GVU5DVElPTl9UWVBFXzEKI3VuZGVmIERFRl9GVU5DVElP
Tl9UWVBFXzIKI3VuZGVmIERFRl9GVU5DVElPTl9UWVBFXzMKI3VuZGVmIERFRl9GVU5DVElP
Tl9UWVBFXzQKI3VuZGVmIERFRl9GVU5DVElPTl9UWVBFX1ZBUl8wCiN1bmRlZiBERUZfRlVO
Q1RJT05fVFlQRV9WQVJfMQojdW5kZWYgREVGX0ZVTkNUSU9OX1RZUEVfVkFSXzIKI3VuZGVm
IERFRl9GVU5DVElPTl9UWVBFX1ZBUl8zCiN1bmRlZiBERUZfUE9JTlRFUl9UWVBFCgogIGlm
ICghY19hdHRyc19pbml0aWFsaXplZCkKICAgIGNfaW5pdF9hdHRyaWJ1dGVzICgpOwoKI2Rl
ZmluZSBERUZfQlVJTFRJTihFTlVNLCBOQU1FLCBDTEFTUywgVFlQRSwgTElCVFlQRSwJCQlc
CgkJICAgIEJPVEhfUCwgRkFMTEJBQ0tfUCwgTk9OQU5TSV9QLCBBVFRSUywgSU1QTElDSVQp
CVwKICBpZiAoTkFNRSkJCQkJCQkJCVwKICAgIHsJCQkJCQkJCQlcCiAgICAgIHRyZWUgZGVj
bDsJCQkJCQkJXAoJCQkJCQkJCQlcCiAgICAgIGlmIChzdHJuY21wIChOQU1FLCAiX19idWls
dGluXyIsIHN0cmxlbiAoIl9fYnVpbHRpbl8iKSkgIT0gMCkJXAoJYWJvcnQgKCk7CQkJCQkJ
CVwKCQkJCQkJCQkJXAogICAgICBpZiAoIUJPVEhfUCkJCQkJCQkJXAoJZGVjbCA9IGJ1aWx0
aW5fZnVuY3Rpb24gKE5BTUUsIGJ1aWx0aW5fdHlwZXNbVFlQRV0sIEVOVU0sCVwKCQkJCSBD
TEFTUywJCQkJCVwKCQkJCSAoRkFMTEJBQ0tfUAkJCQlcCgkJCQkgID8gKE5BTUUgKyBzdHJs
ZW4gKCJfX2J1aWx0aW5fIikpCVwKCQkJCSAgOiBOVUxMKSwJCQkJXAoJCQkJIGJ1aWx0X2lu
X2F0dHJpYnV0ZXNbKGludCkgQVRUUlNdKTsJXAogICAgICBlbHNlCQkJCQkJCQlcCglkZWNs
ID0gYnVpbHRpbl9mdW5jdGlvbl8yIChOQU1FLAkJCQlcCgkJCQkgICBOQU1FICsgc3RybGVu
ICgiX19idWlsdGluXyIpLAlcCgkJCQkgICBidWlsdGluX3R5cGVzW1RZUEVdLAkJCVwKCQkJ
CSAgIGJ1aWx0aW5fdHlwZXNbTElCVFlQRV0sCQlcCgkJCQkgICBFTlVNLAkJCQlcCgkJCQkg
ICBDTEFTUywJCQkJXAoJCQkJICAgRkFMTEJBQ0tfUCwJCQkJXAoJCQkJICAgTk9OQU5TSV9Q
LAkJCQlcCgkJCQkgICBidWlsdF9pbl9hdHRyaWJ1dGVzWyhpbnQpIEFUVFJTXSk7CVwKCQkJ
CQkJCQkJXAogICAgICBidWlsdF9pbl9kZWNsc1soaW50KSBFTlVNXSA9IGRlY2w7CQkJCVwK
ICAgICAgaWYgKElNUExJQ0lUKQkJCQkJCQlcCiAgICAgICAgaW1wbGljaXRfYnVpbHRfaW5f
ZGVjbHNbKGludCkgRU5VTV0gPSBkZWNsOwkJCVwKICAgIH0KI2luY2x1ZGUgImJ1aWx0aW5z
LmRlZiIKI3VuZGVmIERFRl9CVUlMVElOCgogICgqdGFyZ2V0bS5pbml0X2J1aWx0aW5zKSAo
KTsKCiAgbWFpbl9pZGVudGlmaWVyX25vZGUgPSBnZXRfaWRlbnRpZmllciAoIm1haW4iKTsK
fQoKdHJlZQpidWlsZF92YV9hcmcgKHRyZWUgZXhwciwgdHJlZSB0eXBlKQp7CiAgcmV0dXJu
IGJ1aWxkMSAoVkFfQVJHX0VYUFIsIHR5cGUsIGV4cHIpOwp9CgoKLyogTGlua2VkIGxpc3Qg
b2YgZGlzYWJsZWQgYnVpbHQtaW4gZnVuY3Rpb25zLiAgKi8KCnR5cGVkZWYgc3RydWN0IGRp
c2FibGVkX2J1aWx0aW4KewogIGNvbnN0IGNoYXIgKm5hbWU7CiAgc3RydWN0IGRpc2FibGVk
X2J1aWx0aW4gKm5leHQ7Cn0gZGlzYWJsZWRfYnVpbHRpbjsKc3RhdGljIGRpc2FibGVkX2J1
aWx0aW4gKmRpc2FibGVkX2J1aWx0aW5zID0gTlVMTDsKCnN0YXRpYyBib29sIGJ1aWx0aW5f
ZnVuY3Rpb25fZGlzYWJsZWRfcCAoY29uc3QgY2hhciAqKTsKCi8qIERpc2FibGUgYSBidWls
dC1pbiBmdW5jdGlvbiBzcGVjaWZpZWQgYnkgLWZuby1idWlsdGluLU5BTUUuICBJZiBOQU1F
CiAgIGJlZ2lucyB3aXRoICJfX2J1aWx0aW5fIiwgZ2l2ZSBhbiBlcnJvci4gICovCgp2b2lk
CmRpc2FibGVfYnVpbHRpbl9mdW5jdGlvbiAoY29uc3QgY2hhciAqbmFtZSkKewogIGlmIChz
dHJuY21wIChuYW1lLCAiX19idWlsdGluXyIsIHN0cmxlbiAoIl9fYnVpbHRpbl8iKSkgPT0g
MCkKICAgIGVycm9yICgiY2Fubm90IGRpc2FibGUgYnVpbHQtaW4gZnVuY3Rpb24gYCVzJyIs
IG5hbWUpOwogIGVsc2UKICAgIHsKICAgICAgZGlzYWJsZWRfYnVpbHRpbiAqbmV3ID0geG1h
bGxvYyAoc2l6ZW9mIChkaXNhYmxlZF9idWlsdGluKSk7CiAgICAgIG5ldy0+bmFtZSA9IG5h
bWU7CiAgICAgIG5ldy0+bmV4dCA9IGRpc2FibGVkX2J1aWx0aW5zOwogICAgICBkaXNhYmxl
ZF9idWlsdGlucyA9IG5ldzsKICAgIH0KfQoKCi8qIFJldHVybiB0cnVlIGlmIHRoZSBidWls
dC1pbiBmdW5jdGlvbiBOQU1FIGhhcyBiZWVuIGRpc2FibGVkLCBmYWxzZQogICBvdGhlcndp
c2UuICAqLwoKc3RhdGljIGJvb2wKYnVpbHRpbl9mdW5jdGlvbl9kaXNhYmxlZF9wIChjb25z
dCBjaGFyICpuYW1lKQp7CiAgZGlzYWJsZWRfYnVpbHRpbiAqcDsKICBmb3IgKHAgPSBkaXNh
YmxlZF9idWlsdGluczsgcCAhPSBOVUxMOyBwID0gcC0+bmV4dCkKICAgIHsKICAgICAgaWYg
KHN0cmNtcCAobmFtZSwgcC0+bmFtZSkgPT0gMCkKCXJldHVybiB0cnVlOwogICAgfQogIHJl
dHVybiBmYWxzZTsKfQoKCi8qIFBvc3NpYmx5IGRlZmluZSBhIGJ1aWx0aW4gZnVuY3Rpb24g
d2l0aCBvbmUgb3IgdHdvIG5hbWVzLiAgQlVJTFRJTl9OQU1FCiAgIGlzIGFuIF9fYnVpbHRp
bl8tcHJlZml4ZWQgbmFtZTsgTkFNRSBpcyB0aGUgb3JkaW5hcnkgbmFtZTsgb25lIG9yIGJv
dGgKICAgb2YgdGhlc2UgbWF5IGJlIE5VTEwgKHRob3VnaCBib3RoIGJlaW5nIE5VTEwgaXMg
dXNlbGVzcykuCiAgIEJVSUxUSU5fVFlQRSBpcyB0aGUgdHlwZSBvZiB0aGUgX19idWlsdGlu
Xy1wcmVmaXhlZCBmdW5jdGlvbjsKICAgVFlQRSBpcyB0aGUgdHlwZSBvZiB0aGUgZnVuY3Rp
b24gd2l0aCB0aGUgb3JkaW5hcnkgbmFtZS4gIFRoZXNlCiAgIG1heSBkaWZmZXIgaWYgdGhl
IG9yZGluYXJ5IG5hbWUgaXMgZGVjbGFyZWQgd2l0aCBhIGxvb3NlciB0eXBlIHRvIGF2b2lk
CiAgIGNvbmZsaWN0cyB3aXRoIGhlYWRlcnMuICBGVU5DVElPTl9DT0RFIGFuZCBDTEFTUyBh
cmUgYXMgZm9yCiAgIGJ1aWx0aW5fZnVuY3Rpb24uICBJZiBMSUJSQVJZX05BTUVfUCBpcyBu
b256ZXJvLCBOQU1FIGlzIHBhc3NlZCBhcwogICB0aGUgTElCUkFSWV9OQU1FIHBhcmFtZXRl
ciB0byBidWlsdGluX2Z1bmN0aW9uIHdoZW4gZGVjbGFyaW5nIEJVSUxUSU5fTkFNRS4KICAg
SWYgTk9OQU5TSV9QIGlzIG5vbnplcm8sIHRoZSBuYW1lIE5BTUUgaXMgdHJlYXRlZCBhcyBh
IG5vbi1BTlNJIG5hbWU7CiAgIEFUVFJTIGlzIHRoZSB0cmVlIGxpc3QgcmVwcmVzZW50aW5n
IHRoZSBidWlsdGluJ3MgZnVuY3Rpb24gYXR0cmlidXRlcy4KICAgUmV0dXJucyB0aGUgZGVj
bGFyYXRpb24gb2YgQlVJTFRJTl9OQU1FLCBpZiBhbnksIG90aGVyd2lzZQogICB0aGUgZGVj
bGFyYXRpb24gb2YgTkFNRS4gIERvZXMgbm90IGRlY2xhcmUgTkFNRSBpZiBmbGFnX25vX2J1
aWx0aW4sCiAgIG9yIGlmIE5PTkFOU0lfUCBhbmQgZmxhZ19ub19ub25hbnNpX2J1aWx0aW4u
ICAqLwoKc3RhdGljIHRyZWUKYnVpbHRpbl9mdW5jdGlvbl8yIChjb25zdCBjaGFyICpidWls
dGluX25hbWUsIGNvbnN0IGNoYXIgKm5hbWUsCgkJICAgIHRyZWUgYnVpbHRpbl90eXBlLCB0
cmVlIHR5cGUsIGludCBmdW5jdGlvbl9jb2RlLAoJCSAgICBlbnVtIGJ1aWx0X2luX2NsYXNz
IGNsYXNzLCBpbnQgbGlicmFyeV9uYW1lX3AsCgkJICAgIGludCBub25hbnNpX3AsIHRyZWUg
YXR0cnMpCnsKICB0cmVlIGJkZWNsID0gTlVMTF9UUkVFOwogIHRyZWUgZGVjbCA9IE5VTExf
VFJFRTsKCiAgaWYgKGJ1aWx0aW5fbmFtZSAhPSAwKQogICAgYmRlY2wgPSBidWlsdGluX2Z1
bmN0aW9uIChidWlsdGluX25hbWUsIGJ1aWx0aW5fdHlwZSwgZnVuY3Rpb25fY29kZSwKCQkJ
ICAgICAgY2xhc3MsIGxpYnJhcnlfbmFtZV9wID8gbmFtZSA6IE5VTEwsIGF0dHJzKTsKCiAg
aWYgKG5hbWUgIT0gMCAmJiAhZmxhZ19ub19idWlsdGluICYmICFidWlsdGluX2Z1bmN0aW9u
X2Rpc2FibGVkX3AgKG5hbWUpCiAgICAgICYmICEobm9uYW5zaV9wICYmIGZsYWdfbm9fbm9u
YW5zaV9idWlsdGluKSkKICAgIGRlY2wgPSBidWlsdGluX2Z1bmN0aW9uIChuYW1lLCB0eXBl
LCBmdW5jdGlvbl9jb2RlLCBjbGFzcywgTlVMTCwgYXR0cnMpOwoKICByZXR1cm4gKGJkZWNs
ICE9IDAgPyBiZGVjbCA6IGRlY2wpOwp9CgwKLyogTm9uemVybyBpZiB0aGUgdHlwZSBUIHBy
b21vdGVzIHRvIGludC4gIFRoaXMgaXMgKG5lYXJseSkgdGhlCiAgIGludGVncmFsIHByb21v
dGlvbnMgZGVmaW5lZCBpbiBJU08gQzk5IDYuMy4xLjEvMi4gICovCgpib29sCmNfcHJvbW90
aW5nX2ludGVnZXJfdHlwZV9wICh0cmVlIHQpCnsKICBzd2l0Y2ggKFRSRUVfQ09ERSAodCkp
CiAgICB7CiAgICBjYXNlIElOVEVHRVJfVFlQRToKICAgICAgcmV0dXJuIChUWVBFX01BSU5f
VkFSSUFOVCAodCkgPT0gY2hhcl90eXBlX25vZGUKCSAgICAgIHx8IFRZUEVfTUFJTl9WQVJJ
QU5UICh0KSA9PSBzaWduZWRfY2hhcl90eXBlX25vZGUKCSAgICAgIHx8IFRZUEVfTUFJTl9W
QVJJQU5UICh0KSA9PSB1bnNpZ25lZF9jaGFyX3R5cGVfbm9kZQoJICAgICAgfHwgVFlQRV9N
QUlOX1ZBUklBTlQgKHQpID09IHNob3J0X2ludGVnZXJfdHlwZV9ub2RlCgkgICAgICB8fCBU
WVBFX01BSU5fVkFSSUFOVCAodCkgPT0gc2hvcnRfdW5zaWduZWRfdHlwZV9ub2RlCgkgICAg
ICB8fCBUWVBFX1BSRUNJU0lPTiAodCkgPCBUWVBFX1BSRUNJU0lPTiAoaW50ZWdlcl90eXBl
X25vZGUpKTsKCiAgICBjYXNlIEVOVU1FUkFMX1RZUEU6CiAgICAgIC8qID8/PyBUZWNobmlj
YWxseSBhbGwgZW51bWVyYXRpb25zIG5vdCBsYXJnZXIgdGhhbiBhbiBpbnQKCSBwcm9tb3Rl
IHRvIGFuIGludC4gIEJ1dCB0aGlzIGlzIHVzZWQgYWxvbmcgY29kZSBwYXRocwoJIHRoYXQg
b25seSB3YW50IHRvIG5vdGljZSBhIHNpemUgY2hhbmdlLiAgKi8KICAgICAgcmV0dXJuIFRZ
UEVfUFJFQ0lTSU9OICh0KSA8IFRZUEVfUFJFQ0lTSU9OIChpbnRlZ2VyX3R5cGVfbm9kZSk7
CgogICAgY2FzZSBCT09MRUFOX1RZUEU6CiAgICAgIHJldHVybiAxOwoKICAgIGRlZmF1bHQ6
CiAgICAgIHJldHVybiAwOwogICAgfQp9CgovKiBSZXR1cm4gMSBpZiBQQVJNUyBzcGVjaWZp
ZXMgYSBmaXhlZCBudW1iZXIgb2YgcGFyYW1ldGVycwogICBhbmQgbm9uZSBvZiB0aGVpciB0
eXBlcyBpcyBhZmZlY3RlZCBieSBkZWZhdWx0IHByb21vdGlvbnMuICAqLwoKaW50CnNlbGZf
cHJvbW90aW5nX2FyZ3NfcCAodHJlZSBwYXJtcykKewogIHRyZWUgdDsKICBmb3IgKHQgPSBw
YXJtczsgdDsgdCA9IFRSRUVfQ0hBSU4gKHQpKQogICAgewogICAgICB0cmVlIHR5cGUgPSBU
UkVFX1ZBTFVFICh0KTsKCiAgICAgIGlmIChUUkVFX0NIQUlOICh0KSA9PSAwICYmIHR5cGUg
IT0gdm9pZF90eXBlX25vZGUpCglyZXR1cm4gMDsKCiAgICAgIGlmICh0eXBlID09IDApCgly
ZXR1cm4gMDsKCiAgICAgIGlmIChUWVBFX01BSU5fVkFSSUFOVCAodHlwZSkgPT0gZmxvYXRf
dHlwZV9ub2RlKQoJcmV0dXJuIDA7CgogICAgICBpZiAoY19wcm9tb3RpbmdfaW50ZWdlcl90
eXBlX3AgKHR5cGUpKQoJcmV0dXJuIDA7CiAgICB9CiAgcmV0dXJuIDE7Cn0KCi8qIFJlY3Vy
c2l2ZWx5IGV4YW1pbmVzIHRoZSBhcnJheSBlbGVtZW50cyBvZiBUWVBFLCB1bnRpbCBhIG5v
bi1hcnJheQogICBlbGVtZW50IHR5cGUgaXMgZm91bmQuICAqLwoKdHJlZQpzdHJpcF9hcnJh
eV90eXBlcyAodHJlZSB0eXBlKQp7CiAgd2hpbGUgKFRSRUVfQ09ERSAodHlwZSkgPT0gQVJS
QVlfVFlQRSkKICAgIHR5cGUgPSBUUkVFX1RZUEUgKHR5cGUpOwoKICByZXR1cm4gdHlwZTsK
fQoKc3RhdGljIHRyZWUgZXhwYW5kX3Vub3JkZXJlZF9jbXAgKHRyZWUsIHRyZWUsIGVudW0g
dHJlZV9jb2RlLCBlbnVtIHRyZWVfY29kZSk7CgovKiBFeHBhbmQgYSBjYWxsIHRvIGFuIHVu
b3JkZXJlZCBjb21wYXJpc29uIGZ1bmN0aW9uIHN1Y2ggYXMKICAgX19idWlsdGluX2lzZ3Jl
YXRlcigpLiAgRlVOQ1RJT04gaXMgdGhlIGZ1bmN0aW9uJ3MgZGVjbGFyYXRpb24gYW5kCiAg
IFBBUkFNUyBhIGxpc3Qgb2YgdGhlIHZhbHVlcyBwYXNzZWQuICBGb3IgX19idWlsdGluX2lz
dW5vcmRlcmVkKCksCiAgIFVOT1JERVJFRF9DT0RFIGlzIFVOT1JERVJFRF9FWFBSIGFuZCBP
UkRFUkVEX0NPREUgaXMgTk9QX0VYUFIuICBJbgogICBvdGhlciBjYXNlcywgVU5PUkRFUkVE
X0NPREUgYW5kIE9SREVSRURfQ09ERSBhcmUgY29tcGFyaXNvbiBjb2RlcwogICB0aGF0IGdp
dmUgdGhlIG9wcG9zaXRlIG9mIHRoZSBkZXNpcmVkIHJlc3VsdC4gIFVOT1JERVJFRF9DT0RF
IGlzCiAgIHVzZWQgZm9yIG1vZGVzIHRoYXQgY2FuIGhvbGQgTmFOcyBhbmQgT1JERVJFRF9D
T0RFIGlzIHVzZWQgZm9yIHRoZQogICByZXN0LiAgKi8KCnN0YXRpYyB0cmVlCmV4cGFuZF91
bm9yZGVyZWRfY21wICh0cmVlIGZ1bmN0aW9uLCB0cmVlIHBhcmFtcywKCQkgICAgICBlbnVt
IHRyZWVfY29kZSB1bm9yZGVyZWRfY29kZSwKCQkgICAgICBlbnVtIHRyZWVfY29kZSBvcmRl
cmVkX2NvZGUpCnsKICB0cmVlIGFyZzAsIGFyZzEsIHR5cGU7CiAgZW51bSB0cmVlX2NvZGUg
Y29kZTAsIGNvZGUxOwoKICAvKiBDaGVjayB0aGF0IHdlIGhhdmUgZXhhY3RseSB0d28gYXJn
dW1lbnRzLiAgKi8KICBpZiAocGFyYW1zID09IDAgfHwgVFJFRV9DSEFJTiAocGFyYW1zKSA9
PSAwKQogICAgewogICAgICBlcnJvciAoInRvbyBmZXcgYXJndW1lbnRzIHRvIGZ1bmN0aW9u
IGAlcyciLAoJICAgICBJREVOVElGSUVSX1BPSU5URVIgKERFQ0xfTkFNRSAoZnVuY3Rpb24p
KSk7CiAgICAgIHJldHVybiBlcnJvcl9tYXJrX25vZGU7CiAgICB9CiAgZWxzZSBpZiAoVFJF
RV9DSEFJTiAoVFJFRV9DSEFJTiAocGFyYW1zKSkgIT0gMCkKICAgIHsKICAgICAgZXJyb3Ig
KCJ0b28gbWFueSBhcmd1bWVudHMgdG8gZnVuY3Rpb24gYCVzJyIsCgkgICAgIElERU5USUZJ
RVJfUE9JTlRFUiAoREVDTF9OQU1FIChmdW5jdGlvbikpKTsKICAgICAgcmV0dXJuIGVycm9y
X21hcmtfbm9kZTsKICAgIH0KCiAgYXJnMCA9IFRSRUVfVkFMVUUgKHBhcmFtcyk7CiAgYXJn
MSA9IFRSRUVfVkFMVUUgKFRSRUVfQ0hBSU4gKHBhcmFtcykpOwoKICBjb2RlMCA9IFRSRUVf
Q09ERSAoVFJFRV9UWVBFIChhcmcwKSk7CiAgY29kZTEgPSBUUkVFX0NPREUgKFRSRUVfVFlQ
RSAoYXJnMSkpOwoKICAvKiBNYWtlIHN1cmUgdGhhdCB0aGUgYXJndW1lbnRzIGhhdmUgYSBj
b21tb24gdHlwZSBvZiBSRUFMLiAgKi8KICB0eXBlID0gMDsKICBpZiAoKGNvZGUwID09IElO
VEVHRVJfVFlQRSB8fCBjb2RlMCA9PSBSRUFMX1RZUEUpCiAgICAgICYmIChjb2RlMSA9PSBJ
TlRFR0VSX1RZUEUgfHwgY29kZTEgPT0gUkVBTF9UWVBFKSkKICAgIHR5cGUgPSBjb21tb25f
dHlwZSAoVFJFRV9UWVBFIChhcmcwKSwgVFJFRV9UWVBFIChhcmcxKSk7CgogIGlmICh0eXBl
ID09IDAgfHwgVFJFRV9DT0RFICh0eXBlKSAhPSBSRUFMX1RZUEUpCiAgICB7CiAgICAgIGVy
cm9yICgibm9uLWZsb2F0aW5nLXBvaW50IGFyZ3VtZW50IHRvIGZ1bmN0aW9uIGAlcyciLAoJ
ICAgICBJREVOVElGSUVSX1BPSU5URVIgKERFQ0xfTkFNRSAoZnVuY3Rpb24pKSk7CiAgICAg
IHJldHVybiBlcnJvcl9tYXJrX25vZGU7CiAgICB9CgogIGlmICh1bm9yZGVyZWRfY29kZSA9
PSBVTk9SREVSRURfRVhQUikKICAgIHsKICAgICAgaWYgKE1PREVfSEFTX05BTlMgKFRZUEVf
TU9ERSAodHlwZSkpKQoJcmV0dXJuIGJ1aWxkX2JpbmFyeV9vcCAodW5vcmRlcmVkX2NvZGUs
CgkJCQljb252ZXJ0ICh0eXBlLCBhcmcwKSwKCQkJCWNvbnZlcnQgKHR5cGUsIGFyZzEpLAoJ
CQkJMCk7CiAgICAgIGVsc2UKCXJldHVybiBpbnRlZ2VyX3plcm9fbm9kZTsKICAgIH0KCiAg
cmV0dXJuIGJ1aWxkX3VuYXJ5X29wIChUUlVUSF9OT1RfRVhQUiwKCQkJIGJ1aWxkX2JpbmFy
eV9vcCAoTU9ERV9IQVNfTkFOUyAoVFlQRV9NT0RFICh0eXBlKSkKCQkJCQkgID8gdW5vcmRl
cmVkX2NvZGUKCQkJCQkgIDogb3JkZXJlZF9jb2RlLAoJCQkJCSAgY29udmVydCAodHlwZSwg
YXJnMCksCgkJCQkJICBjb252ZXJ0ICh0eXBlLCBhcmcxKSwKCQkJCQkgIDApLAoJCQkgMCk7
Cn0KCgovKiBSZWNvZ25pemUgY2VydGFpbiBidWlsdC1pbiBmdW5jdGlvbnMgc28gd2UgY2Fu
IG1ha2UgdHJlZS1jb2RlcwogICBvdGhlciB0aGFuIENBTExfRVhQUi4gIFdlIGRvIHRoaXMg
d2hlbiBpdCBlbmFibGVzIGZvbGQtY29uc3QuYwogICB0byBkbyBzb21ldGhpbmcgdXNlZnVs
LiAgKi8KLyogPz8/IEJ5IHJpZ2h0cyB0aGlzIHNob3VsZCBnbyBpbiBidWlsdGlucy5jLCBi
dXQgb25seSBDIGFuZCBDKysKICAgaW1wbGVtZW50IGJ1aWxkX3tiaW5hcnksdW5hcnl9X29w
LiAgTm90IGV4YWN0bHkgc3VyZSB3aGF0IGJpdHMKICAgb2YgZnVuY3Rpb25hbGl0eSBhcmUg
YWN0dWFsbHkgbmVlZGVkIGZyb20gdGhvc2UgZnVuY3Rpb25zLCBvcgogICB3aGVyZSB0aGUg
c2ltaWxhciBmdW5jdGlvbmFsaXR5IGV4aXN0cyBpbiB0aGUgb3RoZXIgZnJvbnQgZW5kcy4g
ICovCgp0cmVlCmV4cGFuZF90cmVlX2J1aWx0aW4gKHRyZWUgZnVuY3Rpb24sIHRyZWUgcGFy
YW1zLCB0cmVlIGNvZXJjZWRfcGFyYW1zKQp7CiAgaWYgKERFQ0xfQlVJTFRfSU5fQ0xBU1Mg
KGZ1bmN0aW9uKSAhPSBCVUlMVF9JTl9OT1JNQUwpCiAgICByZXR1cm4gTlVMTF9UUkVFOwoK
ICBzd2l0Y2ggKERFQ0xfRlVOQ1RJT05fQ09ERSAoZnVuY3Rpb24pKQogICAgewogICAgY2Fz
ZSBCVUlMVF9JTl9BQlM6CiAgICBjYXNlIEJVSUxUX0lOX0xBQlM6CiAgICBjYXNlIEJVSUxU
X0lOX0xMQUJTOgogICAgY2FzZSBCVUlMVF9JTl9JTUFYQUJTOgogICAgY2FzZSBCVUlMVF9J
Tl9GQUJTOgogICAgY2FzZSBCVUlMVF9JTl9GQUJTTDoKICAgIGNhc2UgQlVJTFRfSU5fRkFC
U0Y6CiAgICAgIGlmIChjb2VyY2VkX3BhcmFtcyA9PSAwKQoJcmV0dXJuIGludGVnZXJfemVy
b19ub2RlOwogICAgICByZXR1cm4gYnVpbGRfdW5hcnlfb3AgKEFCU19FWFBSLCBUUkVFX1ZB
TFVFIChjb2VyY2VkX3BhcmFtcyksIDApOwoKICAgIGNhc2UgQlVJTFRfSU5fQ09OSjoKICAg
IGNhc2UgQlVJTFRfSU5fQ09OSkY6CiAgICBjYXNlIEJVSUxUX0lOX0NPTkpMOgogICAgICBp
ZiAoY29lcmNlZF9wYXJhbXMgPT0gMCkKCXJldHVybiBpbnRlZ2VyX3plcm9fbm9kZTsKICAg
ICAgcmV0dXJuIGJ1aWxkX3VuYXJ5X29wIChDT05KX0VYUFIsIFRSRUVfVkFMVUUgKGNvZXJj
ZWRfcGFyYW1zKSwgMCk7CgogICAgY2FzZSBCVUlMVF9JTl9DUkVBTDoKICAgIGNhc2UgQlVJ
TFRfSU5fQ1JFQUxGOgogICAgY2FzZSBCVUlMVF9JTl9DUkVBTEw6CiAgICAgIGlmIChjb2Vy
Y2VkX3BhcmFtcyA9PSAwKQoJcmV0dXJuIGludGVnZXJfemVyb19ub2RlOwogICAgICByZXR1
cm4gYnVpbGRfdW5hcnlfb3AgKFJFQUxQQVJUX0VYUFIsIFRSRUVfVkFMVUUgKGNvZXJjZWRf
cGFyYW1zKSwgMCk7CgogICAgY2FzZSBCVUlMVF9JTl9DSU1BRzoKICAgIGNhc2UgQlVJTFRf
SU5fQ0lNQUdGOgogICAgY2FzZSBCVUlMVF9JTl9DSU1BR0w6CiAgICAgIGlmIChjb2VyY2Vk
X3BhcmFtcyA9PSAwKQoJcmV0dXJuIGludGVnZXJfemVyb19ub2RlOwogICAgICByZXR1cm4g
YnVpbGRfdW5hcnlfb3AgKElNQUdQQVJUX0VYUFIsIFRSRUVfVkFMVUUgKGNvZXJjZWRfcGFy
YW1zKSwgMCk7CgogICAgY2FzZSBCVUlMVF9JTl9JU0dSRUFURVI6CiAgICAgIHJldHVybiBl
eHBhbmRfdW5vcmRlcmVkX2NtcCAoZnVuY3Rpb24sIHBhcmFtcywgVU5MRV9FWFBSLCBMRV9F
WFBSKTsKCiAgICBjYXNlIEJVSUxUX0lOX0lTR1JFQVRFUkVRVUFMOgogICAgICByZXR1cm4g
ZXhwYW5kX3Vub3JkZXJlZF9jbXAgKGZ1bmN0aW9uLCBwYXJhbXMsIFVOTFRfRVhQUiwgTFRf
RVhQUik7CgogICAgY2FzZSBCVUlMVF9JTl9JU0xFU1M6CiAgICAgIHJldHVybiBleHBhbmRf
dW5vcmRlcmVkX2NtcCAoZnVuY3Rpb24sIHBhcmFtcywgVU5HRV9FWFBSLCBHRV9FWFBSKTsK
CiAgICBjYXNlIEJVSUxUX0lOX0lTTEVTU0VRVUFMOgogICAgICByZXR1cm4gZXhwYW5kX3Vu
b3JkZXJlZF9jbXAgKGZ1bmN0aW9uLCBwYXJhbXMsIFVOR1RfRVhQUiwgR1RfRVhQUik7Cgog
ICAgY2FzZSBCVUlMVF9JTl9JU0xFU1NHUkVBVEVSOgogICAgICByZXR1cm4gZXhwYW5kX3Vu
b3JkZXJlZF9jbXAgKGZ1bmN0aW9uLCBwYXJhbXMsIFVORVFfRVhQUiwgRVFfRVhQUik7Cgog
ICAgY2FzZSBCVUlMVF9JTl9JU1VOT1JERVJFRDoKICAgICAgcmV0dXJuIGV4cGFuZF91bm9y
ZGVyZWRfY21wIChmdW5jdGlvbiwgcGFyYW1zLCBVTk9SREVSRURfRVhQUiwgTk9QX0VYUFIp
OwoKICAgIGRlZmF1bHQ6CiAgICAgIGJyZWFrOwogICAgfQoKICByZXR1cm4gTlVMTF9UUkVF
Owp9CgovKiBXYWxrIHRoZSBzdGF0ZW1lbnQgdHJlZSwgcm9vdGVkIGF0ICp0cC4gIEFwcGx5
IEZVTkMgdG8gYWxsIHRoZQogICBzdWItdHJlZXMgb2YgKlRQIGluIGEgcHJlLW9yZGVyIHRy
YXZlcnNhbC4gIEZVTkMgaXMgY2FsbGVkIHdpdGggdGhlCiAgIERBVEEgYW5kIHRoZSBhZGRy
ZXNzIG9mIGVhY2ggc3ViLXRyZWUuICBJZiBGVU5DIHJldHVybnMgYSBub24tTlVMTAogICB2
YWx1ZSwgdGhlIHRyYXZlcnNhbCBpcyBhYm9ydGVkLCBhbmQgdGhlIHZhbHVlIHJldHVybmVk
IGJ5IEZVTkMgaXMKICAgcmV0dXJuZWQuICBJZiBGVU5DIHNldHMgV0FMS19TVUJUUkVFUyB0
byB6ZXJvLCB0aGVuIHRoZSBzdWJ0cmVlcyBvZgogICB0aGUgbm9kZSBiZWluZyB2aXNpdGVk
IGFyZSBub3Qgd2Fsa2VkLgoKICAgV2UgZG9uJ3QgbmVlZCBhIHdpdGhvdXRfZHVwbGljYXRl
cyB2YXJpYW50IG9mIHRoaXMgb25lIGJlY2F1c2UgdGhlCiAgIHN0YXRlbWVudCB0cmVlIGlz
IGEgdHJlZSwgbm90IGEgZ3JhcGguICAqLwoKdHJlZQp3YWxrX3N0bXRfdHJlZSAodHJlZSAq
dHAsIHdhbGtfdHJlZV9mbiBmdW5jLCB2b2lkICpkYXRhKQp7CiAgZW51bSB0cmVlX2NvZGUg
Y29kZTsKICBpbnQgd2Fsa19zdWJ0cmVlczsKICB0cmVlIHJlc3VsdDsKICBpbnQgaSwgbGVu
OwoKI2RlZmluZSBXQUxLX1NVQlRSRUUoTk9ERSkJCQkJXAogIGRvCQkJCQkJCVwKICAgIHsJ
CQkJCQkJXAogICAgICByZXN1bHQgPSB3YWxrX3N0bXRfdHJlZSAoJihOT0RFKSwgZnVuYywg
ZGF0YSk7CVwKICAgICAgaWYgKHJlc3VsdCkJCQkJCVwKCXJldHVybiByZXN1bHQ7CQkJCQlc
CiAgICB9CQkJCQkJCVwKICB3aGlsZSAoMCkKCiAgLyogU2tpcCBlbXB0eSBzdWJ0cmVlcy4g
ICovCiAgaWYgKCEqdHApCiAgICByZXR1cm4gTlVMTF9UUkVFOwoKICAvKiBTa2lwIHN1YnRy
ZWVzIGJlbG93IG5vbi1zdGF0ZW1lbnQgbm9kZXMuICAqLwogIGlmICghU1RBVEVNRU5UX0NP
REVfUCAoVFJFRV9DT0RFICgqdHApKSkKICAgIHJldHVybiBOVUxMX1RSRUU7CgogIC8qIENh
bGwgdGhlIGZ1bmN0aW9uLiAgKi8KICB3YWxrX3N1YnRyZWVzID0gMTsKICByZXN1bHQgPSAo
KmZ1bmMpICh0cCwgJndhbGtfc3VidHJlZXMsIGRhdGEpOwoKICAvKiBJZiB3ZSBmb3VuZCBz
b21ldGhpbmcsIHJldHVybiBpdC4gICovCiAgaWYgKHJlc3VsdCkKICAgIHJldHVybiByZXN1
bHQ7CgogIC8qIEZVTkMgbWF5IGhhdmUgbW9kaWZpZWQgdGhlIHRyZWUsIHJlY2hlY2sgdGhh
dCB3ZSdyZSBsb29raW5nIGF0IGEKICAgICBzdGF0ZW1lbnQgbm9kZS4gICovCiAgY29kZSA9
IFRSRUVfQ09ERSAoKnRwKTsKICBpZiAoIVNUQVRFTUVOVF9DT0RFX1AgKGNvZGUpKQogICAg
cmV0dXJuIE5VTExfVFJFRTsKCiAgLyogVmlzaXQgdGhlIHN1YnRyZWVzIHVubGVzcyBGVU5D
IGRlY2lkZWQgdGhhdCB0aGVyZSB3YXMgbm90aGluZwogICAgIGludGVyZXN0aW5nIGJlbG93
IHRoaXMgcG9pbnQgaW4gdGhlIHRyZWUuICAqLwogIGlmICh3YWxrX3N1YnRyZWVzKQogICAg
ewogICAgICAvKiBXYWxrIG92ZXIgYWxsIHRoZSBzdWItdHJlZXMgb2YgdGhpcyBvcGVyYW5k
LiAgU3RhdGVtZW50IG5vZGVzCgkgbmV2ZXIgY29udGFpbiBSVEwsIGFuZCB3ZSBuZWVkbid0
IHdvcnJ5IGFib3V0IFRBUkdFVF9FWFBScy4gICovCiAgICAgIGxlbiA9IFRSRUVfQ09ERV9M
RU5HVEggKGNvZGUpOwoKICAgICAgLyogR28gdGhyb3VnaCB0aGUgc3VidHJlZXMuICBXZSBu
ZWVkIHRvIGRvIHRoaXMgaW4gZm9yd2FyZCBvcmRlciBzbwoJIHRoYXQgdGhlIHNjb3BlIG9m
IGEgRk9SX0VYUFIgaXMgaGFuZGxlZCBwcm9wZXJseS4gICovCiAgICAgIGZvciAoaSA9IDA7
IGkgPCBsZW47ICsraSkKCVdBTEtfU1VCVFJFRSAoVFJFRV9PUEVSQU5EICgqdHAsIGkpKTsK
ICAgIH0KCiAgLyogRmluYWxseSB2aXNpdCB0aGUgY2hhaW4uICBUaGlzIGNhbiBiZSB0YWls
LXJlY3Vyc2lvbiBvcHRpbWl6ZWQgaWYKICAgICB3ZSB3cml0ZSBpdCB0aGlzIHdheS4gICov
CiAgcmV0dXJuIHdhbGtfc3RtdF90cmVlICgmVFJFRV9DSEFJTiAoKnRwKSwgZnVuYywgZGF0
YSk7CgojdW5kZWYgV0FMS19TVUJUUkVFCn0KCi8qIFVzZWQgdG8gY29tcGFyZSBjYXNlIGxh
YmVscy4gIEsxIGFuZCBLMiBhcmUgYWN0dWFsbHkgdHJlZSBub2RlcwogICByZXByZXNlbnRp
bmcgY2FzZSBsYWJlbHMsIG9yIE5VTExfVFJFRSBmb3IgYSBgZGVmYXVsdCcgbGFiZWwuCiAg
IFJldHVybnMgLTEgaWYgSzEgaXMgb3JkZXJlZCBiZWZvcmUgSzIsIC0xIGlmIEsxIGlzIG9y
ZGVyZWQgYWZ0ZXIKICAgSzIsIGFuZCAwIGlmIEsxIGFuZCBLMiBhcmUgZXF1YWwuICAqLwoK
aW50CmNhc2VfY29tcGFyZSAoc3BsYXlfdHJlZV9rZXkgazEsIHNwbGF5X3RyZWVfa2V5IGsy
KQp7CiAgLyogQ29uc2lkZXIgYSBOVUxMIGtleSAoc3VjaCBhcyBhcmlzZXMgd2l0aCBhIGBk
ZWZhdWx0JyBsYWJlbCkgdG8gYmUKICAgICBzbWFsbGVyIHRoYW4gYW55dGhpbmcgZWxzZS4g
ICovCiAgaWYgKCFrMSkKICAgIHJldHVybiBrMiA/IC0xIDogMDsKICBlbHNlIGlmICghazIp
CiAgICByZXR1cm4gazEgPyAxIDogMDsKCiAgcmV0dXJuIHRyZWVfaW50X2NzdF9jb21wYXJl
ICgodHJlZSkgazEsICh0cmVlKSBrMik7Cn0KCi8qIFByb2Nlc3MgYSBjYXNlIGxhYmVsIGZv
ciB0aGUgcmFuZ2UgTE9XX1ZBTFVFIC4uLiBISUdIX1ZBTFVFLiAgSWYKICAgTE9XX1ZBTFVF
IGFuZCBISUdIX1ZBTFVFIGFyZSBib3RoIE5VTExfVFJFRSB0aGVuIHRoaXMgY2FzZSBsYWJl
bCBpcwogICBhY3R1YWxseSBhIGBkZWZhdWx0JyBsYWJlbC4gIElmIG9ubHkgSElHSF9WQUxV
RSBpcyBOVUxMX1RSRUUsIHRoZW4KICAgY2FzZSBsYWJlbCB3YXMgZGVjbGFyZWQgdXNpbmcg
dGhlIHVzdWFsIEMvQysrIHN5bnRheCwgcmF0aGVyIHRoYW4KICAgdGhlIEdOVSBjYXNlIHJh
bmdlIGV4dGVuc2lvbi4gIENBU0VTIGlzIGEgdHJlZSBjb250YWluaW5nIGFsbCB0aGUKICAg
Y2FzZSByYW5nZXMgcHJvY2Vzc2VkIHNvIGZhcjsgQ09ORCBpcyB0aGUgY29uZGl0aW9uIGZv
ciB0aGUKICAgc3dpdGNoLXN0YXRlbWVudCBpdHNlbGYuICBSZXR1cm5zIHRoZSBDQVNFX0xB
QkVMIGNyZWF0ZWQsIG9yCiAgIEVSUk9SX01BUktfTk9ERSBpZiBubyBDQVNFX0xBQkVMIGlz
IGNyZWF0ZWQuICAqLwoKdHJlZQpjX2FkZF9jYXNlX2xhYmVsIChzcGxheV90cmVlIGNhc2Vz
LCB0cmVlIGNvbmQsIHRyZWUgbG93X3ZhbHVlLAoJCSAgdHJlZSBoaWdoX3ZhbHVlKQp7CiAg
dHJlZSB0eXBlOwogIHRyZWUgbGFiZWw7CiAgdHJlZSBjYXNlX2xhYmVsOwogIHNwbGF5X3Ry
ZWVfbm9kZSBub2RlOwoKICAvKiBDcmVhdGUgdGhlIExBQkVMX0RFQ0wgaXRzZWxmLiAgKi8K
ICBsYWJlbCA9IGJ1aWxkX2RlY2wgKExBQkVMX0RFQ0wsIE5VTExfVFJFRSwgTlVMTF9UUkVF
KTsKICBERUNMX0NPTlRFWFQgKGxhYmVsKSA9IGN1cnJlbnRfZnVuY3Rpb25fZGVjbDsKCiAg
LyogSWYgdGhlcmUgd2FzIGFuIGVycm9yIHByb2Nlc3NpbmcgdGhlIHN3aXRjaCBjb25kaXRp
b24sIGJhaWwgbm93CiAgICAgYmVmb3JlIHdlIGdldCBtb3JlIGNvbmZ1c2VkLiAgKi8KICBp
ZiAoIWNvbmQgfHwgY29uZCA9PSBlcnJvcl9tYXJrX25vZGUpCiAgICB7CiAgICAgIC8qIEFk
ZCBhIGxhYmVsIGFueWhvdyBzbyB0aGF0IHRoZSBiYWNrLWVuZCBkb2Vzbid0IHRoaW5rIHRo
YXQKCSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzd2l0Y2ggaXMgdW5yZWFjaGFibGUuICAqLwog
ICAgICBpZiAoIWNhc2VzLT5yb290KQoJYWRkX3N0bXQgKGJ1aWxkX2Nhc2VfbGFiZWwgKE5V
TExfVFJFRSwgTlVMTF9UUkVFLCBsYWJlbCkpOwogICAgICByZXR1cm4gZXJyb3JfbWFya19u
b2RlOwogICAgfQoKICBpZiAoKGxvd192YWx1ZSAmJiBUUkVFX1RZUEUgKGxvd192YWx1ZSkK
ICAgICAgICYmIFBPSU5URVJfVFlQRV9QIChUUkVFX1RZUEUgKGxvd192YWx1ZSkpKQogICAg
ICB8fCAoaGlnaF92YWx1ZSAmJiBUUkVFX1RZUEUgKGhpZ2hfdmFsdWUpCgkgICYmIFBPSU5U
RVJfVFlQRV9QIChUUkVFX1RZUEUgKGhpZ2hfdmFsdWUpKSkpCiAgICBlcnJvciAoInBvaW50
ZXJzIGFyZSBub3QgcGVybWl0dGVkIGFzIGNhc2UgdmFsdWVzIik7CgogIC8qIENhc2UgcmFu
Z2VzIGFyZSBhIEdOVSBleHRlbnNpb24uICAqLwogIGlmIChoaWdoX3ZhbHVlICYmIHBlZGFu
dGljKQogICAgcGVkd2FybiAoInJhbmdlIGV4cHJlc3Npb25zIGluIHN3aXRjaCBzdGF0ZW1l
bnRzIGFyZSBub24tc3RhbmRhcmQiKTsKCiAgdHlwZSA9IFRSRUVfVFlQRSAoY29uZCk7CiAg
aWYgKGxvd192YWx1ZSkKICAgIHsKICAgICAgbG93X3ZhbHVlID0gY2hlY2tfY2FzZV92YWx1
ZSAobG93X3ZhbHVlKTsKICAgICAgbG93X3ZhbHVlID0gY29udmVydF9hbmRfY2hlY2sgKHR5
cGUsIGxvd192YWx1ZSk7CiAgICB9CiAgaWYgKGhpZ2hfdmFsdWUpCiAgICB7CiAgICAgIGhp
Z2hfdmFsdWUgPSBjaGVja19jYXNlX3ZhbHVlIChoaWdoX3ZhbHVlKTsKICAgICAgaGlnaF92
YWx1ZSA9IGNvbnZlcnRfYW5kX2NoZWNrICh0eXBlLCBoaWdoX3ZhbHVlKTsKICAgIH0KCiAg
LyogSWYgYW4gZXJyb3IgaGFzIG9jY3VycmVkLCBiYWlsIG91dCBub3cuICAqLwogIGlmIChs
b3dfdmFsdWUgPT0gZXJyb3JfbWFya19ub2RlIHx8IGhpZ2hfdmFsdWUgPT0gZXJyb3JfbWFy
a19ub2RlKQogICAgewogICAgICBpZiAoIWNhc2VzLT5yb290KQoJYWRkX3N0bXQgKGJ1aWxk
X2Nhc2VfbGFiZWwgKE5VTExfVFJFRSwgTlVMTF9UUkVFLCBsYWJlbCkpOwogICAgICByZXR1
cm4gZXJyb3JfbWFya19ub2RlOwogICAgfQoKICAvKiBJZiB0aGUgTE9XX1ZBTFVFIGFuZCBI
SUdIX1ZBTFVFIGFyZSB0aGUgc2FtZSwgdGhlbiB0aGlzIGlzbid0CiAgICAgcmVhbGx5IGEg
Y2FzZSByYW5nZSwgZXZlbiB0aG91Z2ggaXQgd2FzIHdyaXR0ZW4gdGhhdCB3YXkuICBSZW1v
dmUKICAgICB0aGUgSElHSF9WQUxVRSB0byBzaW1wbGlmeSBsYXRlciBwcm9jZXNzaW5nLiAg
Ki8KICBpZiAodHJlZV9pbnRfY3N0X2VxdWFsIChsb3dfdmFsdWUsIGhpZ2hfdmFsdWUpKQog
ICAgaGlnaF92YWx1ZSA9IE5VTExfVFJFRTsKICBpZiAobG93X3ZhbHVlICYmIGhpZ2hfdmFs
dWUKICAgICAgJiYgIXRyZWVfaW50X2NzdF9sdCAobG93X3ZhbHVlLCBoaWdoX3ZhbHVlKSkK
ICAgIHdhcm5pbmcgKCJlbXB0eSByYW5nZSBzcGVjaWZpZWQiKTsKCiAgLyogTG9vayB1cCB0
aGUgTE9XX1ZBTFVFIGluIHRoZSB0YWJsZSBvZiBjYXNlIGxhYmVscyB3ZSBhbHJlYWR5CiAg
ICAgaGF2ZS4gICovCiAgbm9kZSA9IHNwbGF5X3RyZWVfbG9va3VwIChjYXNlcywgKHNwbGF5
X3RyZWVfa2V5KSBsb3dfdmFsdWUpOwogIC8qIElmIHRoZXJlIHdhcyBub3QgYW4gZXhhY3Qg
bWF0Y2gsIGNoZWNrIGZvciBvdmVybGFwcGluZyByYW5nZXMuCiAgICAgVGhlcmUncyBubyBu
ZWVkIHRvIGRvIHRoaXMgaWYgdGhlcmUncyBubyBMT1dfVkFMVUUgb3IgSElHSF9WQUxVRTsK
ICAgICB0aGF0J3MgYSBgZGVmYXVsdCcgbGFiZWwgYW5kIHRoZSBvbmx5IG92ZXJsYXAgaXMg
YW4gZXhhY3QgbWF0Y2guICAqLwogIGlmICghbm9kZSAmJiAobG93X3ZhbHVlIHx8IGhpZ2hf
dmFsdWUpKQogICAgewogICAgICBzcGxheV90cmVlX25vZGUgbG93X2JvdW5kOwogICAgICBz
cGxheV90cmVlX25vZGUgaGlnaF9ib3VuZDsKCiAgICAgIC8qIEV2ZW4gdGhvdWdoIHRoZXJl
IHdhc24ndCBhbiBleGFjdCBtYXRjaCwgdGhlcmUgbWlnaHQgYmUgYW4KCSBvdmVybGFwIGJl
dHdlZW4gdGhpcyBjYXNlIHJhbmdlIGFuZCBhbm90aGVyIGNhc2UgcmFuZ2UuCgkgU2luY2Ug
d2UndmUgKGluZHVjdGl2ZWx5KSBub3QgYWxsb3dlZCBhbnkgb3ZlcmxhcHBpbmcgY2FzZQoJ
IHJhbmdlcywgd2Ugc2ltcGx5IG5lZWQgdG8gZmluZCB0aGUgZ3JlYXRlc3QgbG93IGNhc2Ug
bGFiZWwKCSB0aGF0IGlzIHNtYWxsZXIgdGhhdCBMT1dfVkFMVUUsIGFuZCB0aGUgc21hbGxl
c3QgbG93IGNhc2UKCSBsYWJlbCB0aGF0IGlzIGdyZWF0ZXIgdGhhbiBMT1dfVkFMVUUuICBJ
ZiB0aGVyZSBpcyBhbiBvdmVybGFwCgkgaXQgd2lsbCBvY2N1ciBpbiBvbmUgb2YgdGhlc2Ug
dHdvIHJhbmdlcy4gICovCiAgICAgIGxvd19ib3VuZCA9IHNwbGF5X3RyZWVfcHJlZGVjZXNz
b3IgKGNhc2VzLAoJCQkJCSAgKHNwbGF5X3RyZWVfa2V5KSBsb3dfdmFsdWUpOwogICAgICBo
aWdoX2JvdW5kID0gc3BsYXlfdHJlZV9zdWNjZXNzb3IgKGNhc2VzLAoJCQkJCSAoc3BsYXlf
dHJlZV9rZXkpIGxvd192YWx1ZSk7CgogICAgICAvKiBDaGVjayB0byBzZWUgaWYgdGhlIExP
V19CT1VORCBvdmVybGFwcy4gIEl0IGlzIHNtYWxsZXIgdGhhbgoJIHRoZSBMT1dfVkFMVUUs
IHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gY2hlY2sgdW5sZXNzIHRoZQoJIExPV19CT1VORCBp
cyBpbiBmYWN0IGl0c2VsZiBhIGNhc2UgcmFuZ2UuICAqLwogICAgICBpZiAobG93X2JvdW5k
CgkgICYmIENBU0VfSElHSCAoKHRyZWUpIGxvd19ib3VuZC0+dmFsdWUpCgkgICYmIHRyZWVf
aW50X2NzdF9jb21wYXJlIChDQVNFX0hJR0ggKCh0cmVlKSBsb3dfYm91bmQtPnZhbHVlKSwK
CQkJCSAgICBsb3dfdmFsdWUpID49IDApCglub2RlID0gbG93X2JvdW5kOwogICAgICAvKiBD
aGVjayB0byBzZWUgaWYgdGhlIEhJR0hfQk9VTkQgb3ZlcmxhcHMuICBUaGUgbG93IGVuZCBv
ZiB0aGF0CgkgcmFuZ2UgaXMgYmlnZ2VyIHRoYW4gdGhlIGxvdyBlbmQgb2YgdGhlIGN1cnJl
bnQgcmFuZ2UsIHNvIHdlCgkgYXJlIG9ubHkgaW50ZXJlc3RlZCBpZiB0aGUgY3VycmVudCBy
YW5nZSBpcyBhIHJlYWwgcmFuZ2UsIGFuZAoJIG5vdCBhbiBvcmRpbmFyeSBjYXNlIGxhYmVs
LiAgKi8KICAgICAgZWxzZSBpZiAoaGlnaF9ib3VuZAoJICAgICAgICYmIGhpZ2hfdmFsdWUK
CSAgICAgICAmJiAodHJlZV9pbnRfY3N0X2NvbXBhcmUgKCh0cmVlKSBoaWdoX2JvdW5kLT5r
ZXksCgkJCQkJIGhpZ2hfdmFsdWUpCgkJICAgPD0gMCkpCglub2RlID0gaGlnaF9ib3VuZDsK
ICAgIH0KICAvKiBJZiB0aGVyZSB3YXMgYW4gb3ZlcmxhcCwgaXNzdWUgYW4gZXJyb3IuICAq
LwogIGlmIChub2RlKQogICAgewogICAgICB0cmVlIGR1cGxpY2F0ZSA9IENBU0VfTEFCRUxf
REVDTCAoKHRyZWUpIG5vZGUtPnZhbHVlKTsKCiAgICAgIGlmIChoaWdoX3ZhbHVlKQoJewoJ
ICBlcnJvciAoImR1cGxpY2F0ZSAob3Igb3ZlcmxhcHBpbmcpIGNhc2UgdmFsdWUiKTsKCSAg
ZXJyb3Jfd2l0aF9kZWNsIChkdXBsaWNhdGUsCgkJCSAgICJ0aGlzIGlzIHRoZSBmaXJzdCBl
bnRyeSBvdmVybGFwcGluZyB0aGF0IHZhbHVlIik7Cgl9CiAgICAgIGVsc2UgaWYgKGxvd192
YWx1ZSkKCXsKCSAgZXJyb3IgKCJkdXBsaWNhdGUgY2FzZSB2YWx1ZSIpIDsKCSAgZXJyb3Jf
d2l0aF9kZWNsIChkdXBsaWNhdGUsICJwcmV2aW91c2x5IHVzZWQgaGVyZSIpOwoJfQogICAg
ICBlbHNlCgl7CgkgIGVycm9yICgibXVsdGlwbGUgZGVmYXVsdCBsYWJlbHMgaW4gb25lIHN3
aXRjaCIpOwoJICBlcnJvcl93aXRoX2RlY2wgKGR1cGxpY2F0ZSwgInRoaXMgaXMgdGhlIGZp
cnN0IGRlZmF1bHQgbGFiZWwiKTsKCX0KICAgICAgaWYgKCFjYXNlcy0+cm9vdCkKCWFkZF9z
dG10IChidWlsZF9jYXNlX2xhYmVsIChOVUxMX1RSRUUsIE5VTExfVFJFRSwgbGFiZWwpKTsK
ICAgIH0KCiAgLyogQWRkIGEgQ0FTRV9MQUJFTCB0byB0aGUgc3RhdGVtZW50LXRyZWUuICAq
LwogIGNhc2VfbGFiZWwgPSBhZGRfc3RtdCAoYnVpbGRfY2FzZV9sYWJlbCAobG93X3ZhbHVl
LCBoaWdoX3ZhbHVlLCBsYWJlbCkpOwogIC8qIFJlZ2lzdGVyIHRoaXMgY2FzZSBsYWJlbCBp
biB0aGUgc3BsYXkgdHJlZS4gICovCiAgc3BsYXlfdHJlZV9pbnNlcnQgKGNhc2VzLAoJCSAg
ICAgKHNwbGF5X3RyZWVfa2V5KSBsb3dfdmFsdWUsCgkJICAgICAoc3BsYXlfdHJlZV92YWx1
ZSkgY2FzZV9sYWJlbCk7CgogIHJldHVybiBjYXNlX2xhYmVsOwp9CgovKiBGaW5pc2ggYW4g
ZXhwcmVzc2lvbiB0YWtpbmcgdGhlIGFkZHJlc3Mgb2YgTEFCRUwgKGFuCiAgIElERU5USUZJ
RVJfTk9ERSkuICBSZXR1cm5zIGFuIGV4cHJlc3Npb24gZm9yIHRoZSBhZGRyZXNzLiAgKi8K
CnRyZWUKZmluaXNoX2xhYmVsX2FkZHJlc3NfZXhwciAodHJlZSBsYWJlbCkKewogIHRyZWUg
cmVzdWx0OwoKICBpZiAocGVkYW50aWMpCiAgICBwZWR3YXJuICgidGFraW5nIHRoZSBhZGRy
ZXNzIG9mIGEgbGFiZWwgaXMgbm9uLXN0YW5kYXJkIik7CgogIGlmIChsYWJlbCA9PSBlcnJv
cl9tYXJrX25vZGUpCiAgICByZXR1cm4gZXJyb3JfbWFya19ub2RlOwoKICBsYWJlbCA9IGxv
b2t1cF9sYWJlbCAobGFiZWwpOwogIGlmIChsYWJlbCA9PSBOVUxMX1RSRUUpCiAgICByZXN1
bHQgPSBudWxsX3BvaW50ZXJfbm9kZTsKICBlbHNlCiAgICB7CiAgICAgIFRSRUVfVVNFRCAo
bGFiZWwpID0gMTsKICAgICAgcmVzdWx0ID0gYnVpbGQxIChBRERSX0VYUFIsIHB0cl90eXBl
X25vZGUsIGxhYmVsKTsKICAgICAgVFJFRV9DT05TVEFOVCAocmVzdWx0KSA9IDE7CiAgICAg
IC8qIFRoZSBjdXJyZW50IGZ1bmN0aW9uIGluIG5vdCBuZWNlc3NhcmlseSB1bmlubGluYWJs
ZS4KCSBDb21wdXRlZCBnb3RvcyBhcmUgaW5jb21wYXRpYmxlIHdpdGggaW5saW5pbmcsIGJ1
dCB0aGUgdmFsdWUKCSBoZXJlIGNvdWxkIGJlIHVzZWQgb25seSBpbiBhIGRpYWdub3N0aWMs
IGZvciBleGFtcGxlLiAgKi8KICAgIH0KCiAgcmV0dXJuIHJlc3VsdDsKfQoKLyogSG9vayB1
c2VkIGJ5IGV4cGFuZF9leHByIHRvIGV4cGFuZCBsYW5ndWFnZS1zcGVjaWZpYyB0cmVlIGNv
ZGVzLiAgKi8KCnJ0eApjX2V4cGFuZF9leHByICh0cmVlIGV4cCwgcnR4IHRhcmdldCwgZW51
bSBtYWNoaW5lX21vZGUgdG1vZGUsIGludCBtb2RpZmllcikKICAgICAvKiBBY3R1YWxseSBl
bnVtX21vZGlmaWVyLiAgKi8KewogIHN3aXRjaCAoVFJFRV9DT0RFIChleHApKQogICAgewog
ICAgY2FzZSBTVE1UX0VYUFI6CiAgICAgIHsKCXRyZWUgcnRsX2V4cHI7CglydHggcmVzdWx0
OwoJYm9vbCBwcmVzZXJ2ZV9yZXN1bHQgPSBmYWxzZTsKCWJvb2wgcmV0dXJuX3RhcmdldCA9
IGZhbHNlOwoKCS8qIFNpbmNlIGV4cGFuZF9leHByX3N0bXQgY2FsbHMgZnJlZV90ZW1wX3Ns
b3RzIGFmdGVyIGV2ZXJ5CgkgICBleHByZXNzaW9uIHN0YXRlbWVudCwgd2UgbXVzdCBjYWxs
IHB1c2hfdGVtcF9zbG90cyBoZXJlLgoJICAgT3RoZXJ3aXNlLCBhbnkgdGVtcG9yYXJpZXMg
aW4gdXNlIG5vdyB3b3VsZCBiZSBjb25zaWRlcmVkCgkgICBvdXQtb2Ytc2NvcGUgYWZ0ZXIg
dGhlIGZpcnN0IEVYUFJfU1RNVCBmcm9tIHdpdGhpbiB0aGUKCSAgIFNUTVRfRVhQUi4gICov
CglwdXNoX3RlbXBfc2xvdHMgKCk7CglydGxfZXhwciA9IGV4cGFuZF9zdGFydF9zdG10X2V4
cHIgKCFTVE1UX0VYUFJfTk9fU0NPUEUgKGV4cCkpOwoKCS8qIElmIHdlIHdhbnQgdGhlIHJl
c3VsdCBvZiB0aGlzIGV4cHJlc3Npb24sIGZpbmQgdGhlIGxhc3QKICAgICAgICAgICBFWFBS
X1NUTVQgaW4gdGhlIENPTVBPVU5EX1NUTVQgYW5kIG1hcmsgaXQgYXMgYWRkcmVzc2FibGUu
ICAqLwoJaWYgKHRhcmdldCAhPSBjb25zdDBfcnR4CgkgICAgJiYgVFJFRV9DT0RFIChTVE1U
X0VYUFJfU1RNVCAoZXhwKSkgPT0gQ09NUE9VTkRfU1RNVAoJICAgICYmIFRSRUVfQ09ERSAo
Q09NUE9VTkRfQk9EWSAoU1RNVF9FWFBSX1NUTVQgKGV4cCkpKSA9PSBTQ09QRV9TVE1UKQoJ
ICB7CgkgICAgdHJlZSBleHByID0gQ09NUE9VTkRfQk9EWSAoU1RNVF9FWFBSX1NUTVQgKGV4
cCkpOwoJICAgIHRyZWUgbGFzdCA9IFRSRUVfQ0hBSU4gKGV4cHIpOwoKCSAgICB3aGlsZSAo
VFJFRV9DSEFJTiAobGFzdCkpCgkgICAgICB7CgkJZXhwciA9IGxhc3Q7CgkJbGFzdCA9IFRS
RUVfQ0hBSU4gKGxhc3QpOwoJICAgICAgfQoKCSAgICBpZiAoVFJFRV9DT0RFIChsYXN0KSA9
PSBTQ09QRV9TVE1UCgkJJiYgVFJFRV9DT0RFIChleHByKSA9PSBFWFBSX1NUTVQpCgkgICAg
ICB7CgkJaWYgKHRhcmdldCAmJiBUUkVFX0NPREUgKEVYUFJfU1RNVF9FWFBSIChleHByKSkg
PT0gVkFSX0RFQ0wKCQkgICAgJiYgREVDTF9SVExfSUZfU0VUIChFWFBSX1NUTVRfRVhQUiAo
ZXhwcikpID09IHRhcmdldCkKCQkgIC8qIElmIHRoZSBsYXN0IGV4cHJlc3Npb24gaXMgYSB2
YXJpYWJsZSB3aG9zZSBSVEwgaXMgdGhlCgkJICAgICBzYW1lIGFzIG91ciB0YXJnZXQsIGp1
c3QgcmV0dXJuIHRoZSB0YXJnZXQ7IGlmIGl0CgkJICAgICBpc24ndCB2YWxpZCBleHBhbmRp
bmcgdGhlIGRlY2wgd291bGQgcHJvZHVjZSBkaWZmZXJlbnQKCQkgICAgIFJUTCwgYW5kIHN0
b3JlX2V4cHIgd291bGQgdHJ5IHRvIGRvIGEgY29weS4gICovCgkJICByZXR1cm5fdGFyZ2V0
ID0gdHJ1ZTsKCQllbHNlCgkJICB7CgkJICAgIC8qIE90aGVyd2lzZSwgbm90ZSB0aGF0IHdl
IHdhbnQgdGhlIHZhbHVlIGZyb20gdGhlIGxhc3QKCQkgICAgICAgZXhwcmVzc2lvbi4gICov
CgkJICAgIFRSRUVfQUREUkVTU0FCTEUgKGV4cHIpID0gMTsKCQkgICAgcHJlc2VydmVfcmVz
dWx0ID0gdHJ1ZTsKCQkgIH0KCSAgICAgIH0KCSAgfQoKCWV4cGFuZF9zdG10IChTVE1UX0VY
UFJfU1RNVCAoZXhwKSk7CglleHBhbmRfZW5kX3N0bXRfZXhwciAocnRsX2V4cHIpOwoKCXJl
c3VsdCA9IGV4cGFuZF9leHByIChydGxfZXhwciwgdGFyZ2V0LCB0bW9kZSwgbW9kaWZpZXIp
OwoJaWYgKHJldHVybl90YXJnZXQpCgkgIHJlc3VsdCA9IHRhcmdldDsKCWVsc2UgaWYgKHBy
ZXNlcnZlX3Jlc3VsdCAmJiBHRVRfQ09ERSAocmVzdWx0KSA9PSBNRU0pCgkgIHsKCSAgICBp
ZiAoR0VUX01PREUgKHJlc3VsdCkgIT0gQkxLbW9kZSkKCSAgICAgIHJlc3VsdCA9IGNvcHlf
dG9fcmVnIChyZXN1bHQpOwoJICAgIGVsc2UKCSAgICAgIHByZXNlcnZlX3RlbXBfc2xvdHMg
KHJlc3VsdCk7CgkgIH0KCgkvKiBJZiB0aGUgc3RhdG1lbnQtZXhwcmVzc2lvbiBkb2VzIG5v
dCBoYXZlIGEgc2NvcGUsIHRoZW4gdGhlCgkgICBuZXcgdGVtcG9yYXJpZXMgd2UgY3JlYXRl
ZCB3aXRoaW4gaXQgbXVzdCBsaXZlIGJleW9uZCB0aGUKCSAgIHN0YXRlbWVudC1leHByZXNz
aW9uLiAgKi8KCWlmIChTVE1UX0VYUFJfTk9fU0NPUEUgKGV4cCkpCgkgIHByZXNlcnZlX3Rl
bXBfc2xvdHMgKE5VTExfUlRYKTsKCglwb3BfdGVtcF9zbG90cyAoKTsKCXJldHVybiByZXN1
bHQ7CiAgICAgIH0KICAgICAgYnJlYWs7CgogICAgY2FzZSBDQUxMX0VYUFI6CiAgICAgIHsK
CWlmIChUUkVFX0NPREUgKFRSRUVfT1BFUkFORCAoZXhwLCAwKSkgPT0gQUREUl9FWFBSCgkg
ICAgJiYgKFRSRUVfQ09ERSAoVFJFRV9PUEVSQU5EIChUUkVFX09QRVJBTkQgKGV4cCwgMCks
IDApKQoJCT09IEZVTkNUSU9OX0RFQ0wpCgkgICAgJiYgREVDTF9CVUlMVF9JTiAoVFJFRV9P
UEVSQU5EIChUUkVFX09QRVJBTkQgKGV4cCwgMCksIDApKQoJICAgICYmIChERUNMX0JVSUxU
X0lOX0NMQVNTIChUUkVFX09QRVJBTkQgKFRSRUVfT1BFUkFORCAoZXhwLCAwKSwgMCkpCgkJ
PT0gQlVJTFRfSU5fRlJPTlRFTkQpKQoJICByZXR1cm4gY19leHBhbmRfYnVpbHRpbiAoZXhw
LCB0YXJnZXQsIHRtb2RlLCBtb2RpZmllcik7CgllbHNlCgkgIGFib3J0ICgpOwogICAgICB9
CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgQ09NUE9VTkRfTElURVJBTF9FWFBSOgogICAgICB7
CgkvKiBJbml0aWFsaXplIHRoZSBhbm9ueW1vdXMgdmFyaWFibGUgZGVjbGFyZWQgaW4gdGhl
IGNvbXBvdW5kCgkgICBsaXRlcmFsLCB0aGVuIHJldHVybiB0aGUgdmFyaWFibGUuICAqLwoJ
dHJlZSBkZWNsID0gQ09NUE9VTkRfTElURVJBTF9FWFBSX0RFQ0wgKGV4cCk7CgllbWl0X2xv
Y2FsX3ZhciAoZGVjbCk7CglyZXR1cm4gZXhwYW5kX2V4cHIgKGRlY2wsIHRhcmdldCwgdG1v
ZGUsIG1vZGlmaWVyKTsKICAgICAgfQoKICAgIGRlZmF1bHQ6CiAgICAgIGFib3J0ICgpOwog
ICAgfQoKICBhYm9ydCAoKTsKICByZXR1cm4gTlVMTDsKfQoKLyogSG9vayB1c2VkIGJ5IHNh
ZmVfZnJvbV9wIHRvIGhhbmRsZSBsYW5ndWFnZS1zcGVjaWZpYyB0cmVlIGNvZGVzLiAgKi8K
CmludApjX3NhZmVfZnJvbV9wIChydHggdGFyZ2V0LCB0cmVlIGV4cCkKewogIC8qIFdlIGNh
biBzZWUgc3RhdGVtZW50cyBoZXJlIHdoZW4gcHJvY2Vzc2luZyB0aGUgYm9keSBvZiBhCiAg
ICAgc3RhdGVtZW50LWV4cHJlc3Npb24uICBGb3IgYSBkZWNsYXJhdGlvbiBzdGF0ZW1lbnQg
ZGVjbGFyaW5nIGEKICAgICB2YXJpYWJsZSwgbG9vayBhdCB0aGUgdmFyaWFibGUncyBpbml0
aWFsaXplci4gICovCiAgaWYgKFRSRUVfQ09ERSAoZXhwKSA9PSBERUNMX1NUTVQpCiAgICB7
CiAgICAgIHRyZWUgZGVjbCA9IERFQ0xfU1RNVF9ERUNMIChleHApOwoKICAgICAgaWYgKFRS
RUVfQ09ERSAoZGVjbCkgPT0gVkFSX0RFQ0wKCSAgJiYgREVDTF9JTklUSUFMIChkZWNsKQoJ
ICAmJiAhc2FmZV9mcm9tX3AgKHRhcmdldCwgREVDTF9JTklUSUFMIChkZWNsKSwgLyp0b3Bf
cD0qLzApKQoJcmV0dXJuIDA7CiAgICB9CgogIC8qIEZvciBhbnkgc3RhdGVtZW50LCB3ZSBt
dXN0IGZvbGxvdyB0aGUgc3RhdGVtZW50LWNoYWluLiAgKi8KICBpZiAoU1RBVEVNRU5UX0NP
REVfUCAoVFJFRV9DT0RFIChleHApKSAmJiBUUkVFX0NIQUlOIChleHApKQogICAgcmV0dXJu
IHNhZmVfZnJvbV9wICh0YXJnZXQsIFRSRUVfQ0hBSU4gKGV4cCksIC8qdG9wX3A9Ki8wKTsK
CiAgLyogQXNzdW1lIGV2ZXJ5dGhpbmcgZWxzZSBpcyBzYWZlLiAgKi8KICByZXR1cm4gMTsK
fQoKLyogSG9vayB1c2VkIGJ5IHVuc2FmZV9mb3JfcmVldmFsIHRvIGhhbmRsZSBsYW5ndWFn
ZS1zcGVjaWZpYyB0cmVlIGNvZGVzLiAgKi8KCmludApjX2NvbW1vbl91bnNhZmVfZm9yX3Jl
ZXZhbCAodHJlZSBleHApCnsKICAvKiBTdGF0ZW1lbnQgZXhwcmVzc2lvbnMgbWF5IG5vdCBi
ZSByZWV2YWx1YXRlZCwgbGlrZXdpc2UgY29tcG91bmQKICAgICBsaXRlcmFscy4gICovCiAg
aWYgKFRSRUVfQ09ERSAoZXhwKSA9PSBTVE1UX0VYUFIKICAgICAgfHwgVFJFRV9DT0RFIChl
eHApID09IENPTVBPVU5EX0xJVEVSQUxfRVhQUikKICAgIHJldHVybiAyOwoKICAvKiBXYWxr
IGFsbCBvdGhlciBleHByZXNzaW9ucy4gICovCiAgcmV0dXJuIC0xOwp9CgovKiBIb29rIHVz
ZWQgYnkgc3RhdGljcCB0byBoYW5kbGUgbGFuZ3VhZ2Utc3BlY2lmaWMgdHJlZSBjb2Rlcy4g
ICovCgppbnQKY19zdGF0aWNwICh0cmVlIGV4cCkKewogIGlmIChUUkVFX0NPREUgKGV4cCkg
PT0gQ09NUE9VTkRfTElURVJBTF9FWFBSCiAgICAgICYmIFRSRUVfU1RBVElDIChDT01QT1VO
RF9MSVRFUkFMX0VYUFJfREVDTCAoZXhwKSkpCiAgICByZXR1cm4gMTsKICByZXR1cm4gMDsK
fQoKI2RlZmluZSBDQUxMRURfQVNfQlVJTFRfSU4oTk9ERSkgXAogICAoIXN0cm5jbXAgKElE
RU5USUZJRVJfUE9JTlRFUiAoREVDTF9OQU1FIChOT0RFKSksICJfX2J1aWx0aW5fIiwgMTAp
KQoKc3RhdGljIHJ0eApjX2V4cGFuZF9idWlsdGluICh0cmVlIGV4cCwgcnR4IHRhcmdldCwg
ZW51bSBtYWNoaW5lX21vZGUgdG1vZGUsCgkJICBlbnVtIGV4cGFuZF9tb2RpZmllciBtb2Rp
ZmllcikKewogIHRyZWUgdHlwZSA9IFRSRUVfVFlQRSAoZXhwKTsKICB0cmVlIGZuZGVjbCA9
IFRSRUVfT1BFUkFORCAoVFJFRV9PUEVSQU5EIChleHAsIDApLCAwKTsKICB0cmVlIGFyZ2xp
c3QgPSBUUkVFX09QRVJBTkQgKGV4cCwgMSk7CiAgZW51bSBidWlsdF9pbl9mdW5jdGlvbiBm
Y29kZSA9IERFQ0xfRlVOQ1RJT05fQ09ERSAoZm5kZWNsKTsKICBlbnVtIHRyZWVfY29kZSBj
b2RlID0gVFJFRV9DT0RFIChleHApOwogIGNvbnN0IGludCBpZ25vcmUgPSAodGFyZ2V0ID09
IGNvbnN0MF9ydHgKCQkgICAgICB8fCAoKGNvZGUgPT0gTk9OX0xWQUxVRV9FWFBSIHx8IGNv
ZGUgPT0gTk9QX0VYUFIKCQkJICAgfHwgY29kZSA9PSBDT05WRVJUX0VYUFIgfHwgY29kZSA9
PSBSRUZFUkVOQ0VfRVhQUgoJCQkgICB8fCBjb2RlID09IENPTkRfRVhQUikKCQkJICAmJiBU
UkVFX0NPREUgKHR5cGUpID09IFZPSURfVFlQRSkpOwoKICBpZiAoISBvcHRpbWl6ZSAmJiAh
IENBTExFRF9BU19CVUlMVF9JTiAoZm5kZWNsKSkKICAgIHJldHVybiBleHBhbmRfY2FsbCAo
ZXhwLCB0YXJnZXQsIGlnbm9yZSk7CgogIHN3aXRjaCAoZmNvZGUpCiAgICB7CiAgICBjYXNl
IEJVSUxUX0lOX1BSSU5URjoKICAgICAgdGFyZ2V0ID0gY19leHBhbmRfYnVpbHRpbl9wcmlu
dGYgKGFyZ2xpc3QsIHRhcmdldCwgdG1vZGUsCgkJCQkJbW9kaWZpZXIsIGlnbm9yZSwgLyp1
bmxvY2tlZD0qLyAwKTsKICAgICAgaWYgKHRhcmdldCkKCXJldHVybiB0YXJnZXQ7CiAgICAg
IGJyZWFrOwoKICAgIGNhc2UgQlVJTFRfSU5fUFJJTlRGX1VOTE9DS0VEOgogICAgICB0YXJn
ZXQgPSBjX2V4cGFuZF9idWlsdGluX3ByaW50ZiAoYXJnbGlzdCwgdGFyZ2V0LCB0bW9kZSwK
CQkJCQltb2RpZmllciwgaWdub3JlLCAvKnVubG9ja2VkPSovIDEpOwogICAgICBpZiAodGFy
Z2V0KQoJcmV0dXJuIHRhcmdldDsKICAgICAgYnJlYWs7CgogICAgY2FzZSBCVUlMVF9JTl9G
UFJJTlRGOgogICAgICB0YXJnZXQgPSBjX2V4cGFuZF9idWlsdGluX2ZwcmludGYgKGFyZ2xp
c3QsIHRhcmdldCwgdG1vZGUsCgkJCQkJIG1vZGlmaWVyLCBpZ25vcmUsIC8qdW5sb2NrZWQ9
Ki8gMCk7CiAgICAgIGlmICh0YXJnZXQpCglyZXR1cm4gdGFyZ2V0OwogICAgICBicmVhazsK
CiAgICBjYXNlIEJVSUxUX0lOX0ZQUklOVEZfVU5MT0NLRUQ6CiAgICAgIHRhcmdldCA9IGNf
ZXhwYW5kX2J1aWx0aW5fZnByaW50ZiAoYXJnbGlzdCwgdGFyZ2V0LCB0bW9kZSwKCQkJCQkg
bW9kaWZpZXIsIGlnbm9yZSwgLyp1bmxvY2tlZD0qLyAxKTsKICAgICAgaWYgKHRhcmdldCkK
CXJldHVybiB0YXJnZXQ7CiAgICAgIGJyZWFrOwoKICAgIGRlZmF1bHQ6CQkJLyoganVzdCBk
byBsaWJyYXJ5IGNhbGwsIGlmIHVua25vd24gYnVpbHRpbiAqLwogICAgICBlcnJvciAoImJ1
aWx0LWluIGZ1bmN0aW9uIGAlcycgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQiLAoJICAgICBJ
REVOVElGSUVSX1BPSU5URVIgKERFQ0xfTkFNRSAoZm5kZWNsKSkpOwogICAgfQoKICAvKiBU
aGUgc3dpdGNoIHN0YXRlbWVudCBhYm92ZSBjYW4gZHJvcCB0aHJvdWdoIHRvIGNhdXNlIHRo
ZSBmdW5jdGlvbgogICAgIHRvIGJlIGNhbGxlZCBub3JtYWxseS4gICovCiAgcmV0dXJuIGV4
cGFuZF9jYWxsIChleHAsIHRhcmdldCwgaWdub3JlKTsKfQoKLyogQ2hlY2sgYW4gYXJnbGlz
dCB0byAqcHJpbnRmIGZvciBwcm9ibGVtcy4gIFRoZSBhcmdsaXN0IHNob3VsZCBzdGFydAog
ICBhdCB0aGUgZm9ybWF0IHNwZWNpZmllciwgd2l0aCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50
cyBpbW1lZGlhdGVseQogICBmb2xsb3dpbmcgaXQuICAqLwpzdGF0aWMgaW50CmlzX3ZhbGlk
X3ByaW50Zl9hcmdsaXN0ICh0cmVlIGFyZ2xpc3QpCnsKICAvKiBTYXZlIHRoaXMgdmFsdWUg
c28gd2UgY2FuIHJlc3RvcmUgaXQgbGF0ZXIuICAqLwogIGNvbnN0IGludCBTQVZFX3BlZGFu
dGljID0gcGVkYW50aWM7CiAgaW50IGRpYWdub3N0aWNfb2NjdXJyZWQgPSAwOwogIHRyZWUg
YXR0cnM7CgogIC8qIFNldCB0aGlzIHRvIGEga25vd24gdmFsdWUgc28gdGhlIHVzZXIgc2V0
dGluZyB3b24ndCBhZmZlY3QgY29kZQogICAgIGdlbmVyYXRpb24uICAqLwogIHBlZGFudGlj
ID0gMTsKICAvKiBDaGVjayB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGZvcm1hdCBzcGVj
aWZpZXIgZXJyb3JzLiAgKi8KICBhdHRycyA9IHRyZWVfY29ucyAoZ2V0X2lkZW50aWZpZXIg
KCJmb3JtYXQiKSwKCQkgICAgIHRyZWVfY29ucyAoTlVMTF9UUkVFLAoJCQkJZ2V0X2lkZW50
aWZpZXIgKCJwcmludGYiKSwKCQkJCXRyZWVfY29ucyAoTlVMTF9UUkVFLAoJCQkJCSAgIGlu
dGVnZXJfb25lX25vZGUsCgkJCQkJICAgdHJlZV9jb25zIChOVUxMX1RSRUUsCgkJCQkJCSAg
ICAgIGJ1aWxkX2ludF8yICgyLCAwKSwKCQkJCQkJICAgICAgTlVMTF9UUkVFKSkpLAoJCSAg
ICAgTlVMTF9UUkVFKTsKICBjaGVja19mdW5jdGlvbl9mb3JtYXQgKCZkaWFnbm9zdGljX29j
Y3VycmVkLCBhdHRycywgYXJnbGlzdCk7CgogIC8qIFJlc3RvcmUgdGhlIHZhbHVlIG9mIGBw
ZWRhbnRpYycuICAqLwogIHBlZGFudGljID0gU0FWRV9wZWRhbnRpYzsKCiAgLyogSWYgY2Fs
bGluZyBgY2hlY2tfZnVuY3Rpb25fZm9ybWF0X3B0cicgcHJvZHVjZXMgYSB3YXJuaW5nLCB3
ZQogICAgIHJldHVybiBmYWxzZSwgb3RoZXJ3aXNlIHdlIHJldHVybiB0cnVlLiAgKi8KICBy
ZXR1cm4gISBkaWFnbm9zdGljX29jY3VycmVkOwp9CgovKiBJZiB0aGUgYXJndW1lbnRzIHBh
c3NlZCB0byBwcmludGYgYXJlIHN1aXRhYmxlIGZvciBvcHRpbWl6YXRpb25zLAogICB3ZSBh
dHRlbXB0IHRvIHRyYW5zZm9ybSB0aGUgY2FsbC4gICovCnN0YXRpYyBydHgKY19leHBhbmRf
YnVpbHRpbl9wcmludGYgKHRyZWUgYXJnbGlzdCwgcnR4IHRhcmdldCwgZW51bSBtYWNoaW5l
X21vZGUgdG1vZGUsCgkJCSBlbnVtIGV4cGFuZF9tb2RpZmllciBtb2RpZmllciwgaW50IGln
bm9yZSwKCQkJIGludCB1bmxvY2tlZCkKewogIHRyZWUgZm5fcHV0Y2hhciA9IHVubG9ja2Vk
ID8KICAgIGltcGxpY2l0X2J1aWx0X2luX2RlY2xzW0JVSUxUX0lOX1BVVENIQVJfVU5MT0NL
RURdIDogaW1wbGljaXRfYnVpbHRfaW5fZGVjbHNbQlVJTFRfSU5fUFVUQ0hBUl07CiAgdHJl
ZSBmbl9wdXRzID0gdW5sb2NrZWQgPwogICAgaW1wbGljaXRfYnVpbHRfaW5fZGVjbHNbQlVJ
TFRfSU5fUFVUU19VTkxPQ0tFRF0gOiBpbXBsaWNpdF9idWlsdF9pbl9kZWNsc1tCVUlMVF9J
Tl9QVVRTXTsKICB0cmVlIGZuLCBmb3JtYXRfYXJnLCBzdHJpcHBlZF9zdHJpbmc7CgogIC8q
IElmIHRoZSByZXR1cm4gdmFsdWUgaXMgdXNlZCwgb3IgdGhlIHJlcGxhY2VtZW50IF9ERUNM
IGlzbid0CiAgICAgaW5pdGlhbGl6ZWQsIGRvbid0IGRvIHRoZSB0cmFuc2Zvcm1hdGlvbi4g
ICovCiAgaWYgKCFpZ25vcmUgfHwgIWZuX3B1dGNoYXIgfHwgIWZuX3B1dHMpCiAgICByZXR1
cm4gMDsKCiAgLyogVmVyaWZ5IHRoZSByZXF1aXJlZCBhcmd1bWVudHMgaW4gdGhlIG9yaWdp
bmFsIGNhbGwuICAqLwogIGlmIChhcmdsaXN0ID09IDAKICAgICAgfHwgKFRSRUVfQ09ERSAo
VFJFRV9UWVBFIChUUkVFX1ZBTFVFIChhcmdsaXN0KSkpICE9IFBPSU5URVJfVFlQRSkpCiAg
ICByZXR1cm4gMDsKCiAgLyogQ2hlY2sgdGhlIHNwZWNpZmllciB2cy4gdGhlIHBhcmFtZXRl
cnMuICAqLwogIGlmICghaXNfdmFsaWRfcHJpbnRmX2FyZ2xpc3QgKGFyZ2xpc3QpKQogICAg
cmV0dXJuIDA7CgogIGZvcm1hdF9hcmcgPSBUUkVFX1ZBTFVFIChhcmdsaXN0KTsKICBzdHJp
cHBlZF9zdHJpbmcgPSBmb3JtYXRfYXJnOwogIFNUUklQX05PUFMgKHN0cmlwcGVkX3N0cmlu
Zyk7CiAgaWYgKHN0cmlwcGVkX3N0cmluZyAmJiBUUkVFX0NPREUgKHN0cmlwcGVkX3N0cmlu
ZykgPT0gQUREUl9FWFBSKQogICAgc3RyaXBwZWRfc3RyaW5nID0gVFJFRV9PUEVSQU5EIChz
dHJpcHBlZF9zdHJpbmcsIDApOwoKICAvKiBJZiB0aGUgZm9ybWF0IHNwZWNpZmllciBpc24n
dCBhIFNUUklOR19DU1QsIHB1bnQuICAqLwogIGlmIChUUkVFX0NPREUgKHN0cmlwcGVkX3N0
cmluZykgIT0gU1RSSU5HX0NTVCkKICAgIHJldHVybiAwOwoKICAvKiBPSyEgIFdlIGNhbiBh
dHRlbXB0IG9wdGltaXphdGlvbi4gICovCgogIC8qIElmIHRoZSBmb3JtYXQgc3BlY2lmaWVy
IHdhcyAiJXNcbiIsIGNhbGwgX19idWlsdGluX3B1dHMoYXJnMikuICAqLwogIGlmIChzdHJj
bXAgKFRSRUVfU1RSSU5HX1BPSU5URVIgKHN0cmlwcGVkX3N0cmluZyksICIlc1xuIikgPT0g
MCkKICAgIHsKICAgICAgYXJnbGlzdCA9IFRSRUVfQ0hBSU4gKGFyZ2xpc3QpOwogICAgICBm
biA9IGZuX3B1dHM7CiAgICB9CiAgLyogSWYgdGhlIGZvcm1hdCBzcGVjaWZpZXIgd2FzICIl
YyIsIGNhbGwgX19idWlsdGluX3B1dGNoYXIgKGFyZzIpLiAgKi8KICBlbHNlIGlmIChzdHJj
bXAgKFRSRUVfU1RSSU5HX1BPSU5URVIgKHN0cmlwcGVkX3N0cmluZyksICIlYyIpID09IDAp
CiAgICB7CiAgICAgIGFyZ2xpc3QgPSBUUkVFX0NIQUlOIChhcmdsaXN0KTsKICAgICAgZm4g
PSBmbl9wdXRjaGFyOwogICAgfQogIGVsc2UKICAgIHsKICAgICAgLyogV2UgY2FuJ3QgaGFu
ZGxlIGFueXRoaW5nIGVsc2Ugd2l0aCAlIGFyZ3Mgb3IgJSUgLi4uIHlldC4gICovCiAgICAg
IGlmIChzdHJjaHIgKFRSRUVfU1RSSU5HX1BPSU5URVIgKHN0cmlwcGVkX3N0cmluZyksICcl
JykpCglyZXR1cm4gMDsKCiAgICAgIC8qIElmIHRoZSByZXN1bHRpbmcgY29uc3RhbnQgc3Ry
aW5nIGhhcyBhIGxlbmd0aCBvZiAxLCBjYWxsCiAgICAgICAgIHB1dGNoYXIuICBOb3RlLCBU
UkVFX1NUUklOR19MRU5HVEggaW5jbHVkZXMgdGhlIHRlcm1pbmF0aW5nCiAgICAgICAgIE5V
TEwgaW4gaXRzIGNvdW50LiAgKi8KICAgICAgaWYgKFRSRUVfU1RSSU5HX0xFTkdUSCAoc3Ry
aXBwZWRfc3RyaW5nKSA9PSAyKQogICAgICAgIHsKCSAgLyogR2l2ZW4gcHJpbnRmKCJjIiks
ICh3aGVyZSBjIGlzIGFueSBvbmUgY2hhcmFjdGVyLCkKICAgICAgICAgICAgIGNvbnZlcnQg
ImMiWzBdIHRvIGFuIGludCBhbmQgcGFzcyB0aGF0IHRvIHRoZSByZXBsYWNlbWVudAogICAg
ICAgICAgICAgZnVuY3Rpb24uICAqLwoJICBhcmdsaXN0ID0gYnVpbGRfaW50XzIgKFRSRUVf
U1RSSU5HX1BPSU5URVIgKHN0cmlwcGVkX3N0cmluZylbMF0sIDApOwoJICBhcmdsaXN0ID0g
YnVpbGRfdHJlZV9saXN0IChOVUxMX1RSRUUsIGFyZ2xpc3QpOwoKCSAgZm4gPSBmbl9wdXRj
aGFyOwogICAgICAgIH0KICAgICAgLyogSWYgdGhlIHJlc3VsdGluZyBjb25zdGFudCB3YXMg
InN0cmluZ1xuIiwgY2FsbAogICAgICAgICBfX2J1aWx0aW5fcHV0cygic3RyaW5nIikuICBF
bnN1cmUgInN0cmluZyIgaGFzIGF0IGxlYXN0IG9uZQogICAgICAgICBjaGFyYWN0ZXIgYmVz
aWRlcyB0aGUgdHJhaWxpbmcgXG4uICBOb3RlLCBUUkVFX1NUUklOR19MRU5HVEgKICAgICAg
ICAgaW5jbHVkZXMgdGhlIHRlcm1pbmF0aW5nIE5VTEwgaW4gaXRzIGNvdW50LiAgKi8KICAg
ICAgZWxzZSBpZiAoVFJFRV9TVFJJTkdfTEVOR1RIIChzdHJpcHBlZF9zdHJpbmcpID4gMgoJ
ICAgICAgICYmIFRSRUVfU1RSSU5HX1BPSU5URVIgKHN0cmlwcGVkX3N0cmluZykKCSAgICAg
ICBbVFJFRV9TVFJJTkdfTEVOR1RIIChzdHJpcHBlZF9zdHJpbmcpIC0gMl0gPT0gJ1xuJykK
ICAgICAgICB7CgkgIC8qIENyZWF0ZSBhIE5VTEwtdGVybWluYXRlZCBzdHJpbmcgdGhhdCdz
IG9uZSBjaGFyIHNob3J0ZXIKCSAgICAgdGhhbiB0aGUgb3JpZ2luYWwsIHN0cmlwcGluZyBv
ZmYgdGhlIHRyYWlsaW5nICdcbicuICAqLwoJICBjb25zdCBpbnQgbmV3bGVuID0gVFJFRV9T
VFJJTkdfTEVOR1RIIChzdHJpcHBlZF9zdHJpbmcpIC0gMTsKCSAgY2hhciAqbmV3c3RyID0g
KGNoYXIgKikgYWxsb2NhIChuZXdsZW4pOwoJICBtZW1jcHkgKG5ld3N0ciwgVFJFRV9TVFJJ
TkdfUE9JTlRFUiAoc3RyaXBwZWRfc3RyaW5nKSwgbmV3bGVuIC0gMSk7CgkgIG5ld3N0cltu
ZXdsZW4gLSAxXSA9IDA7CgoJICBhcmdsaXN0ID0gZml4X3N0cmluZ190eXBlIChidWlsZF9z
dHJpbmcgKG5ld2xlbiwgbmV3c3RyKSk7CgkgIGFyZ2xpc3QgPSBidWlsZF90cmVlX2xpc3Qg
KE5VTExfVFJFRSwgYXJnbGlzdCk7CgkgIGZuID0gZm5fcHV0czsKCX0KICAgICAgZWxzZQoJ
LyogV2UnZCBsaWtlIHRvIGFycmFuZ2UgdG8gY2FsbCBmcHV0cyhzdHJpbmcpIGhlcmUsIGJ1
dCB3ZQogICAgICAgICAgIG5lZWQgc3Rkb3V0IGFuZCBkb24ndCBoYXZlIGEgd2F5IHRvIGdl
dCBpdCAuLi4geWV0LiAgKi8KCXJldHVybiAwOwogICAgfQoKICByZXR1cm4gZXhwYW5kX2V4
cHIgKGJ1aWxkX2Z1bmN0aW9uX2NhbGwgKGZuLCBhcmdsaXN0KSwKCQkgICAgICAoaWdub3Jl
ID8gY29uc3QwX3J0eCA6IHRhcmdldCksCgkJICAgICAgdG1vZGUsIG1vZGlmaWVyKTsKfQoK
LyogSWYgdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gZnByaW50ZiBhcmUgc3VpdGFibGUgZm9y
IG9wdGltaXphdGlvbnMsCiAgIHdlIGF0dGVtcHQgdG8gdHJhbnNmb3JtIHRoZSBjYWxsLiAg
Ki8Kc3RhdGljIHJ0eApjX2V4cGFuZF9idWlsdGluX2ZwcmludGYgKHRyZWUgYXJnbGlzdCwg
cnR4IHRhcmdldCwgZW51bSBtYWNoaW5lX21vZGUgdG1vZGUsCgkJCSAgZW51bSBleHBhbmRf
bW9kaWZpZXIgbW9kaWZpZXIsIGludCBpZ25vcmUsCgkJCSAgaW50IHVubG9ja2VkKQp7CiAg
dHJlZSBmbl9mcHV0YyA9IHVubG9ja2VkID8KICAgIGltcGxpY2l0X2J1aWx0X2luX2RlY2xz
W0JVSUxUX0lOX0ZQVVRDX1VOTE9DS0VEXSA6IGltcGxpY2l0X2J1aWx0X2luX2RlY2xzW0JV
SUxUX0lOX0ZQVVRDXTsKICB0cmVlIGZuX2ZwdXRzID0gdW5sb2NrZWQgPwogICAgaW1wbGlj
aXRfYnVpbHRfaW5fZGVjbHNbQlVJTFRfSU5fRlBVVFNfVU5MT0NLRURdIDogaW1wbGljaXRf
YnVpbHRfaW5fZGVjbHNbQlVJTFRfSU5fRlBVVFNdOwogIHRyZWUgZm4sIGZvcm1hdF9hcmcs
IHN0cmlwcGVkX3N0cmluZzsKCiAgLyogSWYgdGhlIHJldHVybiB2YWx1ZSBpcyB1c2VkLCBv
ciB0aGUgcmVwbGFjZW1lbnQgX0RFQ0wgaXNuJ3QKICAgICBpbml0aWFsaXplZCwgZG9uJ3Qg
ZG8gdGhlIHRyYW5zZm9ybWF0aW9uLiAgKi8KICBpZiAoIWlnbm9yZSB8fCAhZm5fZnB1dGMg
fHwgIWZuX2ZwdXRzKQogICAgcmV0dXJuIDA7CgogIC8qIFZlcmlmeSB0aGUgcmVxdWlyZWQg
YXJndW1lbnRzIGluIHRoZSBvcmlnaW5hbCBjYWxsLiAgKi8KICBpZiAoYXJnbGlzdCA9PSAw
CiAgICAgIHx8IChUUkVFX0NPREUgKFRSRUVfVFlQRSAoVFJFRV9WQUxVRSAoYXJnbGlzdCkp
KSAhPSBQT0lOVEVSX1RZUEUpCiAgICAgIHx8IChUUkVFX0NIQUlOIChhcmdsaXN0KSA9PSAw
KQogICAgICB8fCAoVFJFRV9DT0RFIChUUkVFX1RZUEUgKFRSRUVfVkFMVUUgKFRSRUVfQ0hB
SU4gKGFyZ2xpc3QpKSkpICE9CgkgIFBPSU5URVJfVFlQRSkpCiAgICByZXR1cm4gMDsKCiAg
LyogQ2hlY2sgdGhlIHNwZWNpZmllciB2cy4gdGhlIHBhcmFtZXRlcnMuICAqLwogIGlmICgh
aXNfdmFsaWRfcHJpbnRmX2FyZ2xpc3QgKFRSRUVfQ0hBSU4gKGFyZ2xpc3QpKSkKICAgIHJl
dHVybiAwOwoKICBmb3JtYXRfYXJnID0gVFJFRV9WQUxVRSAoVFJFRV9DSEFJTiAoYXJnbGlz
dCkpOwogIHN0cmlwcGVkX3N0cmluZyA9IGZvcm1hdF9hcmc7CiAgU1RSSVBfTk9QUyAoc3Ry
aXBwZWRfc3RyaW5nKTsKICBpZiAoc3RyaXBwZWRfc3RyaW5nICYmIFRSRUVfQ09ERSAoc3Ry
aXBwZWRfc3RyaW5nKSA9PSBBRERSX0VYUFIpCiAgICBzdHJpcHBlZF9zdHJpbmcgPSBUUkVF
X09QRVJBTkQgKHN0cmlwcGVkX3N0cmluZywgMCk7CgogIC8qIElmIHRoZSBmb3JtYXQgc3Bl
Y2lmaWVyIGlzbid0IGEgU1RSSU5HX0NTVCwgcHVudC4gICovCiAgaWYgKFRSRUVfQ09ERSAo
c3RyaXBwZWRfc3RyaW5nKSAhPSBTVFJJTkdfQ1NUKQogICAgcmV0dXJuIDA7CgogIC8qIE9L
ISAgV2UgY2FuIGF0dGVtcHQgb3B0aW1pemF0aW9uLiAgKi8KCiAgLyogSWYgdGhlIGZvcm1h
dCBzcGVjaWZpZXIgd2FzICIlcyIsIGNhbGwgX19idWlsdGluX2ZwdXRzKGFyZzMsIGFyZzEp
LiAgKi8KICBpZiAoc3RyY21wIChUUkVFX1NUUklOR19QT0lOVEVSIChzdHJpcHBlZF9zdHJp
bmcpLCAiJXMiKSA9PSAwKQogICAgewogICAgICB0cmVlIG5ld2FyZ2xpc3QgPSBidWlsZF90
cmVlX2xpc3QgKE5VTExfVFJFRSwgVFJFRV9WQUxVRSAoYXJnbGlzdCkpOwogICAgICBhcmds
aXN0ID0gdHJlZV9jb25zIChOVUxMX1RSRUUsCgkJCSAgIFRSRUVfVkFMVUUgKFRSRUVfQ0hB
SU4gKFRSRUVfQ0hBSU4gKGFyZ2xpc3QpKSksCgkJCSAgIG5ld2FyZ2xpc3QpOwogICAgICBm
biA9IGZuX2ZwdXRzOwogICAgfQogIC8qIElmIHRoZSBmb3JtYXQgc3BlY2lmaWVyIHdhcyAi
JWMiLCBjYWxsIF9fYnVpbHRpbl9mcHV0YyAoYXJnMywgYXJnMSkuICAqLwogIGVsc2UgaWYg
KHN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRFUiAoc3RyaXBwZWRfc3RyaW5nKSwgIiVjIikg
PT0gMCkKICAgIHsKICAgICAgdHJlZSBuZXdhcmdsaXN0ID0gYnVpbGRfdHJlZV9saXN0IChO
VUxMX1RSRUUsIFRSRUVfVkFMVUUgKGFyZ2xpc3QpKTsKICAgICAgYXJnbGlzdCA9IHRyZWVf
Y29ucyAoTlVMTF9UUkVFLAoJCQkgICBUUkVFX1ZBTFVFIChUUkVFX0NIQUlOIChUUkVFX0NI
QUlOIChhcmdsaXN0KSkpLAoJCQkgICBuZXdhcmdsaXN0KTsKICAgICAgZm4gPSBmbl9mcHV0
YzsKICAgIH0KICBlbHNlCiAgICB7CiAgICAgIC8qIFdlIGNhbid0IGhhbmRsZSBhbnl0aGlu
ZyBlbHNlIHdpdGggJSBhcmdzIG9yICUlIC4uLiB5ZXQuICAqLwogICAgICBpZiAoc3RyY2hy
IChUUkVFX1NUUklOR19QT0lOVEVSIChzdHJpcHBlZF9zdHJpbmcpLCAnJScpKQoJcmV0dXJu
IDA7CgogICAgICAvKiBXaGVuICJzdHJpbmciIGRvZXNuJ3QgY29udGFpbiAlLCByZXBsYWNl
IGFsbCBjYXNlcyBvZgogICAgICAgICBmcHJpbnRmKHN0cmVhbSxzdHJpbmcpIHdpdGggZnB1
dHMoc3RyaW5nLHN0cmVhbSkuICBUaGUgZnB1dHMKICAgICAgICAgYnVpbHRpbiB3aWxsIHRh
a2UgdGFrZSBvZiBzcGVjaWFsIGNhc2VzIGxpa2UgbGVuZ3RoPT0xLiAgKi8KICAgICAgYXJn
bGlzdCA9IHRyZWVfY29ucyAoTlVMTF9UUkVFLCBUUkVFX1ZBTFVFIChUUkVFX0NIQUlOIChh
cmdsaXN0KSksCgkJCSAgIGJ1aWxkX3RyZWVfbGlzdCAoTlVMTF9UUkVFLCBUUkVFX1ZBTFVF
IChhcmdsaXN0KSkpOwogICAgICBmbiA9IGZuX2ZwdXRzOwogICAgfQoKICByZXR1cm4gZXhw
YW5kX2V4cHIgKGJ1aWxkX2Z1bmN0aW9uX2NhbGwgKGZuLCBhcmdsaXN0KSwKCQkgICAgICAo
aWdub3JlID8gY29uc3QwX3J0eCA6IHRhcmdldCksCgkJICAgICAgdG1vZGUsIG1vZGlmaWVy
KTsKfQoMCgovKiBHaXZlbiBhIGJvb2xlYW4gZXhwcmVzc2lvbiBBUkcsIHJldHVybiBhIHRy
ZWUgcmVwcmVzZW50aW5nIGFuIGluY3JlbWVudAogICBvciBkZWNyZW1lbnQgKGFzIGluZGlj
YXRlZCBieSBDT0RFKSBvZiBBUkcuICBUaGUgZnJvbnQgZW5kIG11c3QgY2hlY2sgZm9yCiAg
IGludmFsaWQgY2FzZXMgKGUuZy4sIGRlY3JlbWVudCBpbiBDKyspLiAgKi8KdHJlZQpib29s
ZWFuX2luY3JlbWVudCAoZW51bSB0cmVlX2NvZGUgY29kZSwgdHJlZSBhcmcpCnsKICB0cmVl
IHZhbDsKICB0cmVlIHRydWVfcmVzID0gKGNfZGlhbGVjdF9jeHggKCkgPyBib29sZWFuX3Ry
dWVfbm9kZSA6IGNfYm9vbF90cnVlX25vZGUpOwoKICBhcmcgPSBzdGFiaWxpemVfcmVmZXJl
bmNlIChhcmcpOwogIHN3aXRjaCAoY29kZSkKICAgIHsKICAgIGNhc2UgUFJFSU5DUkVNRU5U
X0VYUFI6CiAgICAgIHZhbCA9IGJ1aWxkIChNT0RJRllfRVhQUiwgVFJFRV9UWVBFIChhcmcp
LCBhcmcsIHRydWVfcmVzKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIFBPU1RJTkNSRU1FTlRf
RVhQUjoKICAgICAgdmFsID0gYnVpbGQgKE1PRElGWV9FWFBSLCBUUkVFX1RZUEUgKGFyZyks
IGFyZywgdHJ1ZV9yZXMpOwogICAgICBhcmcgPSBzYXZlX2V4cHIgKGFyZyk7CiAgICAgIHZh
bCA9IGJ1aWxkIChDT01QT1VORF9FWFBSLCBUUkVFX1RZUEUgKGFyZyksIHZhbCwgYXJnKTsK
ICAgICAgdmFsID0gYnVpbGQgKENPTVBPVU5EX0VYUFIsIFRSRUVfVFlQRSAoYXJnKSwgYXJn
LCB2YWwpOwogICAgICBicmVhazsKICAgIGNhc2UgUFJFREVDUkVNRU5UX0VYUFI6CiAgICAg
IHZhbCA9IGJ1aWxkIChNT0RJRllfRVhQUiwgVFJFRV9UWVBFIChhcmcpLCBhcmcsIGludmVy
dF90cnV0aHZhbHVlIChhcmcpKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIFBPU1RERUNSRU1F
TlRfRVhQUjoKICAgICAgdmFsID0gYnVpbGQgKE1PRElGWV9FWFBSLCBUUkVFX1RZUEUgKGFy
ZyksIGFyZywgaW52ZXJ0X3RydXRodmFsdWUgKGFyZykpOwogICAgICBhcmcgPSBzYXZlX2V4
cHIgKGFyZyk7CiAgICAgIHZhbCA9IGJ1aWxkIChDT01QT1VORF9FWFBSLCBUUkVFX1RZUEUg
KGFyZyksIHZhbCwgYXJnKTsKICAgICAgdmFsID0gYnVpbGQgKENPTVBPVU5EX0VYUFIsIFRS
RUVfVFlQRSAoYXJnKSwgYXJnLCB2YWwpOwogICAgICBicmVhazsKICAgIGRlZmF1bHQ6CiAg
ICAgIGFib3J0ICgpOwogICAgfQogIFRSRUVfU0lERV9FRkZFQ1RTICh2YWwpID0gMTsKICBy
ZXR1cm4gdmFsOwp9CgwKLyogQnVpbHQtaW4gbWFjcm9zIGZvciBzdGRkZWYuaCwgdGhhdCBy
ZXF1aXJlIG1hY3JvcyBkZWZpbmVkIGluIHRoaXMKICAgZmlsZS4gICovCnZvaWQKY19zdGRk
ZWZfY3BwX2J1aWx0aW5zKHZvaWQpCnsKICBidWlsdGluX2RlZmluZV93aXRoX3ZhbHVlICgi
X19TSVpFX1RZUEVfXyIsIFNJWkVfVFlQRSwgMCk7CiAgYnVpbHRpbl9kZWZpbmVfd2l0aF92
YWx1ZSAoIl9fUFRSRElGRl9UWVBFX18iLCBQVFJESUZGX1RZUEUsIDApOwogIGJ1aWx0aW5f
ZGVmaW5lX3dpdGhfdmFsdWUgKCJfX1dDSEFSX1RZUEVfXyIsIE1PRElGSUVEX1dDSEFSX1RZ
UEUsIDApOwogIGJ1aWx0aW5fZGVmaW5lX3dpdGhfdmFsdWUgKCJfX1dJTlRfVFlQRV9fIiwg
V0lOVF9UWVBFLCAwKTsKfQoKc3RhdGljIHZvaWQKY19pbml0X2F0dHJpYnV0ZXMgKHZvaWQp
CnsKICAvKiBGaWxsIGluIHRoZSBidWlsdF9pbl9hdHRyaWJ1dGVzIGFycmF5LiAgKi8KI2Rl
ZmluZSBERUZfQVRUUl9OVUxMX1RSRUUoRU5VTSkJCVwKICBidWlsdF9pbl9hdHRyaWJ1dGVz
WyhpbnQpIEVOVU1dID0gTlVMTF9UUkVFOwojZGVmaW5lIERFRl9BVFRSX0lOVChFTlVNLCBW
QUxVRSkJCQkJCSAgICAgXAogIGJ1aWx0X2luX2F0dHJpYnV0ZXNbKGludCkgRU5VTV0gPSBi
dWlsZF9pbnRfMiAoVkFMVUUsIFZBTFVFIDwgMCA/IC0xIDogMCk7CiNkZWZpbmUgREVGX0FU
VFJfSURFTlQoRU5VTSwgU1RSSU5HKQkJCQlcCiAgYnVpbHRfaW5fYXR0cmlidXRlc1soaW50
KSBFTlVNXSA9IGdldF9pZGVudGlmaWVyIChTVFJJTkcpOwojZGVmaW5lIERFRl9BVFRSX1RS
RUVfTElTVChFTlVNLCBQVVJQT1NFLCBWQUxVRSwgQ0hBSU4pCVwKICBidWlsdF9pbl9hdHRy
aWJ1dGVzWyhpbnQpIEVOVU1dCQkJXAogICAgPSB0cmVlX2NvbnMgKGJ1aWx0X2luX2F0dHJp
YnV0ZXNbKGludCkgUFVSUE9TRV0sCVwKCQkgYnVpbHRfaW5fYXR0cmlidXRlc1soaW50KSBW
QUxVRV0sCVwKCQkgYnVpbHRfaW5fYXR0cmlidXRlc1soaW50KSBDSEFJTl0pOwojZGVmaW5l
IERFRl9GTl9BVFRSKE5BTUUsIEFUVFJTLCBQUkVESUNBVEUpIC8qIE5vIGluaXRpYWxpemF0
aW9uIG5lZWRlZC4gICovCiNpbmNsdWRlICJidWlsdGluLWF0dHJzLmRlZiIKI3VuZGVmIERF
Rl9BVFRSX05VTExfVFJFRQojdW5kZWYgREVGX0FUVFJfSU5UCiN1bmRlZiBERUZfQVRUUl9J
REVOVAojdW5kZWYgREVGX0FUVFJfVFJFRV9MSVNUCiN1bmRlZiBERUZfRk5fQVRUUgogIGNf
YXR0cnNfaW5pdGlhbGl6ZWQgPSB0cnVlOwp9CgovKiBEZXBlbmRpbmcgb24gdGhlIG5hbWUg
b2YgREVDTCwgYXBwbHkgZGVmYXVsdCBhdHRyaWJ1dGVzIHRvIGl0LiAgKi8KCnZvaWQKY19j
b21tb25faW5zZXJ0X2RlZmF1bHRfYXR0cmlidXRlcyAodHJlZSBkZWNsKQp7CiAgdHJlZSBu
YW1lID0gREVDTF9OQU1FIChkZWNsKTsKCiAgaWYgKCFjX2F0dHJzX2luaXRpYWxpemVkKQog
ICAgY19pbml0X2F0dHJpYnV0ZXMgKCk7CgojZGVmaW5lIERFRl9BVFRSX05VTExfVFJFRShF
TlVNKSAvKiBOb3RoaW5nIG5lZWRlZCBhZnRlciBpbml0aWFsaXphdGlvbi4gICovCiNkZWZp
bmUgREVGX0FUVFJfSU5UKEVOVU0sIFZBTFVFKQojZGVmaW5lIERFRl9BVFRSX0lERU5UKEVO
VU0sIFNUUklORykKI2RlZmluZSBERUZfQVRUUl9UUkVFX0xJU1QoRU5VTSwgUFVSUE9TRSwg
VkFMVUUsIENIQUlOKQojZGVmaW5lIERFRl9GTl9BVFRSKE5BTUUsIEFUVFJTLCBQUkVESUNB
VEUpCQkJXAogIGlmICgoUFJFRElDQVRFKSAmJiBuYW1lID09IGJ1aWx0X2luX2F0dHJpYnV0
ZXNbKGludCkgTkFNRV0pCVwKICAgIGRlY2xfYXR0cmlidXRlcyAoJmRlY2wsIGJ1aWx0X2lu
X2F0dHJpYnV0ZXNbKGludCkgQVRUUlNdLAlcCgkJICAgICBBVFRSX0ZMQUdfQlVJTFRfSU4p
OwojaW5jbHVkZSAiYnVpbHRpbi1hdHRycy5kZWYiCiN1bmRlZiBERUZfQVRUUl9OVUxMX1RS
RUUKI3VuZGVmIERFRl9BVFRSX0lOVAojdW5kZWYgREVGX0FUVFJfSURFTlQKI3VuZGVmIERF
Rl9BVFRSX1RSRUVfTElTVAojdW5kZWYgREVGX0ZOX0FUVFIKfQoKLyogT3V0cHV0IGEgLVdz
aGFkb3cgd2FybmluZyBNU0dDT0RFIGFib3V0IE5BTUUsIGFuZCBnaXZlIHRoZSBsb2NhdGlv
bgogICBvZiB0aGUgcHJldmlvdXMgZGVjbGFyYXRpb24gREVDTC4gICovCnZvaWQKc2hhZG93
X3dhcm5pbmcgKGVudW0gc3dfa2luZCBtc2djb2RlLCBjb25zdCBjaGFyICpuYW1lLCB0cmVl
IGRlY2wpCnsKICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgbXNnc1tdID0gewogICAgLyog
U1dfUEFSQU0gICovIE5fKCJkZWNsYXJhdGlvbiBvZiBcIiVzXCIgc2hhZG93cyBhIHBhcmFt
ZXRlciIpLAogICAgLyogU1dfTE9DQUwgICovIE5fKCJkZWNsYXJhdGlvbiBvZiBcIiVzXCIg
c2hhZG93cyBhIHByZXZpb3VzIGxvY2FsIiksCiAgICAvKiBTV19HTE9CQUwgKi8gTl8oImRl
Y2xhcmF0aW9uIG9mIFwiJXNcIiBzaGFkb3dzIGEgZ2xvYmFsIGRlY2xhcmF0aW9uIikKICB9
OwoKICB3YXJuaW5nIChtc2dzW21zZ2NvZGVdLCBuYW1lKTsKICB3YXJuaW5nICgiJUhzaGFk
b3dlZCBkZWNsYXJhdGlvbiBpcyBoZXJlIiwgJkRFQ0xfU09VUkNFX0xPQ0FUSU9OIChkZWNs
KSk7Cn0KCi8qIEF0dHJpYnV0ZSBoYW5kbGVycyBjb21tb24gdG8gQyBmcm9udCBlbmRzLiAg
Ki8KCi8qIEhhbmRsZSBhICJwYWNrZWQiIGF0dHJpYnV0ZTsgYXJndW1lbnRzIGFzIGluCiAg
IHN0cnVjdCBhdHRyaWJ1dGVfc3BlYy5oYW5kbGVyLiAgKi8KCnN0YXRpYyB0cmVlCmhhbmRs
ZV9wYWNrZWRfYXR0cmlidXRlICh0cmVlICpub2RlLCB0cmVlIG5hbWUsIHRyZWUgYXJncyAg
QVRUUklCVVRFX1VOVVNFRCwKCQkJIGludCBmbGFncywgYm9vbCAqbm9fYWRkX2F0dHJzKQp7
CiAgdHJlZSAqdHlwZSA9IE5VTEw7CiAgaWYgKERFQ0xfUCAoKm5vZGUpKQogICAgewogICAg
ICBpZiAoVFJFRV9DT0RFICgqbm9kZSkgPT0gVFlQRV9ERUNMKQoJdHlwZSA9ICZUUkVFX1RZ
UEUgKCpub2RlKTsKICAgIH0KICBlbHNlCiAgICB0eXBlID0gbm9kZTsKCiAgaWYgKHR5cGUp
CiAgICB7CiAgICAgIGlmICghKGZsYWdzICYgKGludCkgQVRUUl9GTEFHX1RZUEVfSU5fUExB
Q0UpKQoJKnR5cGUgPSBidWlsZF90eXBlX2NvcHkgKCp0eXBlKTsKICAgICAgVFlQRV9QQUNL
RUQgKCp0eXBlKSA9IDE7CiAgICB9CiAgZWxzZSBpZiAoVFJFRV9DT0RFICgqbm9kZSkgPT0g
RklFTERfREVDTCkKICAgIERFQ0xfUEFDS0VEICgqbm9kZSkgPSAxOwogIC8qIFdlIGNhbid0
IHNldCBERUNMX1BBQ0tFRCBmb3IgYSBWQVJfREVDTCwgYmVjYXVzZSB0aGUgYml0IGlzCiAg
ICAgdXNlZCBmb3IgREVDTF9SRUdJU1RFUi4gIEl0IHdvdWxkbid0IG1lYW4gYW55dGhpbmcg
YW55d2F5LiAgKi8KICBlbHNlCiAgICB7CiAgICAgIHdhcm5pbmcgKCJgJXMnIGF0dHJpYnV0
ZSBpZ25vcmVkIiwgSURFTlRJRklFUl9QT0lOVEVSIChuYW1lKSk7CiAgICAgICpub19hZGRf
YXR0cnMgPSB0cnVlOwogICAgfQoKICByZXR1cm4gTlVMTF9UUkVFOwp9CgovKiBIYW5kbGUg
YSAibm9jb21tb24iIGF0dHJpYnV0ZTsgYXJndW1lbnRzIGFzIGluCiAgIHN0cnVjdCBhdHRy
aWJ1dGVfc3BlYy5oYW5kbGVyLiAgKi8KCnN0YXRpYyB0cmVlCmhhbmRsZV9ub2NvbW1vbl9h
dHRyaWJ1dGUgKHRyZWUgKm5vZGUsIHRyZWUgbmFtZSwKCQkJICAgdHJlZSBhcmdzIEFUVFJJ
QlVURV9VTlVTRUQsCgkJCSAgIGludCBmbGFncyBBVFRSSUJVVEVfVU5VU0VELCBib29sICpu
b19hZGRfYXR0cnMpCnsKICBpZiAoVFJFRV9DT0RFICgqbm9kZSkgPT0gVkFSX0RFQ0wpCiAg
ICBERUNMX0NPTU1PTiAoKm5vZGUpID0gMDsKICBlbHNlCiAgICB7CiAgICAgIHdhcm5pbmcg
KCJgJXMnIGF0dHJpYnV0ZSBpZ25vcmVkIiwgSURFTlRJRklFUl9QT0lOVEVSIChuYW1lKSk7
CiAgICAgICpub19hZGRfYXR0cnMgPSB0cnVlOwogICAgfQoKICByZXR1cm4gTlVMTF9UUkVF
Owp9CgovKiBIYW5kbGUgYSAiY29tbW9uIiBhdHRyaWJ1dGU7IGFyZ3VtZW50cyBhcyBpbgog
ICBzdHJ1Y3QgYXR0cmlidXRlX3NwZWMuaGFuZGxlci4gICovCgpzdGF0aWMgdHJlZQpoYW5k
bGVfY29tbW9uX2F0dHJpYnV0ZSAodHJlZSAqbm9kZSwgdHJlZSBuYW1lLCB0cmVlIGFyZ3Mg
QVRUUklCVVRFX1VOVVNFRCwKCQkJIGludCBmbGFncyBBVFRSSUJVVEVfVU5VU0VELCBib29s
ICpub19hZGRfYXR0cnMpCnsKICBpZiAoVFJFRV9DT0RFICgqbm9kZSkgPT0gVkFSX0RFQ0wp
CiAgICBERUNMX0NPTU1PTiAoKm5vZGUpID0gMTsKICBlbHNlCiAgICB7CiAgICAgIHdhcm5p
bmcgKCJgJXMnIGF0dHJpYnV0ZSBpZ25vcmVkIiwgSURFTlRJRklFUl9QT0lOVEVSIChuYW1l
KSk7CiAgICAgICpub19hZGRfYXR0cnMgPSB0cnVlOwogICAgfQoKICByZXR1cm4gTlVMTF9U
UkVFOwp9CgovKiBIYW5kbGUgYSAibm9yZXR1cm4iIGF0dHJpYnV0ZTsgYXJndW1lbnRzIGFz
IGluCiAgIHN0cnVjdCBhdHRyaWJ1dGVfc3BlYy5oYW5kbGVyLiAgKi8KCnN0YXRpYyB0cmVl
CmhhbmRsZV9ub3JldHVybl9hdHRyaWJ1dGUgKHRyZWUgKm5vZGUsIHRyZWUgbmFtZSwgdHJl
ZSBhcmdzIEFUVFJJQlVURV9VTlVTRUQsCgkJCSAgIGludCBmbGFncyBBVFRSSUJVVEVfVU5V
U0VELCBib29sICpub19hZGRfYXR0cnMpCnsKICB0cmVlIHR5cGUgPSBUUkVFX1RZUEUgKCpu
b2RlKTsKCiAgLyogU2VlIEZJWE1FIGNvbW1lbnQgaW4gY19jb21tb25fYXR0cmlidXRlX3Rh
YmxlLiAgKi8KICBpZiAoVFJFRV9DT0RFICgqbm9kZSkgPT0gRlVOQ1RJT05fREVDTCkKICAg
IFRSRUVfVEhJU19WT0xBVElMRSAoKm5vZGUpID0gMTsKICBlbHNlIGlmIChUUkVFX0NPREUg
KHR5cGUpID09IFBPSU5URVJfVFlQRQoJICAgJiYgVFJFRV9DT0RFIChUUkVFX1RZUEUgKHR5
cGUpKSA9PSBGVU5DVElPTl9UWVBFKQogICAgVFJFRV9UWVBFICgqbm9kZSkKICAgICAgPSBi
dWlsZF9wb2ludGVyX3R5cGUKCShidWlsZF90eXBlX3ZhcmlhbnQgKFRSRUVfVFlQRSAodHlw
ZSksCgkJCSAgICAgVFJFRV9SRUFET05MWSAoVFJFRV9UWVBFICh0eXBlKSksIDEpKTsKICBl
bHNlCiAgICB7CiAgICAgIHdhcm5pbmcgKCJgJXMnIGF0dHJpYnV0ZSBpZ25vcmVkIiwgSURF
TlRJRklFUl9QT0lOVEVSIChuYW1lKSk7CiAgICAgICpub19hZGRfYXR0cnMgPSB0cnVlOwog
ICAgfQoKICByZXR1cm4gTlVMTF9UUkVFOwp9CgovKiBIYW5kbGUgYSAibm9pbmxpbmUiIGF0
dHJpYnV0ZTsgYXJndW1lbnRzIGFzIGluCiAgIHN0cnVjdCBhdHRyaWJ1dGVfc3BlYy5oYW5k
bGVyLiAgKi8KCnN0YXRpYyB0cmVlCmhhbmRsZV9ub2lubGluZV9hdHRyaWJ1dGUgKHRyZWUg
Km5vZGUsIHRyZWUgbmFtZSwKCQkJICAgdHJlZSBhcmdzIEFUVFJJQlVURV9VTlVTRUQsCgkJ
CSAgIGludCBmbGFncyBBVFRSSUJVVEVfVU5VU0VELCBib29sICpub19hZGRfYXR0cnMpCnsK
ICBpZiAoVFJFRV9DT0RFICgqbm9kZSkgPT0gRlVOQ1RJT05fREVDTCkKICAgIERFQ0xfVU5J
TkxJTkFCTEUgKCpub2RlKSA9IDE7CiAgZWxzZQogICAgewogICAgICB3YXJuaW5nICgiYCVz
JyBhdHRyaWJ1dGUgaWdub3JlZCIsIElERU5USUZJRVJfUE9JTlRFUiAobmFtZSkpOwogICAg
ICAqbm9fYWRkX2F0dHJzID0gdHJ1ZTsKICAgIH0KCiAgcmV0dXJuIE5VTExfVFJFRTsKfQoK
LyogSGFuZGxlIGEgImFsd2F5c19pbmxpbmUiIGF0dHJpYnV0ZTsgYXJndW1lbnRzIGFzIGlu
CiAgIHN0cnVjdCBhdHRyaWJ1dGVfc3BlYy5oYW5kbGVyLiAgKi8KCnN0YXRpYyB0cmVlCmhh
bmRsZV9hbHdheXNfaW5saW5lX2F0dHJpYnV0ZSAodHJlZSAqbm9kZSwgdHJlZSBuYW1lLAoJ
CQkJdHJlZSBhcmdzIEFUVFJJQlVURV9VTlVTRUQsCgkJCQlpbnQgZmxhZ3MgQVRUUklCVVRF
X1VOVVNFRCwKCQkJCWJvb2wgKm5vX2FkZF9hdHRycykKewogIGlmIChUUkVFX0NPREUgKCpu
b2RlKSA9PSBGVU5DVElPTl9ERUNMKQogICAgewogICAgICAvKiBEbyBub3RoaW5nIGVsc2Us
IGp1c3Qgc2V0IHRoZSBhdHRyaWJ1dGUuICBXZSdsbCBnZXQgYXQKCSBpdCBsYXRlciB3aXRo
IGxvb2t1cF9hdHRyaWJ1dGUuICAqLwogICAgfQogIGVsc2UKICAgIHsKICAgICAgd2Fybmlu
ZyAoImAlcycgYXR0cmlidXRlIGlnbm9yZWQiLCBJREVOVElGSUVSX1BPSU5URVIgKG5hbWUp
KTsKICAgICAgKm5vX2FkZF9hdHRycyA9IHRydWU7CiAgICB9CgogIHJldHVybiBOVUxMX1RS
RUU7Cn0KCi8qIEhhbmRsZSBhICJ1c2VkIiBhdHRyaWJ1dGU7IGFyZ3VtZW50cyBhcyBpbgog
ICBzdHJ1Y3QgYXR0cmlidXRlX3NwZWMuaGFuZGxlci4gICovCgpzdGF0aWMgdHJlZQpoYW5k
bGVfdXNlZF9hdHRyaWJ1dGUgKHRyZWUgKnBub2RlLCB0cmVlIG5hbWUsIHRyZWUgYXJncyBB
VFRSSUJVVEVfVU5VU0VELAoJCSAgICAgICBpbnQgZmxhZ3MgQVRUUklCVVRFX1VOVVNFRCwg
Ym9vbCAqbm9fYWRkX2F0dHJzKQp7CiAgdHJlZSBub2RlID0gKnBub2RlOwoKICBpZiAoVFJF
RV9DT0RFIChub2RlKSA9PSBGVU5DVElPTl9ERUNMCiAgICAgIHx8IChUUkVFX0NPREUgKG5v
ZGUpID09IFZBUl9ERUNMICYmIFRSRUVfU1RBVElDIChub2RlKSkpCiAgICB7CiAgICAgIG1h
cmtfcmVmZXJlbmNlZCAoREVDTF9BU1NFTUJMRVJfTkFNRSAobm9kZSkpOwogICAgICBUUkVF
X1VTRUQgKG5vZGUpID0gMTsKICAgIH0KICBlbHNlCiAgICB7CiAgICAgIHdhcm5pbmcgKCJg
JXMnIGF0dHJpYnV0ZSBpZ25vcmVkIiwgSURFTlRJRklFUl9QT0lOVEVSIChuYW1lKSk7CiAg
ICAgICpub19hZGRfYXR0cnMgPSB0cnVlOwogICAgfQoKICByZXR1cm4gTlVMTF9UUkVFOwp9
CgovKiBIYW5kbGUgYSAidW51c2VkIiBhdHRyaWJ1dGU7IGFyZ3VtZW50cyBhcyBpbgogICBz
dHJ1Y3QgYXR0cmlidXRlX3NwZWMuaGFuZGxlci4gICovCgpzdGF0aWMgdHJlZQpoYW5kbGVf
dW51c2VkX2F0dHJpYnV0ZSAodHJlZSAqbm9kZSwgdHJlZSBuYW1lLCB0cmVlIGFyZ3MgQVRU
UklCVVRFX1VOVVNFRCwKCQkJIGludCBmbGFncyBBVFRSSUJVVEVfVU5VU0VELCBib29sICpu
b19hZGRfYXR0cnMpCnsKICBpZiAoREVDTF9QICgqbm9kZSkpCiAgICB7CiAgICAgIHRyZWUg
ZGVjbCA9ICpub2RlOwoKICAgICAgaWYgKFRSRUVfQ09ERSAoZGVjbCkgPT0gUEFSTV9ERUNM
CgkgIHx8IFRSRUVfQ09ERSAoZGVjbCkgPT0gVkFSX0RFQ0wKCSAgfHwgVFJFRV9DT0RFIChk
ZWNsKSA9PSBGVU5DVElPTl9ERUNMCgkgIHx8IFRSRUVfQ09ERSAoZGVjbCkgPT0gTEFCRUxf
REVDTAoJICB8fCBUUkVFX0NPREUgKGRlY2wpID09IFRZUEVfREVDTCkKCVRSRUVfVVNFRCAo
ZGVjbCkgPSAxOwogICAgICBlbHNlCgl7CgkgIHdhcm5pbmcgKCJgJXMnIGF0dHJpYnV0ZSBp
Z25vcmVkIiwgSURFTlRJRklFUl9QT0lOVEVSIChuYW1lKSk7CgkgICpub19hZGRfYXR0cnMg
PSB0cnVlOwoJfQogICAgfQogIGVsc2UKICAgIHsKICAgICAgaWYgKCEoZmxhZ3MgJiAoaW50
KSBBVFRSX0ZMQUdfVFlQRV9JTl9QTEFDRSkpCgkqbm9kZSA9IGJ1aWxkX3R5cGVfY29weSAo
Km5vZGUpOwogICAgICBUUkVFX1VTRUQgKCpub2RlKSA9IDE7CiAgICB9CgogIHJldHVybiBO
VUxMX1RSRUU7Cn0KCi8qIEhhbmRsZSBhICJjb25zdCIgYXR0cmlidXRlOyBhcmd1bWVudHMg
YXMgaW4KICAgc3RydWN0IGF0dHJpYnV0ZV9zcGVjLmhhbmRsZXIuICAqLwoKc3RhdGljIHRy
ZWUKaGFuZGxlX2NvbnN0X2F0dHJpYnV0ZSAodHJlZSAqbm9kZSwgdHJlZSBuYW1lLCB0cmVl
IGFyZ3MgQVRUUklCVVRFX1VOVVNFRCwKCQkJaW50IGZsYWdzIEFUVFJJQlVURV9VTlVTRUQs
IGJvb2wgKm5vX2FkZF9hdHRycykKewogIHRyZWUgdHlwZSA9IFRSRUVfVFlQRSAoKm5vZGUp
OwoKICAvKiBTZWUgRklYTUUgY29tbWVudCBvbiBub3JldHVybiBpbiBjX2NvbW1vbl9hdHRy
aWJ1dGVfdGFibGUuICAqLwogIGlmIChUUkVFX0NPREUgKCpub2RlKSA9PSBGVU5DVElPTl9E
RUNMKQogICAgVFJFRV9SRUFET05MWSAoKm5vZGUpID0gMTsKICBlbHNlIGlmIChUUkVFX0NP
REUgKHR5cGUpID09IFBPSU5URVJfVFlQRQoJICAgJiYgVFJFRV9DT0RFIChUUkVFX1RZUEUg
KHR5cGUpKSA9PSBGVU5DVElPTl9UWVBFKQogICAgVFJFRV9UWVBFICgqbm9kZSkKICAgICAg
PSBidWlsZF9wb2ludGVyX3R5cGUKCShidWlsZF90eXBlX3ZhcmlhbnQgKFRSRUVfVFlQRSAo
dHlwZSksIDEsCgkJCSAgICAgVFJFRV9USElTX1ZPTEFUSUxFIChUUkVFX1RZUEUgKHR5cGUp
KSkpOwogIGVsc2UKICAgIHsKICAgICAgd2FybmluZyAoImAlcycgYXR0cmlidXRlIGlnbm9y
ZWQiLCBJREVOVElGSUVSX1BPSU5URVIgKG5hbWUpKTsKICAgICAgKm5vX2FkZF9hdHRycyA9
IHRydWU7CiAgICB9CgogIHJldHVybiBOVUxMX1RSRUU7Cn0KCi8qIEhhbmRsZSBhICJ0cmFu
c3BhcmVudF91bmlvbiIgYXR0cmlidXRlOyBhcmd1bWVudHMgYXMgaW4KICAgc3RydWN0IGF0
dHJpYnV0ZV9zcGVjLmhhbmRsZXIuICAqLwoKc3RhdGljIHRyZWUKaGFuZGxlX3RyYW5zcGFy
ZW50X3VuaW9uX2F0dHJpYnV0ZSAodHJlZSAqbm9kZSwgdHJlZSBuYW1lLAoJCQkJICAgIHRy
ZWUgYXJncyBBVFRSSUJVVEVfVU5VU0VELCBpbnQgZmxhZ3MsCgkJCQkgICAgYm9vbCAqbm9f
YWRkX2F0dHJzKQp7CiAgdHJlZSBkZWNsID0gTlVMTF9UUkVFOwogIHRyZWUgKnR5cGUgPSBO
VUxMOwogIGludCBpc190eXBlID0gMDsKCiAgaWYgKERFQ0xfUCAoKm5vZGUpKQogICAgewog
ICAgICBkZWNsID0gKm5vZGU7CiAgICAgIHR5cGUgPSAmVFJFRV9UWVBFIChkZWNsKTsKICAg
ICAgaXNfdHlwZSA9IFRSRUVfQ09ERSAoKm5vZGUpID09IFRZUEVfREVDTDsKICAgIH0KICBl
bHNlIGlmIChUWVBFX1AgKCpub2RlKSkKICAgIHR5cGUgPSBub2RlLCBpc190eXBlID0gMTsK
CiAgaWYgKGlzX3R5cGUKICAgICAgJiYgVFJFRV9DT0RFICgqdHlwZSkgPT0gVU5JT05fVFlQ
RQogICAgICAmJiAoZGVjbCA9PSAwCgkgIHx8IChUWVBFX0ZJRUxEUyAoKnR5cGUpICE9IDAK
CSAgICAgICYmIFRZUEVfTU9ERSAoKnR5cGUpID09IERFQ0xfTU9ERSAoVFlQRV9GSUVMRFMg
KCp0eXBlKSkpKSkKICAgIHsKICAgICAgaWYgKCEoZmxhZ3MgJiAoaW50KSBBVFRSX0ZMQUdf
VFlQRV9JTl9QTEFDRSkpCgkqdHlwZSA9IGJ1aWxkX3R5cGVfY29weSAoKnR5cGUpOwogICAg
ICBUWVBFX1RSQU5TUEFSRU5UX1VOSU9OICgqdHlwZSkgPSAxOwogICAgfQogIGVsc2UgaWYg
KGRlY2wgIT0gMCAmJiBUUkVFX0NPREUgKGRlY2wpID09IFBBUk1fREVDTAoJICAgJiYgVFJF
RV9DT0RFICgqdHlwZSkgPT0gVU5JT05fVFlQRQoJICAgJiYgVFlQRV9NT0RFICgqdHlwZSkg
PT0gREVDTF9NT0RFIChUWVBFX0ZJRUxEUyAoKnR5cGUpKSkKICAgIERFQ0xfVFJBTlNQQVJF
TlRfVU5JT04gKGRlY2wpID0gMTsKICBlbHNlCiAgICB7CiAgICAgIHdhcm5pbmcgKCJgJXMn
IGF0dHJpYnV0ZSBpZ25vcmVkIiwgSURFTlRJRklFUl9QT0lOVEVSIChuYW1lKSk7CiAgICAg
ICpub19hZGRfYXR0cnMgPSB0cnVlOwogICAgfQoKICByZXR1cm4gTlVMTF9UUkVFOwp9Cgov
KiBIYW5kbGUgYSAiY29uc3RydWN0b3IiIGF0dHJpYnV0ZTsgYXJndW1lbnRzIGFzIGluCiAg
IHN0cnVjdCBhdHRyaWJ1dGVfc3BlYy5oYW5kbGVyLiAgKi8KCnN0YXRpYyB0cmVlCmhhbmRs
ZV9jb25zdHJ1Y3Rvcl9hdHRyaWJ1dGUgKHRyZWUgKm5vZGUsIHRyZWUgbmFtZSwKCQkJICAg
ICAgdHJlZSBhcmdzIEFUVFJJQlVURV9VTlVTRUQsCgkJCSAgICAgIGludCBmbGFncyBBVFRS
SUJVVEVfVU5VU0VELAoJCQkgICAgICBib29sICpub19hZGRfYXR0cnMpCnsKICB0cmVlIGRl
Y2wgPSAqbm9kZTsKICB0cmVlIHR5cGUgPSBUUkVFX1RZUEUgKGRlY2wpOwoKICBpZiAoVFJF
RV9DT0RFIChkZWNsKSA9PSBGVU5DVElPTl9ERUNMCiAgICAgICYmIFRSRUVfQ09ERSAodHlw
ZSkgPT0gRlVOQ1RJT05fVFlQRQogICAgICAmJiBkZWNsX2Z1bmN0aW9uX2NvbnRleHQgKGRl
Y2wpID09IDApCiAgICB7CiAgICAgIERFQ0xfU1RBVElDX0NPTlNUUlVDVE9SIChkZWNsKSA9
IDE7CiAgICAgIFRSRUVfVVNFRCAoZGVjbCkgPSAxOwogICAgfQogIGVsc2UKICAgIHsKICAg
ICAgd2FybmluZyAoImAlcycgYXR0cmlidXRlIGlnbm9yZWQiLCBJREVOVElGSUVSX1BPSU5U
RVIgKG5hbWUpKTsKICAgICAgKm5vX2FkZF9hdHRycyA9IHRydWU7CiAgICB9CgogIHJldHVy
biBOVUxMX1RSRUU7Cn0KCi8qIEhhbmRsZSBhICJkZXN0cnVjdG9yIiBhdHRyaWJ1dGU7IGFy
Z3VtZW50cyBhcyBpbgogICBzdHJ1Y3QgYXR0cmlidXRlX3NwZWMuaGFuZGxlci4gICovCgpz
dGF0aWMgdHJlZQpoYW5kbGVfZGVzdHJ1Y3Rvcl9hdHRyaWJ1dGUgKHRyZWUgKm5vZGUsIHRy
ZWUgbmFtZSwKCQkJICAgICB0cmVlIGFyZ3MgQVRUUklCVVRFX1VOVVNFRCwKCQkJICAgICBp
bnQgZmxhZ3MgQVRUUklCVVRFX1VOVVNFRCwKCQkJICAgICBib29sICpub19hZGRfYXR0cnMp
CnsKICB0cmVlIGRlY2wgPSAqbm9kZTsKICB0cmVlIHR5cGUgPSBUUkVFX1RZUEUgKGRlY2wp
OwoKICBpZiAoVFJFRV9DT0RFIChkZWNsKSA9PSBGVU5DVElPTl9ERUNMCiAgICAgICYmIFRS
RUVfQ09ERSAodHlwZSkgPT0gRlVOQ1RJT05fVFlQRQogICAgICAmJiBkZWNsX2Z1bmN0aW9u
X2NvbnRleHQgKGRlY2wpID09IDApCiAgICB7CiAgICAgIERFQ0xfU1RBVElDX0RFU1RSVUNU
T1IgKGRlY2wpID0gMTsKICAgICAgVFJFRV9VU0VEIChkZWNsKSA9IDE7CiAgICB9CiAgZWxz
ZQogICAgewogICAgICB3YXJuaW5nICgiYCVzJyBhdHRyaWJ1dGUgaWdub3JlZCIsIElERU5U
SUZJRVJfUE9JTlRFUiAobmFtZSkpOwogICAgICAqbm9fYWRkX2F0dHJzID0gdHJ1ZTsKICAg
IH0KCiAgcmV0dXJuIE5VTExfVFJFRTsKfQoKLyogSGFuZGxlIGEgIm1vZGUiIGF0dHJpYnV0
ZTsgYXJndW1lbnRzIGFzIGluCiAgIHN0cnVjdCBhdHRyaWJ1dGVfc3BlYy5oYW5kbGVyLiAg
Ki8KCnN0YXRpYyB0cmVlCmhhbmRsZV9tb2RlX2F0dHJpYnV0ZSAodHJlZSAqbm9kZSwgdHJl
ZSBuYW1lLCB0cmVlIGFyZ3MgQVRUUklCVVRFX1VOVVNFRCwKCQkgICAgICAgaW50IGZsYWdz
IEFUVFJJQlVURV9VTlVTRUQsIGJvb2wgKm5vX2FkZF9hdHRycykKewogIHRyZWUgdHlwZSA9
ICpub2RlOwoKICAqbm9fYWRkX2F0dHJzID0gdHJ1ZTsKCiAgaWYgKFRSRUVfQ09ERSAoVFJF
RV9WQUxVRSAoYXJncykpICE9IElERU5USUZJRVJfTk9ERSkKICAgIHdhcm5pbmcgKCJgJXMn
IGF0dHJpYnV0ZSBpZ25vcmVkIiwgSURFTlRJRklFUl9QT0lOVEVSIChuYW1lKSk7CiAgZWxz
ZQogICAgewogICAgICBpbnQgajsKICAgICAgY29uc3QgY2hhciAqcCA9IElERU5USUZJRVJf
UE9JTlRFUiAoVFJFRV9WQUxVRSAoYXJncykpOwogICAgICBpbnQgbGVuID0gc3RybGVuIChw
KTsKICAgICAgZW51bSBtYWNoaW5lX21vZGUgbW9kZSA9IFZPSURtb2RlOwogICAgICB0cmVl
IHR5cGVmbTsKICAgICAgdHJlZSBwdHJfdHlwZTsKCiAgICAgIGlmIChsZW4gPiA0ICYmIHBb
MF0gPT0gJ18nICYmIHBbMV0gPT0gJ18nCgkgICYmIHBbbGVuIC0gMV0gPT0gJ18nICYmIHBb
bGVuIC0gMl0gPT0gJ18nKQoJewoJICBjaGFyICpuZXdwID0gKGNoYXIgKikgYWxsb2NhIChs
ZW4gLSAxKTsKCgkgIHN0cmNweSAobmV3cCwgJnBbMl0pOwoJICBuZXdwW2xlbiAtIDRdID0g
J1wwJzsKCSAgcCA9IG5ld3A7Cgl9CgogICAgICAvKiBDaGFuZ2UgdGhpcyB0eXBlIHRvIGhh
dmUgYSB0eXBlIHdpdGggdGhlIHNwZWNpZmllZCBtb2RlLgoJIEZpcnN0IGNoZWNrIGZvciB0
aGUgc3BlY2lhbCBtb2Rlcy4gICovCiAgICAgIGlmICghIHN0cmNtcCAocCwgImJ5dGUiKSkK
CW1vZGUgPSBieXRlX21vZGU7CiAgICAgIGVsc2UgaWYgKCFzdHJjbXAgKHAsICJ3b3JkIikp
Cgltb2RlID0gd29yZF9tb2RlOwogICAgICBlbHNlIGlmICghIHN0cmNtcCAocCwgInBvaW50
ZXIiKSkKCW1vZGUgPSBwdHJfbW9kZTsKICAgICAgZWxzZQoJZm9yIChqID0gMDsgaiA8IE5V
TV9NQUNISU5FX01PREVTOyBqKyspCgkgIGlmICghc3RyY21wIChwLCBHRVRfTU9ERV9OQU1F
IChqKSkpCgkgICAgbW9kZSA9IChlbnVtIG1hY2hpbmVfbW9kZSkgajsKCiAgICAgIGlmICht
b2RlID09IFZPSURtb2RlKQoJZXJyb3IgKCJ1bmtub3duIG1hY2hpbmUgbW9kZSBgJXMnIiwg
cCk7CiAgICAgIGVsc2UgaWYgKDAgPT0gKHR5cGVmbSA9ICgqbGFuZ19ob29rcy50eXBlcy50
eXBlX2Zvcl9tb2RlKQoJCSAgICAgKG1vZGUsIFRSRUVfVU5TSUdORUQgKHR5cGUpKSkpCgll
cnJvciAoIm5vIGRhdGEgdHlwZSBmb3IgbW9kZSBgJXMnIiwgcCk7CiAgICAgIGVsc2UgaWYg
KChUUkVFX0NPREUgKHR5cGUpID09IFBPSU5URVJfVFlQRQoJCXx8IFRSRUVfQ09ERSAodHlw
ZSkgPT0gUkVGRVJFTkNFX1RZUEUpCgkgICAgICAgJiYgISgqdGFyZ2V0bS52YWxpZF9wb2lu
dGVyX21vZGUpIChtb2RlKSkKCWVycm9yICgiaW52YWxpZCBwb2ludGVyIG1vZGUgYCVzJyIs
IHApOwogICAgICBlbHNlCgl7CgkgIC8qIElmIHRoaXMgaXMgYSB2ZWN0b3IsIG1ha2Ugc3Vy
ZSB3ZSBlaXRoZXIgaGF2ZSBoYXJkd2FyZQoJICAgICBzdXBwb3J0LCBvciB3ZSBjYW4gZW11
bGF0ZSBpdC4gICovCgkgIGlmIChWRUNUT1JfTU9ERV9QIChtb2RlKSAmJiAhdmVjdG9yX21v
ZGVfdmFsaWRfcCAobW9kZSkpCgkgICAgewoJICAgICAgZXJyb3IgKCJ1bmFibGUgdG8gZW11
bGF0ZSAnJXMnIiwgR0VUX01PREVfTkFNRSAobW9kZSkpOwoJICAgICAgcmV0dXJuIE5VTExf
VFJFRTsKCSAgICB9CgoJICBpZiAoVFJFRV9DT0RFICh0eXBlKSA9PSBQT0lOVEVSX1RZUEUp
CgkgICAgewoJICAgICAgcHRyX3R5cGUgPSBidWlsZF9wb2ludGVyX3R5cGVfZm9yX21vZGUg
KFRSRUVfVFlQRSAodHlwZSksCgkJCQkJCSAgICAgIG1vZGUpOwoJICAgICAgKm5vZGUgPSBw
dHJfdHlwZTsKCSAgICB9CgkgIGVsc2UgaWYgKFRSRUVfQ09ERSAodHlwZSkgPT0gUkVGRVJF
TkNFX1RZUEUpCgkgICAgewoJICAgICAgcHRyX3R5cGUgPSBidWlsZF9yZWZlcmVuY2VfdHlw
ZV9mb3JfbW9kZSAoVFJFRV9UWVBFICh0eXBlKSwKCQkJCQkJCW1vZGUpOwoJICAgICAgKm5v
ZGUgPSBwdHJfdHlwZTsKCSAgICB9CgkgIGVsc2UKCSAgKm5vZGUgPSB0eXBlZm07CgkgIC8q
IE5vIG5lZWQgdG8gbGF5b3V0IHRoZSB0eXBlIGhlcmUuICBUaGUgY2FsbGVyIHNob3VsZCBk
byB0aGlzLiAgKi8KCX0KICAgIH0KCiAgcmV0dXJuIE5VTExfVFJFRTsKfQoKLyogSGFuZGxl
IGEgInNlY3Rpb24iIGF0dHJpYnV0ZTsgYXJndW1lbnRzIGFzIGluCiAgIHN0cnVjdCBhdHRy
aWJ1dGVfc3BlYy5oYW5kbGVyLiAgKi8KCnN0YXRpYyB0cmVlCmhhbmRsZV9zZWN0aW9uX2F0
dHJpYnV0ZSAodHJlZSAqbm9kZSwgdHJlZSBuYW1lIEFUVFJJQlVURV9VTlVTRUQsIHRyZWUg
YXJncywKCQkJICBpbnQgZmxhZ3MgQVRUUklCVVRFX1VOVVNFRCwgYm9vbCAqbm9fYWRkX2F0
dHJzKQp7CiAgdHJlZSBkZWNsID0gKm5vZGU7CgogIGlmICh0YXJnZXRtLmhhdmVfbmFtZWRf
c2VjdGlvbnMpCiAgICB7CiAgICAgIGlmICgoVFJFRV9DT0RFIChkZWNsKSA9PSBGVU5DVElP
Tl9ERUNMCgkgICB8fCBUUkVFX0NPREUgKGRlY2wpID09IFZBUl9ERUNMKQoJICAmJiBUUkVF
X0NPREUgKFRSRUVfVkFMVUUgKGFyZ3MpKSA9PSBTVFJJTkdfQ1NUKQoJewoJICBpZiAoVFJF
RV9DT0RFIChkZWNsKSA9PSBWQVJfREVDTAoJICAgICAgJiYgY3VycmVudF9mdW5jdGlvbl9k
ZWNsICE9IE5VTExfVFJFRQoJICAgICAgJiYgISBUUkVFX1NUQVRJQyAoZGVjbCkpCgkgICAg
ewoJICAgICAgZXJyb3Jfd2l0aF9kZWNsIChkZWNsLAoJCQkgICAgICAgInNlY3Rpb24gYXR0
cmlidXRlIGNhbm5vdCBiZSBzcGVjaWZpZWQgZm9yIGxvY2FsIHZhcmlhYmxlcyIpOwoJICAg
ICAgKm5vX2FkZF9hdHRycyA9IHRydWU7CgkgICAgfQoKCSAgLyogVGhlIGRlY2wgbWF5IGhh
dmUgYWxyZWFkeSBiZWVuIGdpdmVuIGEgc2VjdGlvbiBhdHRyaWJ1dGUKCSAgICAgZnJvbSBh
IHByZXZpb3VzIGRlY2xhcmF0aW9uLiAgRW5zdXJlIHRoZXkgbWF0Y2guICAqLwoJICBlbHNl
IGlmIChERUNMX1NFQ1RJT05fTkFNRSAoZGVjbCkgIT0gTlVMTF9UUkVFCgkJICAgJiYgc3Ry
Y21wIChUUkVFX1NUUklOR19QT0lOVEVSIChERUNMX1NFQ1RJT05fTkFNRSAoZGVjbCkpLAoJ
CQkgICAgICBUUkVFX1NUUklOR19QT0lOVEVSIChUUkVFX1ZBTFVFIChhcmdzKSkpICE9IDAp
CgkgICAgewoJICAgICAgZXJyb3Jfd2l0aF9kZWNsICgqbm9kZSwKCQkJICAgICAgICJzZWN0
aW9uIG9mIGAlcycgY29uZmxpY3RzIHdpdGggcHJldmlvdXMgZGVjbGFyYXRpb24iKTsKCSAg
ICAgICpub19hZGRfYXR0cnMgPSB0cnVlOwoJICAgIH0KCSAgZWxzZQoJICAgIERFQ0xfU0VD
VElPTl9OQU1FIChkZWNsKSA9IFRSRUVfVkFMVUUgKGFyZ3MpOwoJfQogICAgICBlbHNlCgl7
CgkgIGVycm9yX3dpdGhfZGVjbCAoKm5vZGUsCgkJCSAgICJzZWN0aW9uIGF0dHJpYnV0ZSBu
b3QgYWxsb3dlZCBmb3IgYCVzJyIpOwoJICAqbm9fYWRkX2F0dHJzID0gdHJ1ZTsKCX0KICAg
IH0KICBlbHNlCiAgICB7CiAgICAgIGVycm9yX3dpdGhfZGVjbCAoKm5vZGUsCgkJICAgICAg
ICJzZWN0aW9uIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgdGFyZ2V0
Iik7CiAgICAgICpub19hZGRfYXR0cnMgPSB0cnVlOwogICAgfQoKICByZXR1cm4gTlVMTF9U
UkVFOwp9CgovKiBIYW5kbGUgYSAiYWxpZ25lZCIgYXR0cmlidXRlOyBhcmd1bWVudHMgYXMg
aW4KICAgc3RydWN0IGF0dHJpYnV0ZV9zcGVjLmhhbmRsZXIuICAqLwoKc3RhdGljIHRyZWUK
aGFuZGxlX2FsaWduZWRfYXR0cmlidXRlICh0cmVlICpub2RlLCB0cmVlIG5hbWUgQVRUUklC
VVRFX1VOVVNFRCwgdHJlZSBhcmdzLAoJCQkgIGludCBmbGFncywgYm9vbCAqbm9fYWRkX2F0
dHJzKQp7CiAgdHJlZSBkZWNsID0gTlVMTF9UUkVFOwogIHRyZWUgKnR5cGUgPSBOVUxMOwog
IGludCBpc190eXBlID0gMDsKICB0cmVlIGFsaWduX2V4cHIgPSAoYXJncyA/IFRSRUVfVkFM
VUUgKGFyZ3MpCgkJICAgICA6IHNpemVfaW50IChCSUdHRVNUX0FMSUdOTUVOVCAvIEJJVFNf
UEVSX1VOSVQpKTsKICBpbnQgaTsKCiAgaWYgKERFQ0xfUCAoKm5vZGUpKQogICAgewogICAg
ICBkZWNsID0gKm5vZGU7CiAgICAgIHR5cGUgPSAmVFJFRV9UWVBFIChkZWNsKTsKICAgICAg
aXNfdHlwZSA9IFRSRUVfQ09ERSAoKm5vZGUpID09IFRZUEVfREVDTDsKICAgIH0KICBlbHNl
IGlmIChUWVBFX1AgKCpub2RlKSkKICAgIHR5cGUgPSBub2RlLCBpc190eXBlID0gMTsKCiAg
LyogU3RyaXAgYW55IE5PUHMgb2YgYW55IGtpbmQuICAqLwogIHdoaWxlIChUUkVFX0NPREUg
KGFsaWduX2V4cHIpID09IE5PUF9FWFBSCgkgfHwgVFJFRV9DT0RFIChhbGlnbl9leHByKSA9
PSBDT05WRVJUX0VYUFIKCSB8fCBUUkVFX0NPREUgKGFsaWduX2V4cHIpID09IE5PTl9MVkFM
VUVfRVhQUikKICAgIGFsaWduX2V4cHIgPSBUUkVFX09QRVJBTkQgKGFsaWduX2V4cHIsIDAp
OwoKICBpZiAoVFJFRV9DT0RFIChhbGlnbl9leHByKSAhPSBJTlRFR0VSX0NTVCkKICAgIHsK
ICAgICAgZXJyb3IgKCJyZXF1ZXN0ZWQgYWxpZ25tZW50IGlzIG5vdCBhIGNvbnN0YW50Iik7
CiAgICAgICpub19hZGRfYXR0cnMgPSB0cnVlOwogICAgfQogIGVsc2UgaWYgKChpID0gdHJl
ZV9sb2cyIChhbGlnbl9leHByKSkgPT0gLTEpCiAgICB7CiAgICAgIGVycm9yICgicmVxdWVz
dGVkIGFsaWdubWVudCBpcyBub3QgYSBwb3dlciBvZiAyIik7CiAgICAgICpub19hZGRfYXR0
cnMgPSB0cnVlOwogICAgfQogIGVsc2UgaWYgKGkgPiBIT1NUX0JJVFNfUEVSX0lOVCAtIDIp
CiAgICB7CiAgICAgIGVycm9yICgicmVxdWVzdGVkIGFsaWdubWVudCBpcyB0b28gbGFyZ2Ui
KTsKICAgICAgKm5vX2FkZF9hdHRycyA9IHRydWU7CiAgICB9CiAgZWxzZSBpZiAoaXNfdHlw
ZSkKICAgIHsKICAgICAgLyogSWYgd2UgaGF2ZSBhIFRZUEVfREVDTCwgdGhlbiBjb3B5IHRo
ZSB0eXBlLCBzbyB0aGF0IHdlCgkgZG9uJ3QgYWNjaWRlbnRhbGx5IG1vZGlmeSBhIGJ1aWx0
aW4gdHlwZS4gIFNlZSBwdXNoZGVjbC4gICovCiAgICAgIGlmIChkZWNsICYmIFRSRUVfVFlQ
RSAoZGVjbCkgIT0gZXJyb3JfbWFya19ub2RlCgkgICYmIERFQ0xfT1JJR0lOQUxfVFlQRSAo
ZGVjbCkgPT0gTlVMTF9UUkVFKQoJewoJICB0cmVlIHR0ID0gVFJFRV9UWVBFIChkZWNsKTsK
CSAgKnR5cGUgPSBidWlsZF90eXBlX2NvcHkgKCp0eXBlKTsKCSAgREVDTF9PUklHSU5BTF9U
WVBFIChkZWNsKSA9IHR0OwoJICBUWVBFX05BTUUgKCp0eXBlKSA9IGRlY2w7CgkgIFRSRUVf
VVNFRCAoKnR5cGUpID0gVFJFRV9VU0VEIChkZWNsKTsKCSAgVFJFRV9UWVBFIChkZWNsKSA9
ICp0eXBlOwoJfQogICAgICBlbHNlIGlmICghKGZsYWdzICYgKGludCkgQVRUUl9GTEFHX1RZ
UEVfSU5fUExBQ0UpKQoJKnR5cGUgPSBidWlsZF90eXBlX2NvcHkgKCp0eXBlKTsKCiAgICAg
IFRZUEVfQUxJR04gKCp0eXBlKSA9ICgxIDw8IGkpICogQklUU19QRVJfVU5JVDsKICAgICAg
VFlQRV9VU0VSX0FMSUdOICgqdHlwZSkgPSAxOwogICAgfQogIGVsc2UgaWYgKFRSRUVfQ09E
RSAoZGVjbCkgIT0gVkFSX0RFQ0wKCSAgICYmIFRSRUVfQ09ERSAoZGVjbCkgIT0gRklFTERf
REVDTCkKICAgIHsKICAgICAgZXJyb3Jfd2l0aF9kZWNsIChkZWNsLAoJCSAgICAgICAiYWxp
Z25tZW50IG1heSBub3QgYmUgc3BlY2lmaWVkIGZvciBgJXMnIik7CiAgICAgICpub19hZGRf
YXR0cnMgPSB0cnVlOwogICAgfQogIGVsc2UKICAgIHsKICAgICAgREVDTF9BTElHTiAoZGVj
bCkgPSAoMSA8PCBpKSAqIEJJVFNfUEVSX1VOSVQ7CiAgICAgIERFQ0xfVVNFUl9BTElHTiAo
ZGVjbCkgPSAxOwogICAgfQoKICByZXR1cm4gTlVMTF9UUkVFOwp9CgovKiBIYW5kbGUgYSAi
d2VhayIgYXR0cmlidXRlOyBhcmd1bWVudHMgYXMgaW4KICAgc3RydWN0IGF0dHJpYnV0ZV9z
cGVjLmhhbmRsZXIuICAqLwoKc3RhdGljIHRyZWUKaGFuZGxlX3dlYWtfYXR0cmlidXRlICh0
cmVlICpub2RlLCB0cmVlIG5hbWUgQVRUUklCVVRFX1VOVVNFRCwKCQkgICAgICAgdHJlZSBh
cmdzIEFUVFJJQlVURV9VTlVTRUQsCgkJICAgICAgIGludCBmbGFncyBBVFRSSUJVVEVfVU5V
U0VELAoJCSAgICAgICBib29sICpub19hZGRfYXR0cnMgQVRUUklCVVRFX1VOVVNFRCkKewog
IGRlY2xhcmVfd2VhayAoKm5vZGUpOwoKICByZXR1cm4gTlVMTF9UUkVFOwp9CgovKiBIYW5k
bGUgYW4gImFsaWFzIiBhdHRyaWJ1dGU7IGFyZ3VtZW50cyBhcyBpbgogICBzdHJ1Y3QgYXR0
cmlidXRlX3NwZWMuaGFuZGxlci4gICovCgpzdGF0aWMgdHJlZQpoYW5kbGVfYWxpYXNfYXR0
cmlidXRlICh0cmVlICpub2RlLCB0cmVlIG5hbWUsIHRyZWUgYXJncywKCQkJaW50IGZsYWdz
IEFUVFJJQlVURV9VTlVTRUQsIGJvb2wgKm5vX2FkZF9hdHRycykKewogIHRyZWUgZGVjbCA9
ICpub2RlOwoKICBpZiAoKFRSRUVfQ09ERSAoZGVjbCkgPT0gRlVOQ1RJT05fREVDTCAmJiBE
RUNMX0lOSVRJQUwgKGRlY2wpKQogICAgICB8fCAoVFJFRV9DT0RFIChkZWNsKSAhPSBGVU5D
VElPTl9ERUNMICYmICEgREVDTF9FWFRFUk5BTCAoZGVjbCkpKQogICAgewogICAgICBlcnJv
cl93aXRoX2RlY2wgKGRlY2wsCgkJICAgICAgICJgJXMnIGRlZmluZWQgYm90aCBub3JtYWxs
eSBhbmQgYXMgYW4gYWxpYXMiKTsKICAgICAgKm5vX2FkZF9hdHRycyA9IHRydWU7CiAgICB9
CiAgZWxzZSBpZiAoZGVjbF9mdW5jdGlvbl9jb250ZXh0IChkZWNsKSA9PSAwKQogICAgewog
ICAgICB0cmVlIGlkOwoKICAgICAgaWQgPSBUUkVFX1ZBTFVFIChhcmdzKTsKICAgICAgaWYg
KFRSRUVfQ09ERSAoaWQpICE9IFNUUklOR19DU1QpCgl7CgkgIGVycm9yICgiYWxpYXMgYXJn
IG5vdCBhIHN0cmluZyIpOwoJICAqbm9fYWRkX2F0dHJzID0gdHJ1ZTsKCSAgcmV0dXJuIE5V
TExfVFJFRTsKCX0KICAgICAgaWQgPSBnZXRfaWRlbnRpZmllciAoVFJFRV9TVFJJTkdfUE9J
TlRFUiAoaWQpKTsKICAgICAgLyogVGhpcyBjb3VudHMgYXMgYSB1c2Ugb2YgdGhlIG9iamVj
dCBwb2ludGVkIHRvLiAgKi8KICAgICAgVFJFRV9VU0VEIChpZCkgPSAxOwoKICAgICAgaWYg
KFRSRUVfQ09ERSAoZGVjbCkgPT0gRlVOQ1RJT05fREVDTCkKCURFQ0xfSU5JVElBTCAoZGVj
bCkgPSBlcnJvcl9tYXJrX25vZGU7CiAgICAgIGVsc2UKCURFQ0xfRVhURVJOQUwgKGRlY2wp
ID0gMDsKICAgIH0KICBlbHNlCiAgICB7CiAgICAgIHdhcm5pbmcgKCJgJXMnIGF0dHJpYnV0
ZSBpZ25vcmVkIiwgSURFTlRJRklFUl9QT0lOVEVSIChuYW1lKSk7CiAgICAgICpub19hZGRf
YXR0cnMgPSB0cnVlOwogICAgfQoKICByZXR1cm4gTlVMTF9UUkVFOwp9CgovKiBIYW5kbGUg
YW4gInZpc2liaWxpdHkiIGF0dHJpYnV0ZTsgYXJndW1lbnRzIGFzIGluCiAgIHN0cnVjdCBh
dHRyaWJ1dGVfc3BlYy5oYW5kbGVyLiAgKi8KCnN0YXRpYyB0cmVlCmhhbmRsZV92aXNpYmls
aXR5X2F0dHJpYnV0ZSAodHJlZSAqbm9kZSwgdHJlZSBuYW1lLCB0cmVlIGFyZ3MsCgkJCSAg
ICAgaW50IGZsYWdzIEFUVFJJQlVURV9VTlVTRUQsCgkJCSAgICAgYm9vbCAqbm9fYWRkX2F0
dHJzKQp7CiAgdHJlZSBkZWNsID0gKm5vZGU7CgogIGlmIChkZWNsX2Z1bmN0aW9uX2NvbnRl
eHQgKGRlY2wpICE9IDAgfHwgISBUUkVFX1BVQkxJQyAoZGVjbCkpCiAgICB7CiAgICAgIHdh
cm5pbmcgKCJgJXMnIGF0dHJpYnV0ZSBpZ25vcmVkIiwgSURFTlRJRklFUl9QT0lOVEVSIChu
YW1lKSk7CiAgICAgICpub19hZGRfYXR0cnMgPSB0cnVlOwogICAgfQogIGVsc2UKICAgIHsK
ICAgICAgdHJlZSBpZDsKCiAgICAgIGlkID0gVFJFRV9WQUxVRSAoYXJncyk7CiAgICAgIGlm
IChUUkVFX0NPREUgKGlkKSAhPSBTVFJJTkdfQ1NUKQoJewoJICBlcnJvciAoInZpc2liaWxp
dHkgYXJnIG5vdCBhIHN0cmluZyIpOwoJICAqbm9fYWRkX2F0dHJzID0gdHJ1ZTsKCSAgcmV0
dXJuIE5VTExfVFJFRTsKCX0KICAgICAgaWYgKHN0cmNtcCAoVFJFRV9TVFJJTkdfUE9JTlRF
UiAoaWQpLCAiaGlkZGVuIikKCSAgJiYgc3RyY21wIChUUkVFX1NUUklOR19QT0lOVEVSIChp
ZCksICJwcm90ZWN0ZWQiKQoJICAmJiBzdHJjbXAgKFRSRUVfU1RSSU5HX1BPSU5URVIgKGlk
KSwgImludGVybmFsIikKCSAgJiYgc3RyY21wIChUUkVFX1NUUklOR19QT0lOVEVSIChpZCks
ICJkZWZhdWx0IikpCgl7CgkgIGVycm9yICgidmlzaWJpbGl0eSBhcmcgbXVzdCBiZSBvbmUg
b2YgXCJkZWZhdWx0XCIsIFwiaGlkZGVuXCIsIFwicHJvdGVjdGVkXCIgb3IgXCJpbnRlcm5h
bFwiIik7CgkgICpub19hZGRfYXR0cnMgPSB0cnVlOwoJICByZXR1cm4gTlVMTF9UUkVFOwoJ
fQogICAgfQoKICByZXR1cm4gTlVMTF9UUkVFOwp9CgovKiBIYW5kbGUgYW4gInRsc19tb2Rl
bCIgYXR0cmlidXRlOyBhcmd1bWVudHMgYXMgaW4KICAgc3RydWN0IGF0dHJpYnV0ZV9zcGVj
LmhhbmRsZXIuICAqLwoKc3RhdGljIHRyZWUKaGFuZGxlX3Rsc19tb2RlbF9hdHRyaWJ1dGUg
KHRyZWUgKm5vZGUsIHRyZWUgbmFtZSwgdHJlZSBhcmdzLAoJCQkgICAgaW50IGZsYWdzIEFU
VFJJQlVURV9VTlVTRUQsIGJvb2wgKm5vX2FkZF9hdHRycykKewogIHRyZWUgZGVjbCA9ICpu
b2RlOwoKICBpZiAoISBERUNMX1RIUkVBRF9MT0NBTCAoZGVjbCkpCiAgICB7CiAgICAgIHdh
cm5pbmcgKCJgJXMnIGF0dHJpYnV0ZSBpZ25vcmVkIiwgSURFTlRJRklFUl9QT0lOVEVSIChu
YW1lKSk7CiAgICAgICpub19hZGRfYXR0cnMgPSB0cnVlOwogICAgfQogIGVsc2UKICAgIHsK
ICAgICAgdHJlZSBpZDsKCiAgICAgIGlkID0gVFJFRV9WQUxVRSAoYXJncyk7CiAgICAgIGlm
IChUUkVFX0NPREUgKGlkKSAhPSBTVFJJTkdfQ1NUKQoJewoJICBlcnJvciAoInRsc19tb2Rl
bCBhcmcgbm90IGEgc3RyaW5nIik7CgkgICpub19hZGRfYXR0cnMgPSB0cnVlOwoJICByZXR1
cm4gTlVMTF9UUkVFOwoJfQogICAgICBpZiAoc3RyY21wIChUUkVFX1NUUklOR19QT0lOVEVS
IChpZCksICJsb2NhbC1leGVjIikKCSAgJiYgc3RyY21wIChUUkVFX1NUUklOR19QT0lOVEVS
IChpZCksICJpbml0aWFsLWV4ZWMiKQoJICAmJiBzdHJjbXAgKFRSRUVfU1RSSU5HX1BPSU5U
RVIgKGlkKSwgImxvY2FsLWR5bmFtaWMiKQoJICAmJiBzdHJjbXAgKFRSRUVfU1RSSU5HX1BP
SU5URVIgKGlkKSwgImdsb2JhbC1keW5hbWljIikpCgl7CgkgIGVycm9yICgidGxzX21vZGVs
IGFyZyBtdXN0IGJlIG9uZSBvZiBcImxvY2FsLWV4ZWNcIiwgXCJpbml0aWFsLWV4ZWNcIiwg
XCJsb2NhbC1keW5hbWljXCIgb3IgXCJnbG9iYWwtZHluYW1pY1wiIik7CgkgICpub19hZGRf
YXR0cnMgPSB0cnVlOwoJICByZXR1cm4gTlVMTF9UUkVFOwoJfQogICAgfQoKICByZXR1cm4g
TlVMTF9UUkVFOwp9CgovKiBIYW5kbGUgYSAibm9faW5zdHJ1bWVudF9mdW5jdGlvbiIgYXR0
cmlidXRlOyBhcmd1bWVudHMgYXMgaW4KICAgc3RydWN0IGF0dHJpYnV0ZV9zcGVjLmhhbmRs
ZXIuICAqLwoKc3RhdGljIHRyZWUKaGFuZGxlX25vX2luc3RydW1lbnRfZnVuY3Rpb25fYXR0
cmlidXRlICh0cmVlICpub2RlLCB0cmVlIG5hbWUsCgkJCQkJIHRyZWUgYXJncyBBVFRSSUJV
VEVfVU5VU0VELAoJCQkJCSBpbnQgZmxhZ3MgQVRUUklCVVRFX1VOVVNFRCwKCQkJCQkgYm9v
bCAqbm9fYWRkX2F0dHJzKQp7CiAgdHJlZSBkZWNsID0gKm5vZGU7CgogIGlmIChUUkVFX0NP
REUgKGRlY2wpICE9IEZVTkNUSU9OX0RFQ0wpCiAgICB7CiAgICAgIGVycm9yX3dpdGhfZGVj
bCAoZGVjbCwKCQkgICAgICAgImAlcycgYXR0cmlidXRlIGFwcGxpZXMgb25seSB0byBmdW5j
dGlvbnMiLAoJCSAgICAgICBJREVOVElGSUVSX1BPSU5URVIgKG5hbWUpKTsKICAgICAgKm5v
X2FkZF9hdHRycyA9IHRydWU7CiAgICB9CiAgZWxzZSBpZiAoREVDTF9JTklUSUFMIChkZWNs
KSkKICAgIHsKICAgICAgZXJyb3Jfd2l0aF9kZWNsIChkZWNsLAoJCSAgICAgICAiY2FuJ3Qg
c2V0IGAlcycgYXR0cmlidXRlIGFmdGVyIGRlZmluaXRpb24iLAoJCSAgICAgICBJREVOVElG
SUVSX1BPSU5URVIgKG5hbWUpKTsKICAgICAgKm5vX2FkZF9hdHRycyA9IHRydWU7CiAgICB9
CiAgZWxzZQogICAgREVDTF9OT19JTlNUUlVNRU5UX0ZVTkNUSU9OX0VOVFJZX0VYSVQgKGRl
Y2wpID0gMTsKCiAgcmV0dXJuIE5VTExfVFJFRTsKfQoKLyogSGFuZGxlIGEgIm1hbGxvYyIg
YXR0cmlidXRlOyBhcmd1bWVudHMgYXMgaW4KICAgc3RydWN0IGF0dHJpYnV0ZV9zcGVjLmhh
bmRsZXIuICAqLwoKc3RhdGljIHRyZWUKaGFuZGxlX21hbGxvY19hdHRyaWJ1dGUgKHRyZWUg
Km5vZGUsIHRyZWUgbmFtZSwgdHJlZSBhcmdzIEFUVFJJQlVURV9VTlVTRUQsCgkJCSBpbnQg
ZmxhZ3MgQVRUUklCVVRFX1VOVVNFRCwgYm9vbCAqbm9fYWRkX2F0dHJzKQp7CiAgaWYgKFRS
RUVfQ09ERSAoKm5vZGUpID09IEZVTkNUSU9OX0RFQ0wpCiAgICBERUNMX0lTX01BTExPQyAo
Km5vZGUpID0gMTsKICAvKiA/Pz8gVE9ETzogU3VwcG9ydCB0eXBlcy4gICovCiAgZWxzZQog
ICAgewogICAgICB3YXJuaW5nICgiYCVzJyBhdHRyaWJ1dGUgaWdub3JlZCIsIElERU5USUZJ
RVJfUE9JTlRFUiAobmFtZSkpOwogICAgICAqbm9fYWRkX2F0dHJzID0gdHJ1ZTsKICAgIH0K
CiAgcmV0dXJuIE5VTExfVFJFRTsKfQoKLyogSGFuZGxlIGEgIm5vX2xpbWl0X3N0YWNrIiBh
dHRyaWJ1dGU7IGFyZ3VtZW50cyBhcyBpbgogICBzdHJ1Y3QgYXR0cmlidXRlX3NwZWMuaGFu
ZGxlci4gICovCgpzdGF0aWMgdHJlZQpoYW5kbGVfbm9fbGltaXRfc3RhY2tfYXR0cmlidXRl
ICh0cmVlICpub2RlLCB0cmVlIG5hbWUsCgkJCQkgdHJlZSBhcmdzIEFUVFJJQlVURV9VTlVT
RUQsCgkJCQkgaW50IGZsYWdzIEFUVFJJQlVURV9VTlVTRUQsCgkJCQkgYm9vbCAqbm9fYWRk
X2F0dHJzKQp7CiAgdHJlZSBkZWNsID0gKm5vZGU7CgogIGlmIChUUkVFX0NPREUgKGRlY2wp
ICE9IEZVTkNUSU9OX0RFQ0wpCiAgICB7CiAgICAgIGVycm9yX3dpdGhfZGVjbCAoZGVjbCwK
CQkgICAgICAgImAlcycgYXR0cmlidXRlIGFwcGxpZXMgb25seSB0byBmdW5jdGlvbnMiLAoJ
CSAgICAgICBJREVOVElGSUVSX1BPSU5URVIgKG5hbWUpKTsKICAgICAgKm5vX2FkZF9hdHRy
cyA9IHRydWU7CiAgICB9CiAgZWxzZSBpZiAoREVDTF9JTklUSUFMIChkZWNsKSkKICAgIHsK
ICAgICAgZXJyb3Jfd2l0aF9kZWNsIChkZWNsLAoJCSAgICAgICAiY2FuJ3Qgc2V0IGAlcycg
YXR0cmlidXRlIGFmdGVyIGRlZmluaXRpb24iLAoJCSAgICAgICBJREVOVElGSUVSX1BPSU5U
RVIgKG5hbWUpKTsKICAgICAgKm5vX2FkZF9hdHRycyA9IHRydWU7CiAgICB9CiAgZWxzZQog
ICAgREVDTF9OT19MSU1JVF9TVEFDSyAoZGVjbCkgPSAxOwoKICByZXR1cm4gTlVMTF9UUkVF
Owp9CgovKiBIYW5kbGUgYSAicHVyZSIgYXR0cmlidXRlOyBhcmd1bWVudHMgYXMgaW4KICAg
c3RydWN0IGF0dHJpYnV0ZV9zcGVjLmhhbmRsZXIuICAqLwoKc3RhdGljIHRyZWUKaGFuZGxl
X3B1cmVfYXR0cmlidXRlICh0cmVlICpub2RlLCB0cmVlIG5hbWUsIHRyZWUgYXJncyBBVFRS
SUJVVEVfVU5VU0VELAoJCSAgICAgICBpbnQgZmxhZ3MgQVRUUklCVVRFX1VOVVNFRCwgYm9v
bCAqbm9fYWRkX2F0dHJzKQp7CiAgaWYgKFRSRUVfQ09ERSAoKm5vZGUpID09IEZVTkNUSU9O
X0RFQ0wpCiAgICBERUNMX0lTX1BVUkUgKCpub2RlKSA9IDE7CiAgLyogPz8/IFRPRE86IFN1
cHBvcnQgdHlwZXMuICAqLwogIGVsc2UKICAgIHsKICAgICAgd2FybmluZyAoImAlcycgYXR0
cmlidXRlIGlnbm9yZWQiLCBJREVOVElGSUVSX1BPSU5URVIgKG5hbWUpKTsKICAgICAgKm5v
X2FkZF9hdHRycyA9IHRydWU7CiAgICB9CgogIHJldHVybiBOVUxMX1RSRUU7Cn0KCi8qIEhh
bmRsZSBhICJkZXByZWNhdGVkIiBhdHRyaWJ1dGU7IGFyZ3VtZW50cyBhcyBpbgogICBzdHJ1
Y3QgYXR0cmlidXRlX3NwZWMuaGFuZGxlci4gICovCgpzdGF0aWMgdHJlZQpoYW5kbGVfZGVw
cmVjYXRlZF9hdHRyaWJ1dGUgKHRyZWUgKm5vZGUsIHRyZWUgbmFtZSwKCQkJICAgICB0cmVl
IGFyZ3MgQVRUUklCVVRFX1VOVVNFRCwgaW50IGZsYWdzLAoJCQkgICAgIGJvb2wgKm5vX2Fk
ZF9hdHRycykKewogIHRyZWUgdHlwZSA9IE5VTExfVFJFRTsKICBpbnQgd2FybiA9IDA7CiAg
Y29uc3QgY2hhciAqd2hhdCA9IE5VTEw7CgogIGlmIChERUNMX1AgKCpub2RlKSkKICAgIHsK
ICAgICAgdHJlZSBkZWNsID0gKm5vZGU7CiAgICAgIHR5cGUgPSBUUkVFX1RZUEUgKGRlY2wp
OwoKICAgICAgaWYgKFRSRUVfQ09ERSAoZGVjbCkgPT0gVFlQRV9ERUNMCgkgIHx8IFRSRUVf
Q09ERSAoZGVjbCkgPT0gUEFSTV9ERUNMCgkgIHx8IFRSRUVfQ09ERSAoZGVjbCkgPT0gVkFS
X0RFQ0wKCSAgfHwgVFJFRV9DT0RFIChkZWNsKSA9PSBGVU5DVElPTl9ERUNMCgkgIHx8IFRS
RUVfQ09ERSAoZGVjbCkgPT0gRklFTERfREVDTCkKCVRSRUVfREVQUkVDQVRFRCAoZGVjbCkg
PSAxOwogICAgICBlbHNlCgl3YXJuID0gMTsKICAgIH0KICBlbHNlIGlmIChUWVBFX1AgKCpu
b2RlKSkKICAgIHsKICAgICAgaWYgKCEoZmxhZ3MgJiAoaW50KSBBVFRSX0ZMQUdfVFlQRV9J
Tl9QTEFDRSkpCgkqbm9kZSA9IGJ1aWxkX3R5cGVfY29weSAoKm5vZGUpOwogICAgICBUUkVF
X0RFUFJFQ0FURUQgKCpub2RlKSA9IDE7CiAgICAgIHR5cGUgPSAqbm9kZTsKICAgIH0KICBl
bHNlCiAgICB3YXJuID0gMTsKCiAgaWYgKHdhcm4pCiAgICB7CiAgICAgICpub19hZGRfYXR0
cnMgPSB0cnVlOwogICAgICBpZiAodHlwZSAmJiBUWVBFX05BTUUgKHR5cGUpKQoJewoJICBp
ZiAoVFJFRV9DT0RFIChUWVBFX05BTUUgKHR5cGUpKSA9PSBJREVOVElGSUVSX05PREUpCgkg
ICAgd2hhdCA9IElERU5USUZJRVJfUE9JTlRFUiAoVFlQRV9OQU1FICgqbm9kZSkpOwoJICBl
bHNlIGlmIChUUkVFX0NPREUgKFRZUEVfTkFNRSAodHlwZSkpID09IFRZUEVfREVDTAoJCSAg
ICYmIERFQ0xfTkFNRSAoVFlQRV9OQU1FICh0eXBlKSkpCgkgICAgd2hhdCA9IElERU5USUZJ
RVJfUE9JTlRFUiAoREVDTF9OQU1FIChUWVBFX05BTUUgKHR5cGUpKSk7Cgl9CiAgICAgIGlm
ICh3aGF0KQoJd2FybmluZyAoImAlcycgYXR0cmlidXRlIGlnbm9yZWQgZm9yIGAlcyciLAoJ
CSAgSURFTlRJRklFUl9QT0lOVEVSIChuYW1lKSwgd2hhdCk7CiAgICAgIGVsc2UKCXdhcm5p
bmcgKCJgJXMnIGF0dHJpYnV0ZSBpZ25vcmVkIiwKCQkgICAgICBJREVOVElGSUVSX1BPSU5U
RVIgKG5hbWUpKTsKICAgIH0KCiAgcmV0dXJuIE5VTExfVFJFRTsKfQoKLyogS2VlcCBhIGxp
c3Qgb2YgdmVjdG9yIHR5cGUgbm9kZXMgd2UgY3JlYXRlZCBpbiBoYW5kbGVfdmVjdG9yX3Np
emVfYXR0cmlidXRlLAogICB0byBwcmV2ZW50IHVzIGZyb20gZHVwbGljYXRpbmcgdHlwZSBu
b2RlcyB1bm5lY2Vzc2FyaWx5LgogICBUaGUgbm9ybWFsIG1lY2hhbmlzbSB0byBwcmV2ZW50
IGR1cGxpY2F0ZXMgaXMgdG8gdXNlIHR5cGVfaGFzaF9jYW5vbiwgYnV0CiAgIHNpbmNlIHdl
IHdhbnQgdG8gZGlzdGluZ3Vpc2ggdHlwZXMgdGhhdCBhcmUgZXNzZW50aWFsbHkgaWRlbnRp
Y2FsIChleGNlcHQKICAgZm9yIHRoZWlyIGRlYnVnIHJlcHJlc2VudGF0aW9uKSwgd2UgdXNl
IGEgbG9jYWwgbGlzdCBoZXJlLiAgKi8Kc3RhdGljIEdUWSgoKSkgdHJlZSB2ZWN0b3JfdHlw
ZV9ub2RlX2xpc3QgPSAwOwoKLyogSGFuZGxlIGEgInZlY3Rvcl9zaXplIiBhdHRyaWJ1dGU7
IGFyZ3VtZW50cyBhcyBpbgogICBzdHJ1Y3QgYXR0cmlidXRlX3NwZWMuaGFuZGxlci4gICov
CgpzdGF0aWMgdHJlZQpoYW5kbGVfdmVjdG9yX3NpemVfYXR0cmlidXRlICh0cmVlICpub2Rl
LCB0cmVlIG5hbWUsIHRyZWUgYXJncywKCQkJICAgICAgaW50IGZsYWdzIEFUVFJJQlVURV9V
TlVTRUQsCgkJCSAgICAgIGJvb2wgKm5vX2FkZF9hdHRycykKewogIHVuc2lnbmVkIEhPU1Rf
V0lERV9JTlQgdmVjc2l6ZSwgbnVuaXRzOwogIGVudW0gbWFjaGluZV9tb2RlIG1vZGUsIG9y
aWdfbW9kZSwgbmV3X21vZGU7CiAgdHJlZSB0eXBlID0gKm5vZGUsIG5ld190eXBlID0gTlVM
TF9UUkVFOwogIHRyZWUgdHlwZV9saXN0X25vZGU7CgogICpub19hZGRfYXR0cnMgPSB0cnVl
OwoKICBpZiAoISBob3N0X2ludGVnZXJwIChUUkVFX1ZBTFVFIChhcmdzKSwgMSkpCiAgICB7
CiAgICAgIHdhcm5pbmcgKCJgJXMnIGF0dHJpYnV0ZSBpZ25vcmVkIiwgSURFTlRJRklFUl9Q
T0lOVEVSIChuYW1lKSk7CiAgICAgIHJldHVybiBOVUxMX1RSRUU7CiAgICB9CgogIC8qIEdl
dCB0aGUgdmVjdG9yIHNpemUgKGluIGJ5dGVzKS4gICovCiAgdmVjc2l6ZSA9IHRyZWVfbG93
X2NzdCAoVFJFRV9WQUxVRSAoYXJncyksIDEpOwoKICAvKiBXZSBuZWVkIHRvIHByb3ZpZGUg
Zm9yIHZlY3RvciBwb2ludGVycywgdmVjdG9yIGFycmF5cywgYW5kCiAgICAgZnVuY3Rpb25z
IHJldHVybmluZyB2ZWN0b3JzLiAgRm9yIGV4YW1wbGU6CgogICAgICAgX19hdHRyaWJ1dGVf
XygodmVjdG9yX3NpemUoMTYpKSkgc2hvcnQgKmZvbzsKCiAgICAgSW4gdGhpcyBjYXNlLCB0
aGUgbW9kZSBpcyBTSSwgYnV0IHRoZSB0eXBlIGJlaW5nIG1vZGlmaWVkIGlzCiAgICAgSEks
IHNvIHdlIG5lZWQgdG8gbG9vayBmdXJ0aGVyLiAgKi8KCiAgd2hpbGUgKFBPSU5URVJfVFlQ
RV9QICh0eXBlKQoJIHx8IFRSRUVfQ09ERSAodHlwZSkgPT0gRlVOQ1RJT05fVFlQRQoJIHx8
IFRSRUVfQ09ERSAodHlwZSkgPT0gQVJSQVlfVFlQRSkKICAgIHR5cGUgPSBUUkVFX1RZUEUg
KHR5cGUpOwoKICAvKiBHZXQgdGhlIG1vZGUgb2YgdGhlIHR5cGUgYmVpbmcgbW9kaWZpZWQu
ICAqLwogIG9yaWdfbW9kZSA9IFRZUEVfTU9ERSAodHlwZSk7CgogIGlmIChUUkVFX0NPREUg
KHR5cGUpID09IFJFQ09SRF9UWVBFCiAgICAgIHx8IChHRVRfTU9ERV9DTEFTUyAob3JpZ19t
b2RlKSAhPSBNT0RFX0ZMT0FUCgkgICYmIEdFVF9NT0RFX0NMQVNTIChvcmlnX21vZGUpICE9
IE1PREVfSU5UKQogICAgICB8fCAhIGhvc3RfaW50ZWdlcnAgKFRZUEVfU0laRV9VTklUICh0
eXBlKSwgMSkpCiAgICB7CiAgICAgIGVycm9yICgiaW52YWxpZCB2ZWN0b3IgdHlwZSBmb3Ig
YXR0cmlidXRlIGAlcyciLAoJICAgICBJREVOVElGSUVSX1BPSU5URVIgKG5hbWUpKTsKICAg
ICAgcmV0dXJuIE5VTExfVFJFRTsKICAgIH0KCiAgLyogQ2FsY3VsYXRlIGhvdyBtYW55IHVu
aXRzIGZpdCBpbiB0aGUgdmVjdG9yLiAgKi8KICBudW5pdHMgPSB2ZWNzaXplIC8gdHJlZV9s
b3dfY3N0IChUWVBFX1NJWkVfVU5JVCAodHlwZSksIDEpOwoKICAvKiBGaW5kIGEgc3VpdGFi
bHkgc2l6ZWQgdmVjdG9yLiAgKi8KICBuZXdfbW9kZSA9IFZPSURtb2RlOwogIGZvciAobW9k
ZSA9IEdFVF9DTEFTU19OQVJST1dFU1RfTU9ERSAoR0VUX01PREVfQ0xBU1MgKG9yaWdfbW9k
ZSkgPT0gTU9ERV9JTlQKCQkJCQk/IE1PREVfVkVDVE9SX0lOVAoJCQkJCTogTU9ERV9WRUNU
T1JfRkxPQVQpOwogICAgICAgbW9kZSAhPSBWT0lEbW9kZTsKICAgICAgIG1vZGUgPSBHRVRf
TU9ERV9XSURFUl9NT0RFIChtb2RlKSkKICAgIGlmICh2ZWNzaXplID09IEdFVF9NT0RFX1NJ
WkUgKG1vZGUpCgkmJiBudW5pdHMgPT0gKHVuc2lnbmVkIEhPU1RfV0lERV9JTlQpIEdFVF9N
T0RFX05VTklUUyAobW9kZSkpCiAgICAgIHsKCW5ld19tb2RlID0gbW9kZTsKCWJyZWFrOwog
ICAgICB9CgogICAgaWYgKG5ld19tb2RlID09IFZPSURtb2RlKQogICAgewogICAgICBlcnJv
ciAoIm5vIHZlY3RvciBtb2RlIHdpdGggdGhlIHNpemUgYW5kIHR5cGUgc3BlY2lmaWVkIGNv
dWxkIGJlIGZvdW5kIik7CiAgICAgIHJldHVybiBOVUxMX1RSRUU7CiAgICB9CgogIGZvciAo
dHlwZV9saXN0X25vZGUgPSB2ZWN0b3JfdHlwZV9ub2RlX2xpc3Q7IHR5cGVfbGlzdF9ub2Rl
OwogICAgICAgdHlwZV9saXN0X25vZGUgPSBUUkVFX0NIQUlOICh0eXBlX2xpc3Rfbm9kZSkp
CiAgICB7CiAgICAgIHRyZWUgb3RoZXJfdHlwZSA9IFRSRUVfVkFMVUUgKHR5cGVfbGlzdF9u
b2RlKTsKICAgICAgdHJlZSByZWNvcmQgPSBUWVBFX0RFQlVHX1JFUFJFU0VOVEFUSU9OX1RZ
UEUgKG90aGVyX3R5cGUpOwogICAgICB0cmVlIGZpZWxkcyA9IFRZUEVfRklFTERTIChyZWNv
cmQpOwogICAgICB0cmVlIGZpZWxkX3R5cGUgPSBUUkVFX1RZUEUgKGZpZWxkcyk7CiAgICAg
IHRyZWUgYXJyYXlfdHlwZSA9IFRSRUVfVFlQRSAoZmllbGRfdHlwZSk7CiAgICAgIGlmIChU
UkVFX0NPREUgKGZpZWxkcykgIT0gRklFTERfREVDTAoJICB8fCBUUkVFX0NPREUgKGZpZWxk
X3R5cGUpICE9IEFSUkFZX1RZUEUpCglhYm9ydCAoKTsKCiAgICAgIGlmIChUWVBFX01PREUg
KG90aGVyX3R5cGUpID09IG1vZGUgJiYgdHlwZSA9PSBhcnJheV90eXBlKQoJewoJICBuZXdf
dHlwZSA9IG90aGVyX3R5cGU7CgkgIGJyZWFrOwoJfQogICAgfQoKICBpZiAobmV3X3R5cGUg
PT0gTlVMTF9UUkVFKQogICAgewogICAgICB0cmVlIGluZGV4LCBhcnJheSwgcnQsIGxpc3Rf
bm9kZTsKCiAgICAgIG5ld190eXBlID0gKCpsYW5nX2hvb2tzLnR5cGVzLnR5cGVfZm9yX21v
ZGUpIChuZXdfbW9kZSwKCQkJCQkJICAgIFRSRUVfVU5TSUdORUQgKHR5cGUpKTsKCiAgICAg
IGlmICghbmV3X3R5cGUpCgl7CgkgIGVycm9yICgibm8gdmVjdG9yIG1vZGUgd2l0aCB0aGUg
c2l6ZSBhbmQgdHlwZSBzcGVjaWZpZWQgY291bGQgYmUgZm91bmQiKTsKCSAgcmV0dXJuIE5V
TExfVFJFRTsKCX0KCiAgICAgIG5ld190eXBlID0gYnVpbGRfdHlwZV9jb3B5IChuZXdfdHlw
ZSk7CgogICAgICAvKiBJZiB0aGlzIGlzIGEgdmVjdG9yLCBtYWtlIHN1cmUgd2UgZWl0aGVy
IGhhdmUgaGFyZHdhcmUKICAgICAgICAgc3VwcG9ydCwgb3Igd2UgY2FuIGVtdWxhdGUgaXQu
ICAqLwogICAgICBpZiAoKEdFVF9NT0RFX0NMQVNTIChtb2RlKSA9PSBNT0RFX1ZFQ1RPUl9J
TlQKCSAgIHx8IEdFVF9NT0RFX0NMQVNTIChtb2RlKSA9PSBNT0RFX1ZFQ1RPUl9GTE9BVCkK
CSAgJiYgIXZlY3Rvcl9tb2RlX3ZhbGlkX3AgKG1vZGUpKQoJewoJICBlcnJvciAoInVuYWJs
ZSB0byBlbXVsYXRlICclcyciLCBHRVRfTU9ERV9OQU1FIChtb2RlKSk7CgkgIHJldHVybiBO
VUxMX1RSRUU7Cgl9CgogICAgICAvKiBTZXQgdGhlIGRlYnVnIGluZm9ybWF0aW9uIGhlcmUs
IGJlY2F1c2UgdGhpcyBpcyB0aGUgb25seQoJIHBsYWNlIHdoZXJlIHdlIGtub3cgdGhlIHVu
ZGVybHlpbmcgdHlwZSBmb3IgYSB2ZWN0b3IgbWFkZQoJIHdpdGggdmVjdG9yX3NpemUuICBG
b3IgZGVidWdnaW5nIHB1cnBvc2VzIHdlIHByZXRlbmQgYSB2ZWN0b3IKCSBpcyBhbiBhcnJh
eSB3aXRoaW4gYSBzdHJ1Y3R1cmUuICAqLwogICAgICBpbmRleCA9IGJ1aWxkX2ludF8yIChU
WVBFX1ZFQ1RPUl9TVUJQQVJUUyAobmV3X3R5cGUpIC0gMSwgMCk7CiAgICAgIGFycmF5ID0g
YnVpbGRfYXJyYXlfdHlwZSAodHlwZSwgYnVpbGRfaW5kZXhfdHlwZSAoaW5kZXgpKTsKICAg
ICAgcnQgPSBtYWtlX25vZGUgKFJFQ09SRF9UWVBFKTsKCiAgICAgIFRZUEVfRklFTERTIChy
dCkgPSBidWlsZF9kZWNsIChGSUVMRF9ERUNMLCBnZXRfaWRlbnRpZmllciAoImYiKSwgYXJy
YXkpOwogICAgICBERUNMX0NPTlRFWFQgKFRZUEVfRklFTERTIChydCkpID0gcnQ7CiAgICAg
IGxheW91dF90eXBlIChydCk7CiAgICAgIFRZUEVfREVCVUdfUkVQUkVTRU5UQVRJT05fVFlQ
RSAobmV3X3R5cGUpID0gcnQ7CgogICAgICBsaXN0X25vZGUgPSBidWlsZF90cmVlX2xpc3Qg
KE5VTEwsIG5ld190eXBlKTsKICAgICAgVFJFRV9DSEFJTiAobGlzdF9ub2RlKSA9IHZlY3Rv
cl90eXBlX25vZGVfbGlzdDsKICAgICAgdmVjdG9yX3R5cGVfbm9kZV9saXN0ID0gbGlzdF9u
b2RlOwogICAgfQoKICAvKiBCdWlsZCBiYWNrIHBvaW50ZXJzIGlmIG5lZWRlZC4gICovCiAg
Km5vZGUgPSB2ZWN0b3Jfc2l6ZV9oZWxwZXIgKCpub2RlLCBuZXdfdHlwZSk7CgogIHJldHVy
biBOVUxMX1RSRUU7Cn0KCi8qIEhBQ0suICBHUk9TUy4gIFRoaXMgaXMgYWJzb2x1dGVseSBk
aXNndXN0aW5nLiAgSSB3aXNoIHRoZXJlIHdhcyBhCiAgIGJldHRlciB3YXkuCgogICBJZiB3
ZSByZXF1ZXN0ZWQgYSBwb2ludGVyIHRvIGEgdmVjdG9yLCBidWlsZCB1cCB0aGUgcG9pbnRl
cnMgdGhhdAogICB3ZSBzdHJpcHBlZCBvZmYgd2hpbGUgbG9va2luZyBmb3IgdGhlIGlubmVy
IHR5cGUuICBTaW1pbGFybHkgZm9yCiAgIHJldHVybiB2YWx1ZXMgZnJvbSBmdW5jdGlvbnMu
CgogICBUaGUgYXJndW1lbnQgInR5cGUiIGlzIHRoZSB0b3Agb2YgdGhlIGNoYWluLCBhbmQg
ImJvdHRvbSIgaXMgdGhlCiAgIG5ldyB0eXBlIHdoaWNoIHdlIHdpbGwgcG9pbnQgdG8uICAq
LwoKc3RhdGljIHRyZWUKdmVjdG9yX3NpemVfaGVscGVyICh0cmVlIHR5cGUsIHRyZWUgYm90
dG9tKQp7CiAgdHJlZSBpbm5lciwgb3V0ZXI7CgogIGlmIChQT0lOVEVSX1RZUEVfUCAodHlw
ZSkpCiAgICB7CiAgICAgIGlubmVyID0gdmVjdG9yX3NpemVfaGVscGVyIChUUkVFX1RZUEUg
KHR5cGUpLCBib3R0b20pOwogICAgICBvdXRlciA9IGJ1aWxkX3BvaW50ZXJfdHlwZSAoaW5u
ZXIpOwogICAgfQogIGVsc2UgaWYgKFRSRUVfQ09ERSAodHlwZSkgPT0gQVJSQVlfVFlQRSkK
ICAgIHsKICAgICAgaW5uZXIgPSB2ZWN0b3Jfc2l6ZV9oZWxwZXIgKFRSRUVfVFlQRSAodHlw
ZSksIGJvdHRvbSk7CiAgICAgIG91dGVyID0gYnVpbGRfYXJyYXlfdHlwZSAoaW5uZXIsIFRZ
UEVfVkFMVUVTICh0eXBlKSk7CiAgICB9CiAgZWxzZSBpZiAoVFJFRV9DT0RFICh0eXBlKSA9
PSBGVU5DVElPTl9UWVBFKQogICAgewogICAgICBpbm5lciA9IHZlY3Rvcl9zaXplX2hlbHBl
ciAoVFJFRV9UWVBFICh0eXBlKSwgYm90dG9tKTsKICAgICAgb3V0ZXIgPSBidWlsZF9mdW5j
dGlvbl90eXBlIChpbm5lciwgVFlQRV9WQUxVRVMgKHR5cGUpKTsKICAgIH0KICBlbHNlCiAg
ICByZXR1cm4gYm90dG9tOwoKICBUUkVFX1JFQURPTkxZIChvdXRlcikgPSBUUkVFX1JFQURP
TkxZICh0eXBlKTsKICBUUkVFX1RISVNfVk9MQVRJTEUgKG91dGVyKSA9IFRSRUVfVEhJU19W
T0xBVElMRSAodHlwZSk7CgogIHJldHVybiBvdXRlcjsKfQoKLyogSGFuZGxlIHRoZSAibm9u
bnVsbCIgYXR0cmlidXRlLiAgKi8Kc3RhdGljIHRyZWUKaGFuZGxlX25vbm51bGxfYXR0cmli
dXRlICh0cmVlICpub2RlLCB0cmVlIG5hbWUgQVRUUklCVVRFX1VOVVNFRCwKCQkJICB0cmVl
IGFyZ3MsIGludCBmbGFncyBBVFRSSUJVVEVfVU5VU0VELAoJCQkgIGJvb2wgKm5vX2FkZF9h
dHRycykKewogIHRyZWUgdHlwZSA9ICpub2RlOwogIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQg
YXR0cl9hcmdfbnVtOwoKICAvKiBJZiBubyBhcmd1bWVudHMgYXJlIHNwZWNpZmllZCwgYWxs
IHBvaW50ZXIgYXJndW1lbnRzIHNob3VsZCBiZQogICAgIG5vbi1udWxsLiAgVmVyaWZ5IGEg
ZnVsbCBwcm90b3R5cGUgaXMgZ2l2ZW4gc28gdGhhdCB0aGUgYXJndW1lbnRzCiAgICAgd2ls
bCBoYXZlIHRoZSBjb3JyZWN0IHR5cGVzIHdoZW4gd2UgYWN0dWFsbHkgY2hlY2sgdGhlbSBs
YXRlci4gICovCiAgaWYgKCEgYXJncykKICAgIHsKICAgICAgaWYgKCEgVFlQRV9BUkdfVFlQ
RVMgKHR5cGUpKQoJewoJICBlcnJvciAoIm5vbm51bGwgYXR0cmlidXRlIHdpdGhvdXQgYXJn
dW1lbnRzIG9uIGEgbm9uLXByb3RvdHlwZSIpOwogICAgICAgICAgKm5vX2FkZF9hdHRycyA9
IHRydWU7Cgl9CiAgICAgIHJldHVybiBOVUxMX1RSRUU7CiAgICB9CgogIC8qIEFyZ3VtZW50
IGxpc3Qgc3BlY2lmaWVkLiAgVmVyaWZ5IHRoYXQgZWFjaCBhcmd1bWVudCBudW1iZXIgcmVm
ZXJlbmNlcwogICAgIGEgcG9pbnRlciBhcmd1bWVudC4gICovCiAgZm9yIChhdHRyX2FyZ19u
dW0gPSAxOyBhcmdzOyBhcmdzID0gVFJFRV9DSEFJTiAoYXJncykpCiAgICB7CiAgICAgIHRy
ZWUgYXJndW1lbnQ7CiAgICAgIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQgYXJnX251bSwgY2tf
bnVtOwoKICAgICAgaWYgKCEgZ2V0X25vbm51bGxfb3BlcmFuZCAoVFJFRV9WQUxVRSAoYXJn
cyksICZhcmdfbnVtKSkKCXsKCSAgZXJyb3IgKCJub25udWxsIGFyZ3VtZW50IGhhcyBpbnZh
bGlkIG9wZXJhbmQgbnVtYmVyIChhcmcgJWx1KSIsCgkJICh1bnNpZ25lZCBsb25nKSBhdHRy
X2FyZ19udW0pOwoJICAqbm9fYWRkX2F0dHJzID0gdHJ1ZTsKCSAgcmV0dXJuIE5VTExfVFJF
RTsKCX0KCiAgICAgIGFyZ3VtZW50ID0gVFlQRV9BUkdfVFlQRVMgKHR5cGUpOwogICAgICBp
ZiAoYXJndW1lbnQpCgl7CgkgIGZvciAoY2tfbnVtID0gMTsgOyBja19udW0rKykKCSAgICB7
CgkgICAgICBpZiAoISBhcmd1bWVudCB8fCBja19udW0gPT0gYXJnX251bSkKCQlicmVhazsK
CSAgICAgIGFyZ3VtZW50ID0gVFJFRV9DSEFJTiAoYXJndW1lbnQpOwoJICAgIH0KCiAgICAg
ICAgICBpZiAoISBhcmd1bWVudAoJICAgICAgfHwgVFJFRV9DT0RFIChUUkVFX1ZBTFVFIChh
cmd1bWVudCkpID09IFZPSURfVFlQRSkKCSAgICB7CgkgICAgICBlcnJvciAoIm5vbm51bGwg
YXJndW1lbnQgd2l0aCBvdXQtb2YtcmFuZ2Ugb3BlcmFuZCBudW1iZXIgKGFyZyAlbHUsIG9w
ZXJhbmQgJWx1KSIsCgkJICAgICAodW5zaWduZWQgbG9uZykgYXR0cl9hcmdfbnVtLCAodW5z
aWduZWQgbG9uZykgYXJnX251bSk7CgkgICAgICAqbm9fYWRkX2F0dHJzID0gdHJ1ZTsKCSAg
ICAgIHJldHVybiBOVUxMX1RSRUU7CgkgICAgfQoKICAgICAgICAgIGlmIChUUkVFX0NPREUg
KFRSRUVfVkFMVUUgKGFyZ3VtZW50KSkgIT0gUE9JTlRFUl9UWVBFKQoJICAgIHsKCSAgICAg
IGVycm9yICgibm9ubnVsbCBhcmd1bWVudCByZWZlcmVuY2VzIG5vbi1wb2ludGVyIG9wZXJh
bmQgKGFyZyAlbHUsIG9wZXJhbmQgJWx1KSIsCgkJICAgKHVuc2lnbmVkIGxvbmcpIGF0dHJf
YXJnX251bSwgKHVuc2lnbmVkIGxvbmcpIGFyZ19udW0pOwoJICAgICAgKm5vX2FkZF9hdHRy
cyA9IHRydWU7CgkgICAgICByZXR1cm4gTlVMTF9UUkVFOwoJICAgIH0KCX0KICAgIH0KCiAg
cmV0dXJuIE5VTExfVFJFRTsKfQoKLyogQ2hlY2sgdGhlIGFyZ3VtZW50IGxpc3Qgb2YgYSBm
dW5jdGlvbiBjYWxsIGZvciBudWxsIGluIGFyZ3VtZW50IHNsb3RzCiAgIHRoYXQgYXJlIG1h
cmtlZCBhcyByZXF1aXJpbmcgYSBub24tbnVsbCBwb2ludGVyIGFyZ3VtZW50LiAgKi8KCnN0
YXRpYyB2b2lkCmNoZWNrX2Z1bmN0aW9uX25vbm51bGwgKHRyZWUgYXR0cnMsIHRyZWUgcGFy
YW1zKQp7CiAgdHJlZSBhLCBhcmdzLCBwYXJhbTsKICBpbnQgcGFyYW1fbnVtOwoKICBmb3Ig
KGEgPSBhdHRyczsgYTsgYSA9IFRSRUVfQ0hBSU4gKGEpKQogICAgewogICAgICBpZiAoaXNf
YXR0cmlidXRlX3AgKCJub25udWxsIiwgVFJFRV9QVVJQT1NFIChhKSkpCgl7CiAgICAgICAg
ICBhcmdzID0gVFJFRV9WQUxVRSAoYSk7CgogICAgICAgICAgLyogV2FsayB0aGUgYXJndW1l
bnQgbGlzdC4gIElmIHdlIGVuY291bnRlciBhbiBhcmd1bWVudCBudW1iZXIgd2UKICAgICAg
ICAgICAgIHNob3VsZCBjaGVjayBmb3Igbm9uLW51bGwsIGRvIGl0LiAgSWYgdGhlIGF0dHJp
YnV0ZSBoYXMgbm8gYXJncywKICAgICAgICAgICAgIHRoZW4gZXZlcnkgcG9pbnRlciBhcmd1
bWVudCBpcyBjaGVja2VkIChpbiB3aGljaCBjYXNlIHRoZSBjaGVjawoJICAgICBmb3IgcG9p
bnRlciB0eXBlIGlzIGRvbmUgaW4gY2hlY2tfbm9ubnVsbF9hcmcpLiAgKi8KICAgICAgICAg
IGZvciAocGFyYW0gPSBwYXJhbXMsIHBhcmFtX251bSA9IDE7IDsKICAgICAgICAgICAgICAg
cGFyYW1fbnVtKyssIHBhcmFtID0gVFJFRV9DSEFJTiAocGFyYW0pKQogICAgICAgICAgICB7
CiAgICAgICAgICAgICAgaWYgKCEgcGFyYW0pCglicmVhazsKICAgICAgICAgICAgICBpZiAo
ISBhcmdzIHx8IG5vbm51bGxfY2hlY2tfcCAoYXJncywgcGFyYW1fbnVtKSkKCWNoZWNrX2Z1
bmN0aW9uX2FyZ3VtZW50c19yZWN1cnNlIChjaGVja19ub25udWxsX2FyZywgTlVMTCwKCQkJ
CQkgIFRSRUVfVkFMVUUgKHBhcmFtKSwKCQkJCQkgIHBhcmFtX251bSk7CiAgICAgICAgICAg
IH0KCX0KICAgIH0KfQoKLyogSGVscGVyIGZvciBjaGVja19mdW5jdGlvbl9ub25udWxsOyBn
aXZlbiBhIGxpc3Qgb2Ygb3BlcmFuZHMgd2hpY2gKICAgbXVzdCBiZSBub24tbnVsbCBpbiBB
UkdTLCBkZXRlcm1pbmUgaWYgb3BlcmFuZCBQQVJBTV9OVU0gc2hvdWxkIGJlCiAgIGNoZWNr
ZWQuICAqLwoKc3RhdGljIGJvb2wKbm9ubnVsbF9jaGVja19wICh0cmVlIGFyZ3MsIHVuc2ln
bmVkIEhPU1RfV0lERV9JTlQgcGFyYW1fbnVtKQp7CiAgdW5zaWduZWQgSE9TVF9XSURFX0lO
VCBhcmdfbnVtOwoKICBmb3IgKDsgYXJnczsgYXJncyA9IFRSRUVfQ0hBSU4gKGFyZ3MpKQog
ICAgewogICAgICBpZiAoISBnZXRfbm9ubnVsbF9vcGVyYW5kIChUUkVFX1ZBTFVFIChhcmdz
KSwgJmFyZ19udW0pKQogICAgICAgIGFib3J0ICgpOwoKICAgICAgaWYgKGFyZ19udW0gPT0g
cGFyYW1fbnVtKQoJcmV0dXJuIHRydWU7CiAgICB9CiAgcmV0dXJuIGZhbHNlOwp9CgovKiBD
aGVjayB0aGF0IHRoZSBmdW5jdGlvbiBhcmd1bWVudCBQQVJBTSAod2hpY2ggaXMgb3BlcmFu
ZCBudW1iZXIKICAgUEFSQU1fTlVNKSBpcyBub24tbnVsbC4gIFRoaXMgaXMgY2FsbGVkIGJ5
IGNoZWNrX2Z1bmN0aW9uX25vbm51bGwKICAgdmlhIGNoZWNrX2Z1bmN0aW9uX2FyZ3VtZW50
c19yZWN1cnNlLiAgKi8KCnN0YXRpYyB2b2lkCmNoZWNrX25vbm51bGxfYXJnICh2b2lkICpj
dHggQVRUUklCVVRFX1VOVVNFRCwgdHJlZSBwYXJhbSwKCQkgICB1bnNpZ25lZCBIT1NUX1dJ
REVfSU5UIHBhcmFtX251bSkKewogIC8qIEp1c3Qgc2tpcCBjaGVja2luZyB0aGUgYXJndW1l
bnQgaWYgaXQncyBub3QgYSBwb2ludGVyLiAgVGhpcyBjYW4KICAgICBoYXBwZW4gaWYgdGhl
ICJub25udWxsIiBhdHRyaWJ1dGUgd2FzIGdpdmVuIHdpdGhvdXQgYW4gb3BlcmFuZAogICAg
IGxpc3QgKHdoaWNoIG1lYW5zIHRvIGNoZWNrIGV2ZXJ5IHBvaW50ZXIgYXJndW1lbnQpLiAg
Ki8KCiAgaWYgKFRSRUVfQ09ERSAoVFJFRV9UWVBFIChwYXJhbSkpICE9IFBPSU5URVJfVFlQ
RSkKICAgIHJldHVybjsKCiAgaWYgKGludGVnZXJfemVyb3AgKHBhcmFtKSkKICAgIHdhcm5p
bmcgKCJudWxsIGFyZ3VtZW50IHdoZXJlIG5vbi1udWxsIHJlcXVpcmVkIChhcmcgJWx1KSIs
CiAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykgcGFyYW1fbnVtKTsKfQoKLyogSGVscGVy
IGZvciBub25udWxsIGF0dHJpYnV0ZSBoYW5kbGluZzsgZmV0Y2ggdGhlIG9wZXJhbmQgbnVt
YmVyCiAgIGZyb20gdGhlIGF0dHJpYnV0ZSBhcmd1bWVudCBsaXN0LiAgKi8KCnN0YXRpYyBi
b29sCmdldF9ub25udWxsX29wZXJhbmQgKHRyZWUgYXJnX251bV9leHByLCB1bnNpZ25lZCBI
T1NUX1dJREVfSU5UICp2YWxwKQp7CiAgLyogU3RyaXAgYW55IGNvbnZlcnNpb25zIGZyb20g
dGhlIGFyZyBudW1iZXIgYW5kIHZlcmlmeSB0aGV5CiAgICAgYXJlIGNvbnN0YW50cy4gICov
CiAgd2hpbGUgKFRSRUVfQ09ERSAoYXJnX251bV9leHByKSA9PSBOT1BfRVhQUgoJIHx8IFRS
RUVfQ09ERSAoYXJnX251bV9leHByKSA9PSBDT05WRVJUX0VYUFIKCSB8fCBUUkVFX0NPREUg
KGFyZ19udW1fZXhwcikgPT0gTk9OX0xWQUxVRV9FWFBSKQogICAgYXJnX251bV9leHByID0g
VFJFRV9PUEVSQU5EIChhcmdfbnVtX2V4cHIsIDApOwoKICBpZiAoVFJFRV9DT0RFIChhcmdf
bnVtX2V4cHIpICE9IElOVEVHRVJfQ1NUCiAgICAgIHx8IFRSRUVfSU5UX0NTVF9ISUdIIChh
cmdfbnVtX2V4cHIpICE9IDApCiAgICByZXR1cm4gZmFsc2U7CgogICp2YWxwID0gVFJFRV9J
TlRfQ1NUX0xPVyAoYXJnX251bV9leHByKTsKICByZXR1cm4gdHJ1ZTsKfQoKLyogSGFuZGxl
IGEgIm5vdGhyb3ciIGF0dHJpYnV0ZTsgYXJndW1lbnRzIGFzIGluCiAgIHN0cnVjdCBhdHRy
aWJ1dGVfc3BlYy5oYW5kbGVyLiAgKi8KCnN0YXRpYyB0cmVlCmhhbmRsZV9ub3Rocm93X2F0
dHJpYnV0ZSAodHJlZSAqbm9kZSwgdHJlZSBuYW1lLCB0cmVlIGFyZ3MgQVRUUklCVVRFX1VO
VVNFRCwKCQkJICBpbnQgZmxhZ3MgQVRUUklCVVRFX1VOVVNFRCwgYm9vbCAqbm9fYWRkX2F0
dHJzKQp7CiAgaWYgKFRSRUVfQ09ERSAoKm5vZGUpID09IEZVTkNUSU9OX0RFQ0wpCiAgICBU
UkVFX05PVEhST1cgKCpub2RlKSA9IDE7CiAgLyogPz8/IFRPRE86IFN1cHBvcnQgdHlwZXMu
ICAqLwogIGVsc2UKICAgIHsKICAgICAgd2FybmluZyAoImAlcycgYXR0cmlidXRlIGlnbm9y
ZWQiLCBJREVOVElGSUVSX1BPSU5URVIgKG5hbWUpKTsKICAgICAgKm5vX2FkZF9hdHRycyA9
IHRydWU7CiAgICB9CgogIHJldHVybiBOVUxMX1RSRUU7Cn0KCi8qIEhhbmRsZSBhICJjbGVh
bnVwIiBhdHRyaWJ1dGU7IGFyZ3VtZW50cyBhcyBpbgogICBzdHJ1Y3QgYXR0cmlidXRlX3Nw
ZWMuaGFuZGxlci4gICovCgpzdGF0aWMgdHJlZQpoYW5kbGVfY2xlYW51cF9hdHRyaWJ1dGUg
KHRyZWUgKm5vZGUsIHRyZWUgbmFtZSwgdHJlZSBhcmdzLAoJCQkgIGludCBmbGFncyBBVFRS
SUJVVEVfVU5VU0VELCBib29sICpub19hZGRfYXR0cnMpCnsKICB0cmVlIGRlY2wgPSAqbm9k
ZTsKICB0cmVlIGNsZWFudXBfaWQsIGNsZWFudXBfZGVjbDsKCiAgLyogPz8/IENvdWxkIHBl
cmhhcHMgc3VwcG9ydCBjbGVhbnVwcyBvbiBUUkVFX1NUQVRJQywgbXVjaCBsaWtlIHdlIGRv
CiAgICAgZm9yIGdsb2JhbCBkZXN0cnVjdG9ycyBpbiBDKysuICBUaGlzIHJlcXVpcmVzIGlu
ZnJhc3RydWN0dXJlIHRoYXQKICAgICB3ZSBkb24ndCBoYXZlIGdlbmVyaWNhbGx5IGF0IHRo
ZSBtb21lbnQuICBJdCdzIGFsc28gbm90IGEgZmVhdHVyZQogICAgIHdlJ2QgYmUgbWlzc2lu
ZyB0b28gbXVjaCwgc2luY2Ugd2UgZG8gaGF2ZSBhdHRyaWJ1dGUgY29uc3RydWN0b3IuICAq
LwogIGlmIChUUkVFX0NPREUgKGRlY2wpICE9IFZBUl9ERUNMIHx8IFRSRUVfU1RBVElDIChk
ZWNsKSkKICAgIHsKICAgICAgd2FybmluZyAoImAlcycgYXR0cmlidXRlIGlnbm9yZWQiLCBJ
REVOVElGSUVSX1BPSU5URVIgKG5hbWUpKTsKICAgICAgKm5vX2FkZF9hdHRycyA9IHRydWU7
CiAgICAgIHJldHVybiBOVUxMX1RSRUU7CiAgICB9CgogIC8qIFZlcmlmeSB0aGF0IHRoZSBh
cmd1bWVudCBpcyBhIGZ1bmN0aW9uIGluIHNjb3BlLiAgKi8KICAvKiA/Pz8gV2UgY291bGQg
c3VwcG9ydCBwb2ludGVycyB0byBmdW5jdGlvbnMgaGVyZSBhcyB3ZWxsLCBpZgogICAgIHRo
YXQgd2FzIGNvbnNpZGVyZWQgZGVzaXJhYmxlLiAgKi8KICBjbGVhbnVwX2lkID0gVFJFRV9W
QUxVRSAoYXJncyk7CiAgaWYgKFRSRUVfQ09ERSAoY2xlYW51cF9pZCkgIT0gSURFTlRJRklF
Ul9OT0RFKQogICAgewogICAgICBlcnJvciAoImNsZWFudXAgYXJnIG5vdCBhbiBpZGVudGlm
aWVyIik7CiAgICAgICpub19hZGRfYXR0cnMgPSB0cnVlOwogICAgICByZXR1cm4gTlVMTF9U
UkVFOwogICAgfQogIGNsZWFudXBfZGVjbCA9IGxvb2t1cF9uYW1lIChjbGVhbnVwX2lkKTsK
ICBpZiAoIWNsZWFudXBfZGVjbCB8fCBUUkVFX0NPREUgKGNsZWFudXBfZGVjbCkgIT0gRlVO
Q1RJT05fREVDTCkKICAgIHsKICAgICAgZXJyb3IgKCJjbGVhbnVwIGFyZyBub3QgYSBmdW5j
dGlvbiIpOwogICAgICAqbm9fYWRkX2F0dHJzID0gdHJ1ZTsKICAgICAgcmV0dXJuIE5VTExf
VFJFRTsKICAgIH0KCiAgLyogVGhhdCB0aGUgZnVuY3Rpb24gaGFzIHByb3BlciB0eXBlIGlz
IGNoZWNrZWQgd2l0aCB0aGUKICAgICBldmVudHVhbCBjYWxsIHRvIGJ1aWxkX2Z1bmN0aW9u
X2NhbGwuICAqLwoKICByZXR1cm4gTlVMTF9UUkVFOwp9CgwKLyogQ2hlY2sgZm9yIHZhbGlk
IGFyZ3VtZW50cyBiZWluZyBwYXNzZWQgdG8gYSBmdW5jdGlvbi4gICovCnZvaWQKY2hlY2tf
ZnVuY3Rpb25fYXJndW1lbnRzICh0cmVlIGF0dHJzLCB0cmVlIHBhcmFtcykKewogIC8qIENo
ZWNrIGZvciBudWxsIGJlaW5nIHBhc3NlZCBpbiBhIHBvaW50ZXIgYXJndW1lbnQgdGhhdCBt
dXN0IGJlCiAgICAgbm9uLW51bGwuICBXZSBhbHNvIG5lZWQgdG8gZG8gdGhpcyBpZiBmb3Jt
YXQgY2hlY2tpbmcgaXMgZW5hYmxlZC4gICovCgogIGlmICh3YXJuX25vbm51bGwpCiAgICBj
aGVja19mdW5jdGlvbl9ub25udWxsIChhdHRycywgcGFyYW1zKTsKCiAgLyogQ2hlY2sgZm9y
IGVycm9ycyBpbiBmb3JtYXQgc3RyaW5ncy4gICovCgogIGlmICh3YXJuX2Zvcm1hdCkKICAg
IGNoZWNrX2Z1bmN0aW9uX2Zvcm1hdCAoTlVMTCwgYXR0cnMsIHBhcmFtcyk7Cn0KCi8qIEdl
bmVyaWMgYXJndW1lbnQgY2hlY2tpbmcgcmVjdXJzaW9uIHJvdXRpbmUuICBQQVJBTSBpcyB0
aGUgYXJndW1lbnQgdG8KICAgYmUgY2hlY2tlZC4gIFBBUkFNX05VTSBpcyB0aGUgbnVtYmVy
IG9mIHRoZSBhcmd1bWVudC4gIENBTExCQUNLIGlzIGludm9rZWQKICAgb25jZSB0aGUgYXJn
dW1lbnQgaXMgcmVzb2x2ZWQuICBDVFggaXMgY29udGV4dCBmb3IgdGhlIGNhbGxiYWNrLiAg
Ki8Kdm9pZApjaGVja19mdW5jdGlvbl9hcmd1bWVudHNfcmVjdXJzZSAodm9pZCAoKmNhbGxi
YWNrKQoJCQkJICAodm9pZCAqLCB0cmVlLCB1bnNpZ25lZCBIT1NUX1dJREVfSU5UKSwKCQkJ
CSAgdm9pZCAqY3R4LCB0cmVlIHBhcmFtLAoJCQkJICB1bnNpZ25lZCBIT1NUX1dJREVfSU5U
IHBhcmFtX251bSkKewogIGlmIChUUkVFX0NPREUgKHBhcmFtKSA9PSBOT1BfRVhQUikKICAg
IHsKICAgICAgLyogU3RyaXAgY29lcmNpb24uICAqLwogICAgICBjaGVja19mdW5jdGlvbl9h
cmd1bWVudHNfcmVjdXJzZSAoY2FsbGJhY2ssIGN0eCwKCQkJCSAgICAgICAgVFJFRV9PUEVS
QU5EIChwYXJhbSwgMCksIHBhcmFtX251bSk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgaWYg
KFRSRUVfQ09ERSAocGFyYW0pID09IENBTExfRVhQUikKICAgIHsKICAgICAgdHJlZSB0eXBl
ID0gVFJFRV9UWVBFIChUUkVFX1RZUEUgKFRSRUVfT1BFUkFORCAocGFyYW0sIDApKSk7CiAg
ICAgIHRyZWUgYXR0cnM7CiAgICAgIGJvb2wgZm91bmRfZm9ybWF0X2FyZyA9IGZhbHNlOwoK
ICAgICAgLyogU2VlIGlmIHRoaXMgaXMgYSBjYWxsIHRvIGEga25vd24gaW50ZXJuYXRpb25h
bGl6YXRpb24gZnVuY3Rpb24KCSB0aGF0IG1vZGlmaWVzIGEgZm9ybWF0IGFyZy4gIFN1Y2gg
YSBmdW5jdGlvbiBtYXkgaGF2ZSBtdWx0aXBsZQoJIGZvcm1hdF9hcmcgYXR0cmlidXRlcyAo
Zm9yIGV4YW1wbGUsIG5nZXR0ZXh0KS4gICovCgogICAgICBmb3IgKGF0dHJzID0gVFlQRV9B
VFRSSUJVVEVTICh0eXBlKTsKCSAgIGF0dHJzOwoJICAgYXR0cnMgPSBUUkVFX0NIQUlOIChh
dHRycykpCglpZiAoaXNfYXR0cmlidXRlX3AgKCJmb3JtYXRfYXJnIiwgVFJFRV9QVVJQT1NF
IChhdHRycykpKQoJICB7CgkgICAgdHJlZSBpbm5lcl9hcmdzOwoJICAgIHRyZWUgZm9ybWF0
X251bV9leHByOwoJICAgIGludCBmb3JtYXRfbnVtOwoJICAgIGludCBpOwoKCSAgICAvKiBF
eHRyYWN0IHRoZSBhcmd1bWVudCBudW1iZXIsIHdoaWNoIHdhcyBwcmV2aW91c2x5IGNoZWNr
ZWQKCSAgICAgICB0byBiZSB2YWxpZC4gICovCgkgICAgZm9ybWF0X251bV9leHByID0gVFJF
RV9WQUxVRSAoVFJFRV9WQUxVRSAoYXR0cnMpKTsKCSAgICB3aGlsZSAoVFJFRV9DT0RFIChm
b3JtYXRfbnVtX2V4cHIpID09IE5PUF9FWFBSCgkJICAgfHwgVFJFRV9DT0RFIChmb3JtYXRf
bnVtX2V4cHIpID09IENPTlZFUlRfRVhQUgoJCSAgIHx8IFRSRUVfQ09ERSAoZm9ybWF0X251
bV9leHByKSA9PSBOT05fTFZBTFVFX0VYUFIpCgkgICAgICBmb3JtYXRfbnVtX2V4cHIgPSBU
UkVFX09QRVJBTkQgKGZvcm1hdF9udW1fZXhwciwgMCk7CgoJICAgIGlmIChUUkVFX0NPREUg
KGZvcm1hdF9udW1fZXhwcikgIT0gSU5URUdFUl9DU1QKCQl8fCBUUkVFX0lOVF9DU1RfSElH
SCAoZm9ybWF0X251bV9leHByKSAhPSAwKQoJICAgICAgYWJvcnQgKCk7CgoJICAgIGZvcm1h
dF9udW0gPSBUUkVFX0lOVF9DU1RfTE9XIChmb3JtYXRfbnVtX2V4cHIpOwoKCSAgICBmb3Ig
KGlubmVyX2FyZ3MgPSBUUkVFX09QRVJBTkQgKHBhcmFtLCAxKSwgaSA9IDE7CgkJIGlubmVy
X2FyZ3MgIT0gMDsKCQkgaW5uZXJfYXJncyA9IFRSRUVfQ0hBSU4gKGlubmVyX2FyZ3MpLCBp
KyspCgkgICAgICBpZiAoaSA9PSBmb3JtYXRfbnVtKQoJCXsKCQkgIGNoZWNrX2Z1bmN0aW9u
X2FyZ3VtZW50c19yZWN1cnNlIChjYWxsYmFjaywgY3R4LAoJCQkJCQkgICAgVFJFRV9WQUxV
RSAoaW5uZXJfYXJncyksCgkJCQkJCSAgICBwYXJhbV9udW0pOwoJCSAgZm91bmRfZm9ybWF0
X2FyZyA9IHRydWU7CgkJICBicmVhazsKCQl9CgkgIH0KCiAgICAgIC8qIElmIHdlIGZvdW5k
IGEgZm9ybWF0X2FyZyBhdHRyaWJ1dGUgYW5kIGRpZCBhIHJlY3Vyc2l2ZSBjaGVjaywKCSB3
ZSBhcmUgZG9uZSB3aXRoIGNoZWNraW5nIHRoaXMgYXJndW1lbnQuICBPdGhlcndpc2UsIHdl
IGNvbnRpbnVlCgkgYW5kIHRoaXMgd2lsbCBiZSBjb25zaWRlcmVkIGEgbm9uLWxpdGVyYWwu
ICAqLwogICAgICBpZiAoZm91bmRfZm9ybWF0X2FyZykKCXJldHVybjsKICAgIH0KCiAgaWYg
KFRSRUVfQ09ERSAocGFyYW0pID09IENPTkRfRVhQUikKICAgIHsKICAgICAgLyogQ2hlY2sg
Ym90aCBoYWx2ZXMgb2YgdGhlIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24uICAqLwogICAgICBj
aGVja19mdW5jdGlvbl9hcmd1bWVudHNfcmVjdXJzZSAoY2FsbGJhY2ssIGN0eCwKCQkJCSAg
ICAgICAgVFJFRV9PUEVSQU5EIChwYXJhbSwgMSksIHBhcmFtX251bSk7CiAgICAgIGNoZWNr
X2Z1bmN0aW9uX2FyZ3VtZW50c19yZWN1cnNlIChjYWxsYmFjaywgY3R4LAoJCQkJICAgICAg
ICBUUkVFX09QRVJBTkQgKHBhcmFtLCAyKSwgcGFyYW1fbnVtKTsKICAgICAgcmV0dXJuOwog
ICAgfQoKICAoKmNhbGxiYWNrKSAoY3R4LCBwYXJhbSwgcGFyYW1fbnVtKTsKfQoKI2luY2x1
ZGUgImd0LWMtY29tbW9uLmgiCg==
_ATEOF


# decode first file and commit to db
$at_traceoff
echo "$at_srcdir/t_unidiff.at:4778: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o firstfile firstfile.b64
else
  \$UNB64_COMMAND <firstfile.b64 >firstfile
fi
"
echo t_unidiff.at:4778 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o firstfile firstfile.b64
else
  $UNB64_COMMAND <firstfile.b64 >firstfile
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o firstfile firstfile.b64
else
  $UNB64_COMMAND <firstfile.b64 >firstfile
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff.at:4778: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff.at:4779: cp firstfile testfile"
echo t_unidiff.at:4779 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp firstfile testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp firstfile testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff.at:4779: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff.at:4780: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_unidiff.at:4780 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff.at:4780: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff.at:4781: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah"
echo t_unidiff.at:4781 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff.at:4781: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff.at:4782: mv testfile firstfile"
echo t_unidiff.at:4782 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv testfile firstfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv testfile firstfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff.at:4782: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# decode second file
$at_traceoff
echo "$at_srcdir/t_unidiff.at:4785: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o secondfile secondfile.b64
else
  \$UNB64_COMMAND <secondfile.b64 >secondfile
fi
"
echo t_unidiff.at:4785 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o secondfile secondfile.b64
else
  $UNB64_COMMAND <secondfile.b64 >secondfile
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o secondfile secondfile.b64
else
  $UNB64_COMMAND <secondfile.b64 >secondfile
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff.at:4785: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# calculate diff to second file using monotone
$at_traceoff
echo "$at_srcdir/t_unidiff.at:4788: cp secondfile testfile"
echo t_unidiff.at:4788 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp secondfile testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp secondfile testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff.at:4788: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff.at:4789: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff"
echo t_unidiff.at:4789 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff.at:4789: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff.at:4790:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_unidiff.at:4790 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff.at:4790: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff.at:4791: mv stdout monodiff"
echo t_unidiff.at:4791 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout monodiff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout monodiff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff.at:4791: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# see if patch likes that
$at_traceoff
echo "$at_srcdir/t_unidiff.at:4794: patch firstfile <monodiff"
echo t_unidiff.at:4794 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; patch firstfile <monodiff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; patch firstfile <monodiff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff.at:4794: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# see if the resulting file has been properly patched
$at_traceoff
echo "$at_srcdir/t_unidiff.at:4797: cmp firstfile secondfile"
echo t_unidiff.at:4797 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp firstfile secondfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp firstfile secondfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff.at:4797: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  6 ) # 6. t_persist_phrase.at:3: persistence of passphrase
    at_setup_line='t_persist_phrase.at:3'
    at_desc='persistence of passphrase'
    $at_quiet $ECHO_N "  6: persistence of passphrase                    $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "6. t_persist_phrase.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_persist_phrase.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_persist_phrase.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persist_phrase.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persist_phrase.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_persist_phrase.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persist_phrase.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persist_phrase.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_persist_phrase.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persist_phrase.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persist_phrase.at:5: rm test_keys"
echo t_persist_phrase.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persist_phrase.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >persist.lua <<'_ATEOF'

function persist_phrase_ok()
	return true
end

get_passphrase = nil
_ATEOF


cat >input.txt <<'_ATEOF'
version 0 of the file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_persist_phrase.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add input.txt"
echo t_persist_phrase.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persist_phrase.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >input.txt <<'_ATEOF'
version 1 of the file
_ATEOF


cat >passphrase <<'_ATEOF'
tester@test.net
_ATEOF


$at_traceoff
echo "$at_srcdir/t_persist_phrase.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=persist.lua commit --message=blah-blah <passphrase"
echo t_persist_phrase.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=persist.lua commit --message=blah-blah <passphrase" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=persist.lua commit --message=blah-blah <passphrase ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=persist.lua commit --message=blah-blah <passphrase ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persist_phrase.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


TSHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_persist_phrase.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls certs \$TSHA"
echo t_persist_phrase.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $TSHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $TSHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $TSHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persist_phrase.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persist_phrase.at:30: mv stdout certs"
echo t_persist_phrase.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persist_phrase.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persist_phrase.at:31: grep branch certs"
echo t_persist_phrase.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep branch certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep branch certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persist_phrase.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persist_phrase.at:32: grep author certs"
echo t_persist_phrase.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep author certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep author certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persist_phrase.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persist_phrase.at:33: grep date certs"
echo t_persist_phrase.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep date certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep date certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persist_phrase.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persist_phrase.at:34: grep changelog certs"
echo t_persist_phrase.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep changelog certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep changelog certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persist_phrase.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  7 ) # 7. t_versions.at:3: multiple version committing
    at_setup_line='t_versions.at:3'
    at_desc='multiple version committing'
    $at_quiet $ECHO_N "  7: multiple version committing                  $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "7. t_versions.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_versions.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_versions.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_versions.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_versions.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_versions.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_versions.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_versions.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_versions.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_versions.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_versions.at:5: rm test_keys"
echo t_versions.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_versions.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
version 0 of the file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_versions.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_versions.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_versions.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_versions.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah"
echo t_versions.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_versions.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in 1 2 3 4 5 6
do
  $at_traceoff
echo "$at_srcdir/t_versions.at:14: echo \"version \$i of the file\""
echo t_versions.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo \"version $i of the file\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo "version $i of the file" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo "version $i of the file" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_versions.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

  $at_traceoff
echo "$at_srcdir/t_versions.at:15: mv stdout testfile"
echo t_versions.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_versions.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

  $at_traceoff
echo "$at_srcdir/t_versions.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah"
echo t_versions.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_versions.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

  $at_traceoff
echo "$at_srcdir/t_versions.at:17: \$_MTN_EXEC --norc --root=\$_ROOT_DIR identify testfile"
echo t_versions.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_versions.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

  $at_traceoff
echo "$at_srcdir/t_versions.at:18: mv stdout fsha-\$i"
echo t_versions.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "mv stdout fsha-$i" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout fsha-$i ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout fsha-$i ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_versions.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

  $at_traceoff
echo "$at_srcdir/t_versions.at:19: cat _MTN/revision"
echo t_versions.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat _MTN/revision ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat _MTN/revision ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_versions.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

  $at_traceoff
echo "$at_srcdir/t_versions.at:20: mv stdout rsha-\$i"
echo t_versions.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "mv stdout rsha-$i" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout rsha-$i ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout rsha-$i ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_versions.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done

for i in 1 2 3 4 5 6
do
  $at_traceoff
echo "$at_srcdir/t_versions.at:25: echo \"version \$i of the file\""
echo t_versions.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo \"version $i of the file\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo "version $i of the file" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo "version $i of the file" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_versions.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

  $at_traceoff
echo "$at_srcdir/t_versions.at:26: mv stdout testfile"
echo t_versions.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_versions.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


  RSHA=`cat rsha-$i`
  FSHA=`cat fsha-$i`

  $at_traceoff
echo "$at_srcdir/t_versions.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_file \$FSHA"
echo t_versions.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $FSHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $FSHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $FSHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_versions.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

  $at_traceoff
echo "$at_srcdir/t_versions.at:32:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_versions.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_versions.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

  $at_traceoff
echo "$at_srcdir/t_versions.at:33: cmp stdout testfile"
echo t_versions.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_versions.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


  $at_traceoff
echo "$at_srcdir/t_versions.at:35: rm -rf _MTN"
echo t_versions.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_versions.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

  $at_traceoff
echo "$at_srcdir/t_versions.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$RSHA ."
echo t_versions.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$RSHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$RSHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$RSHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_versions.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

  $at_traceoff
echo "$at_srcdir/t_versions.at:37: \$_MTN_EXEC --norc --root=\$_ROOT_DIR identify testfile"
echo t_versions.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_versions.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

  $at_traceoff
echo "$at_srcdir/t_versions.at:38: cmp stdout fsha-\$i"
echo t_versions.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cmp stdout fsha-$i" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout fsha-$i ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout fsha-$i ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_versions.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


done

      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  8 ) # 8. t_fork.at:3: creating a fork
    at_setup_line='t_fork.at:3'
    at_desc='creating a fork'
    $at_quiet $ECHO_N "  8: creating a fork                              $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "8. t_fork.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_fork.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_fork.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_fork.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_fork.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:5: rm test_keys"
echo t_fork.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
version 0 of test file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_fork.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_fork.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah"
echo t_fork.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

ROOT_R_SHA=`cat _MTN/revision`
ROOT_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`

cat >testfile <<'_ATEOF'
left version of fork
_ATEOF

$at_traceoff
echo "$at_srcdir/t_fork.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah"
echo t_fork.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

LEFT_R_SHA=`cat _MTN/revision`
LEFT_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
$at_traceoff
echo "$at_srcdir/t_fork.at:21: test \$LEFT_R_SHA != \$ROOT_R_SHA"
echo t_fork.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $LEFT_R_SHA != $ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $LEFT_R_SHA != $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $LEFT_R_SHA != $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:22: test \$LEFT_F_SHA != \$ROOT_F_SHA"
echo t_fork.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $LEFT_F_SHA != $ROOT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $LEFT_F_SHA != $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $LEFT_F_SHA != $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_fork.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch heads"
echo t_fork.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch heads" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch heads ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch heads ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:25: grep empty stdout"
echo t_fork.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep empty stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep empty stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_fork.at:25: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_fork.at:27: rm -rf _MTN.old"
echo t_fork.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:27: mv  _MTN _MTN.old"
echo t_fork.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:27: rm testfile"
echo t_fork.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$ROOT_R_SHA ."
echo t_fork.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:27: mv _MTN.old/options _MTN"
echo t_fork.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
PROBE_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
$at_traceoff
echo "$at_srcdir/t_fork.at:27: test \$PROBE_R_SHA = \$ROOT_R_SHA"
echo t_fork.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:27: test \$PROBE_F_SHA = \$ROOT_F_SHA"
echo t_fork.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_F_SHA = $ROOT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_F_SHA = $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_F_SHA = $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
right version of fork
_ATEOF

$at_traceoff
echo "$at_srcdir/t_fork.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_fork.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah"
echo t_fork.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

RIGHT_R_SHA=`cat _MTN/revision`
RIGHT_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
$at_traceoff
echo "$at_srcdir/t_fork.at:35: test \$RIGHT_R_SHA != \$ROOT_R_SHA"
echo t_fork.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $RIGHT_R_SHA != $ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $RIGHT_R_SHA != $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $RIGHT_R_SHA != $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:36: test \$RIGHT_F_SHA != \$ROOT_F_SHA"
echo t_fork.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $RIGHT_F_SHA != $ROOT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $RIGHT_F_SHA != $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $RIGHT_F_SHA != $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:37: test \$RIGHT_R_SHA != \$LEFT_R_SHA"
echo t_fork.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $RIGHT_R_SHA != $LEFT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $RIGHT_R_SHA != $LEFT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $RIGHT_R_SHA != $LEFT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:38: test \$RIGHT_F_SHA != \$LEFT_F_SHA"
echo t_fork.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $RIGHT_F_SHA != $LEFT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $RIGHT_F_SHA != $LEFT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $RIGHT_F_SHA != $LEFT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# fork committed ok. now check to make sure
# all 3 nodes are reconstructable


$at_traceoff
echo "$at_srcdir/t_fork.at:43: rm -rf _MTN.old"
echo t_fork.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:43: mv  _MTN _MTN.old"
echo t_fork.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:43: rm testfile"
echo t_fork.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$ROOT_R_SHA ."
echo t_fork.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:43: mv _MTN.old/options _MTN"
echo t_fork.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
PROBE_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
$at_traceoff
echo "$at_srcdir/t_fork.at:43: test \$PROBE_R_SHA = \$ROOT_R_SHA"
echo t_fork.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:43: test \$PROBE_F_SHA = \$ROOT_F_SHA"
echo t_fork.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_F_SHA = $ROOT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_F_SHA = $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_F_SHA = $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_fork.at:44: rm -rf _MTN.old"
echo t_fork.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:44: mv  _MTN _MTN.old"
echo t_fork.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:44: rm testfile"
echo t_fork.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:44: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$LEFT_R_SHA ."
echo t_fork.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$LEFT_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$LEFT_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$LEFT_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:44: mv _MTN.old/options _MTN"
echo t_fork.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
PROBE_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
$at_traceoff
echo "$at_srcdir/t_fork.at:44: test \$PROBE_R_SHA = \$LEFT_R_SHA"
echo t_fork.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $LEFT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $LEFT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $LEFT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:44: test \$PROBE_F_SHA = \$LEFT_F_SHA"
echo t_fork.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_F_SHA = $LEFT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_F_SHA = $LEFT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_F_SHA = $LEFT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_fork.at:45: rm -rf _MTN.old"
echo t_fork.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:45: mv  _MTN _MTN.old"
echo t_fork.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:45: rm testfile"
echo t_fork.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:45: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$RIGHT_R_SHA ."
echo t_fork.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$RIGHT_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$RIGHT_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$RIGHT_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:45: mv _MTN.old/options _MTN"
echo t_fork.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
PROBE_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
$at_traceoff
echo "$at_srcdir/t_fork.at:45: test \$PROBE_R_SHA = \$RIGHT_R_SHA"
echo t_fork.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $RIGHT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $RIGHT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $RIGHT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fork.at:45: test \$PROBE_F_SHA = \$RIGHT_F_SHA"
echo t_fork.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_F_SHA = $RIGHT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_F_SHA = $RIGHT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_F_SHA = $RIGHT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fork.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  9 ) # 9. t_update.at:3: creating a fork and updating
    at_setup_line='t_update.at:3'
    at_desc='creating a fork and updating'
    $at_quiet $ECHO_N "  9: creating a fork and updating                 $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "9. t_update.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_update.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_update.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_update.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_update.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update.at:5: rm test_keys"
echo t_update.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# this test is kinda like fork, only it doesn't commit the right side of
# the fork; instead, it updates, and (in theory) shifts from right to
# merged-with-left

cat >testfile <<'_ATEOF'
first line of the file
second line of the file
third line of the file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_update.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_update.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah"
echo t_update.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

ROOT_R_SHA=`cat _MTN/revision`
ROOT_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`

cat >testfile <<'_ATEOF'
first line of the file
an insertion between first and second
second line of the file
third line of the file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_update.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah"
echo t_update.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

LEFT_R_SHA=`cat _MTN/revision`
LEFT_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
$at_traceoff
echo "$at_srcdir/t_update.at:29: test \$LEFT_R_SHA != \$ROOT_R_SHA"
echo t_update.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $LEFT_R_SHA != $ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $LEFT_R_SHA != $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $LEFT_R_SHA != $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update.at:30: test \$LEFT_F_SHA != \$ROOT_F_SHA"
echo t_update.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $LEFT_F_SHA != $ROOT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $LEFT_F_SHA != $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $LEFT_F_SHA != $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_update.at:32: rm -rf _MTN.old"
echo t_update.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update.at:32: mv  _MTN _MTN.old"
echo t_update.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update.at:32: rm testfile"
echo t_update.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$ROOT_R_SHA ."
echo t_update.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update.at:32: mv _MTN.old/options _MTN"
echo t_update.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
PROBE_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
$at_traceoff
echo "$at_srcdir/t_update.at:32: test \$PROBE_R_SHA = \$ROOT_R_SHA"
echo t_update.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update.at:32: test \$PROBE_F_SHA = \$ROOT_F_SHA"
echo t_update.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_F_SHA = $ROOT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_F_SHA = $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_F_SHA = $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
first line of the file
second line of the file
an insertion between second and third
third line of the file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_update.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_update.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# files should now be merged

cat >probe <<'_ATEOF'
first line of the file
an insertion between first and second
second line of the file
an insertion between second and third
third line of the file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_update.at:51: cmp testfile probe"
echo t_update.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile probe ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile probe ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  10 ) # 10. t_merge.at:3: creating a fork and merging
    at_setup_line='t_merge.at:3'
    at_desc='creating a fork and merging'
    $at_quiet $ECHO_N " 10: creating a fork and merging                  $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "10. t_merge.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_merge.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_merge.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_merge.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge.at:5: rm test_keys"
echo t_merge.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# this test is kinda like update, only it *does* commit the left right
# branch before attempting a merge. it just checks to make sure merging
# works in the context of the "merge" command, not just the "update"
# command.

cat >testfile <<'_ATEOF'
first line of the file
second line of the file
third line of the file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_merge.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_merge.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah"
echo t_merge.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

ROOT_R_SHA=`cat _MTN/revision`
ROOT_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`

cat >testfile <<'_ATEOF'
first line of the file
an insertion between first and second
second line of the file
third line of the file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah"
echo t_merge.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

LEFT_R_SHA=`cat _MTN/revision`
LEFT_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
$at_traceoff
echo "$at_srcdir/t_merge.at:30: test \$LEFT_R_SHA != \$ROOT_R_SHA"
echo t_merge.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $LEFT_R_SHA != $ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $LEFT_R_SHA != $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $LEFT_R_SHA != $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge.at:31: test \$LEFT_F_SHA != \$ROOT_F_SHA"
echo t_merge.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $LEFT_F_SHA != $ROOT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $LEFT_F_SHA != $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $LEFT_F_SHA != $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge.at:33: rm -rf _MTN.old"
echo t_merge.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge.at:33: mv  _MTN _MTN.old"
echo t_merge.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge.at:33: rm testfile"
echo t_merge.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$ROOT_R_SHA ."
echo t_merge.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge.at:33: mv _MTN.old/options _MTN"
echo t_merge.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
PROBE_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
$at_traceoff
echo "$at_srcdir/t_merge.at:33: test \$PROBE_R_SHA = \$ROOT_R_SHA"
echo t_merge.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge.at:33: test \$PROBE_F_SHA = \$ROOT_F_SHA"
echo t_merge.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_F_SHA = $ROOT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_F_SHA = $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_F_SHA = $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
first line of the file
second line of the file
an insertion between second and third
third line of the file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_merge.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah"
echo t_merge.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

RIGHT_R_SHA=`cat _MTN/revision`
RIGHT_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
$at_traceoff
echo "$at_srcdir/t_merge.at:43: test \$RIGHT_R_SHA != \$ROOT_R_SHA"
echo t_merge.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $RIGHT_R_SHA != $ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $RIGHT_R_SHA != $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $RIGHT_R_SHA != $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge.at:44: test \$RIGHT_F_SHA != \$ROOT_F_SHA"
echo t_merge.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $RIGHT_F_SHA != $ROOT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $RIGHT_F_SHA != $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $RIGHT_F_SHA != $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge.at:45: test \$RIGHT_R_SHA != \$LEFT_R_SHA"
echo t_merge.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $RIGHT_R_SHA != $LEFT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $RIGHT_R_SHA != $LEFT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $RIGHT_R_SHA != $LEFT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge.at:46: test \$RIGHT_F_SHA != \$LEFT_F_SHA"
echo t_merge.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $RIGHT_F_SHA != $LEFT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $RIGHT_F_SHA != $LEFT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $RIGHT_F_SHA != $LEFT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# now merge and update again, this time successfully
$at_traceoff
echo "$at_srcdir/t_merge.at:49: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge"
echo t_merge.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge.at:50: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_merge.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch heads"
echo t_merge.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch heads" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch heads ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch heads ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge.at:53: grep empty stdout"
echo t_merge.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep empty stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep empty stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_merge.at:53: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# files should now be merged
cat >probe <<'_ATEOF'
first line of the file
an insertion between first and second
second line of the file
an insertion between second and third
third line of the file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_merge.at:62: cmp testfile probe"
echo t_merge.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile probe ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile probe ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  11 ) # 11. t_merge_add.at:1: merging adds
    at_setup_line='t_merge_add.at:1'
    at_desc='merging adds'
    $at_quiet $ECHO_N " 11: merging adds                                 $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "11. t_merge_add.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge_add.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_merge_add.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_merge_add.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_merge_add.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add.at:2: rm test_keys"
echo t_merge_add.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >irrelevantfile <<'_ATEOF'
this is just a file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_merge_add.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add irrelevantfile"
echo t_merge_add.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add irrelevantfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add irrelevantfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add irrelevantfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_add.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge_add.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


ANC=`cat _MTN/revision`


cat >testfile1 <<'_ATEOF'
This is test file 1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_merge_add.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile1"
echo t_merge_add.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_add.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge_add.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


LEFT=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_merge_add.at:14: rm -rf _MTN.old"
echo t_merge_add.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add.at:14: mv  _MTN _MTN.old"
echo t_merge_add.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$ANC ."
echo t_merge_add.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ANC ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ANC . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ANC . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_merge_add.at:14: test \$PROBE_R_SHA = \$ANC"
echo t_merge_add.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $ANC" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $ANC ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $ANC ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile2 <<'_ATEOF'
This is test file 2
_ATEOF

$at_traceoff
echo "$at_srcdir/t_merge_add.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile2"
echo t_merge_add.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_add.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge_add.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


RIGHT=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_merge_add.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge"
echo t_merge_add.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_merge_add.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >expected_irrelevant <<'_ATEOF'
this is just a file
_ATEOF

cat >expected_data1 <<'_ATEOF'
This is test file 1
_ATEOF

cat >expected_data2 <<'_ATEOF'
This is test file 2
_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge_add.at:31: cmp irrelevantfile expected_irrelevant"
echo t_merge_add.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp irrelevantfile expected_irrelevant ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp irrelevantfile expected_irrelevant ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add.at:32: cmp testfile1 expected_data1"
echo t_merge_add.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile1 expected_data1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile1 expected_data1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add.at:33: cmp testfile2 expected_data2"
echo t_merge_add.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile2 expected_data2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile2 expected_data2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  12 ) # 12. t_related_merge2_data.at:1: merging data in unrelated files
    at_setup_line='t_related_merge2_data.at:1'
    at_desc='merging data in unrelated files'
    $at_quiet $ECHO_N " 12: merging data in unrelated files              $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "12. t_related_merge2_data.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_related_merge2_data.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_related_merge2_data.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_related_merge2_data.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_related_merge2_data.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_related_merge2_data.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_related_merge2_data.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_related_merge2_data.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_related_merge2_data.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_related_merge2_data.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_related_merge2_data.at:2: rm test_keys"
echo t_related_merge2_data.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_related_merge2_data.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This test relies on file-suturing


cat >left <<'_ATEOF'
line 1: foo
line 2: something unexpected
line 3: baz
line 4: quux
_ATEOF

cat >right <<'_ATEOF'
line 1: foo
line 2: bar
line 3: baz
line 4: something unexpected
_ATEOF



cat >foo <<'_ATEOF'
irrelevant file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_related_merge2_data.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_related_merge2_data.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_related_merge2_data.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_related_merge2_data.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_related_merge2_data.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_related_merge2_data.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


ANC=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_related_merge2_data.at:23: cp -f left testfile"
echo t_related_merge2_data.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f left testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f left testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_related_merge2_data.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_related_merge2_data.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_related_merge2_data.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_related_merge2_data.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_related_merge2_data.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_related_merge2_data.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_related_merge2_data.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


LEFT=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_related_merge2_data.at:28: rm -rf _MTN.old"
echo t_related_merge2_data.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_related_merge2_data.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_related_merge2_data.at:28: mv  _MTN _MTN.old"
echo t_related_merge2_data.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_related_merge2_data.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_related_merge2_data.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$ANC ."
echo t_related_merge2_data.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ANC ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ANC . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ANC . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_related_merge2_data.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_related_merge2_data.at:28: test \$PROBE_R_SHA = \$ANC"
echo t_related_merge2_data.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $ANC" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $ANC ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $ANC ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_related_merge2_data.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_related_merge2_data.at:30: cp -f right testfile"
echo t_related_merge2_data.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f right testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f right testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_related_merge2_data.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_related_merge2_data.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_related_merge2_data.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_related_merge2_data.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_related_merge2_data.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_related_merge2_data.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_related_merge2_data.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


RIGHT=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_related_merge2_data.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge"
echo t_related_merge2_data.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_related_merge2_data.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_related_merge2_data.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_related_merge2_data.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_related_merge2_data.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >expected_foo <<'_ATEOF'
irrelevant file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_related_merge2_data.at:41: cmp foo expected_foo"
echo t_related_merge2_data.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp foo expected_foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp foo expected_foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_related_merge2_data.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_related_merge2_data.at:42: cmp left testfile || cmp right testfile"
echo t_related_merge2_data.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp left testfile || cmp right testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp left testfile || cmp right testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_related_merge2_data.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  13 ) # 13. t_merge2_add.at:1: merging adds in unrelated revisions
    at_setup_line='t_merge2_add.at:1'
    at_desc='merging adds in unrelated revisions'
    $at_quiet $ECHO_N " 13: merging adds in unrelated revisions          $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "13. t_merge2_add.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge2_add.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_merge2_add.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge2_add.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_merge2_add.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge2_add.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_merge2_add.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge2_add.at:2: rm test_keys"
echo t_merge2_add.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This test relies on file-suturing



cat >testfile1 <<'_ATEOF'
This is test file 1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_merge2_add.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile1"
echo t_merge2_add.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge2_add.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge2_add.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


LEFT=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_merge2_add.at:12: rm -rf _MTN"
echo t_merge2_add.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge2_add.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_merge2_add.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile2 <<'_ATEOF'
This is test file 2
_ATEOF

$at_traceoff
echo "$at_srcdir/t_merge2_add.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile2"
echo t_merge2_add.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge2_add.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge2_add.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


RIGHT=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_merge2_add.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge"
echo t_merge2_add.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge2_add.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_merge2_add.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >expected_data1 <<'_ATEOF'
This is test file 1
_ATEOF

cat >expected_data2 <<'_ATEOF'
This is test file 2
_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge2_add.at:28: cmp testfile1 expected_data1"
echo t_merge2_add.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile1 expected_data1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile1 expected_data1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge2_add.at:29: cmp testfile2 expected_data2"
echo t_merge2_add.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile2 expected_data2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile2 expected_data2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  14 ) # 14. t_merge2_data.at:1: merging data in unrelated revisions
    at_setup_line='t_merge2_data.at:1'
    at_desc='merging data in unrelated revisions'
    $at_quiet $ECHO_N " 14: merging data in unrelated revisions          $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "14. t_merge2_data.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge2_data.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_merge2_data.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_data.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge2_data.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_merge2_data.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_data.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge2_data.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_merge2_data.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_data.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge2_data.at:2: rm test_keys"
echo t_merge2_data.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_data.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This test relies on file-suturing


cat >left <<'_ATEOF'
line 1: foo
line 2: something unexpected
line 3: baz
line 4: quux
_ATEOF

cat >right <<'_ATEOF'
line 1: foo
line 2: bar
line 3: baz
line 4: something unexpected
_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge2_data.at:18: cp -f left testfile"
echo t_merge2_data.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f left testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f left testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_data.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge2_data.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_merge2_data.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_data.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge2_data.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge2_data.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_data.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


LEFT=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_merge2_data.at:23: rm -rf _MTN"
echo t_merge2_data.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_data.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge2_data.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_merge2_data.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_data.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge2_data.at:26: cp -f right testfile"
echo t_merge2_data.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f right testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f right testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_data.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge2_data.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_merge2_data.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_data.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge2_data.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge2_data.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_data.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


RIGHT=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_merge2_data.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge"
echo t_merge2_data.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_data.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge2_data.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_merge2_data.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_data.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge2_data.at:34: cmp left testfile || cmp right testfile"
echo t_merge2_data.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp left testfile || cmp right testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp left testfile || cmp right testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_data.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  15 ) # 15. t_unidiff2.at:3: calculation of incorrect unidiffs
    at_setup_line='t_unidiff2.at:3'
    at_desc='calculation of incorrect unidiffs'
    $at_quiet $ECHO_N " 15: calculation of incorrect unidiffs            $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "15. t_unidiff2.at:3: testing ..."
      $at_traceon



if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_unidiff2.at:5: echo \$UNB64_COMMAND"
echo t_unidiff2.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff2.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_unidiff2.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_unidiff2.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff2.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff2.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_unidiff2.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff2.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff2.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_unidiff2.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff2.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff2.at:7: rm test_keys"
echo t_unidiff2.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff2.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >firstfile.b64 <<'_ATEOF'
Ly8gY29weXJpZ2h0IChDKSAyMDAyLCAyMDAzIGdyYXlkb24gaG9hcmUgPGdyYXlkb25AcG9i
b3guY29tPgovLyBhbGwgcmlnaHRzIHJlc2VydmVkLgovLyBsaWNlbnNlZCB0byB0aGUgcHVi
bGljIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdQTCAoPj0gMikKLy8gc2VlIHRoZSBm
aWxlIENPUFlJTkcgZm9yIGRldGFpbHMKCiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxjc3Rk
aW8+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxhbGdvcml0
aG0+CiNpbmNsdWRlIDxpdGVyYXRvcj4KI2luY2x1ZGUgPGJvb3N0L2ZpbGVzeXN0ZW0vcGF0
aC5ocHA+CiNpbmNsdWRlIDxib29zdC9maWxlc3lzdGVtL29wZXJhdGlvbnMuaHBwPgojaW5j
bHVkZSA8Ym9vc3QvbGV4aWNhbF9jYXN0LmhwcD4KCiNpbmNsdWRlICJjb21tYW5kcy5oaCIK
I2luY2x1ZGUgImNvbnN0YW50cy5oaCIKCiNpbmNsdWRlICJhcHBfc3RhdGUuaGgiCiNpbmNs
dWRlICJkaWZmX3BhdGNoLmhoIgojaW5jbHVkZSAiZmlsZV9pby5oaCIKI2luY2x1ZGUgImtl
eXMuaGgiCiNpbmNsdWRlICJtYW5pZmVzdC5oaCIKI2luY2x1ZGUgIm5ldHdvcmsuaGgiCiNp
bmNsdWRlICJwYWNrZXQuaGgiCiNpbmNsdWRlICJwYXRjaF9zZXQuaGgiCiNpbmNsdWRlICJy
Y3NfaW1wb3J0LmhoIgojaW5jbHVkZSAic2FuaXR5LmhoIgojaW5jbHVkZSAiY2VydC5oaCIK
I2luY2x1ZGUgInRyYW5zZm9ybXMuaGgiCiNpbmNsdWRlICJ1cGRhdGUuaGgiCiNpbmNsdWRl
ICJ2b2NhYi5oaCIKI2luY2x1ZGUgIndvcmsuaGgiCgovLwovLyB0aGlzIGZpbGUgZGVmaW5l
cyB0aGUgdGFzay1vcmllbnRlZCAidG9wIGxldmVsIiBjb21tYW5kcyB3aGljaCBjYW4gYmUK
Ly8gaXNzdWVkIGFzIHBhcnQgb2YgYSBtb25vdG9uZSBjb21tYW5kIGxpbmUuIHRoZSBjb21t
YW5kIGxpbmUgY2FuIG9ubHkKLy8gaGF2ZSBvbmUgc3VjaCBjb21tYW5kIG9uIGl0LCBmb2xs
b3dlZCBieSBhIHZlY3RvciBvZiBzdHJpbmdzIHdoaWNoIGFyZSBpdHMKLy8gYXJndW1lbnRz
LiBhbGwgLS1vcHRpb25zIHdpbGwgYmUgcHJvY2Vzc2VkIGJ5IHRoZSBtYWluIHByb2dyYW0g
KmJlZm9yZSoKLy8gY2FsbGluZyBhIGNvbW1hbmQKLy8KLy8gd2UgbWlnaHQgZXhwb3NlIHRo
aXMgYmx1bnQgY29tbWFuZCBpbnRlcmZhY2UgdG8gc2NyaXB0aW5nIHNvbWVkYXkuIGJ1dAov
LyBub3QgdG9kYXkuCgpuYW1lc3BhY2UgY29tbWFuZHMgCnsKICBzdHJ1Y3QgY29tbWFuZDsK
ICBib29sIG9wZXJhdG9yPChjb21tYW5kIGNvbnN0ICYgc2VsZiwgY29tbWFuZCBjb25zdCAm
IG90aGVyKTsKfTsKCm5hbWVzcGFjZSBzdGQKewogIHRlbXBsYXRlIDw+CiAgc3RydWN0IHN0
ZDo6Z3JlYXRlcjxjb21tYW5kczo6Y29tbWFuZCAqPgogIHsKICAgIGJvb2wgb3BlcmF0b3Io
KShjb21tYW5kczo6Y29tbWFuZCBjb25zdCAqIGEsIGNvbW1hbmRzOjpjb21tYW5kIGNvbnN0
ICogYikKICAgIHsKICAgICAgcmV0dXJuICphIDwgKmI7CiAgICB9CiAgfTsKfTsKCm5hbWVz
cGFjZSBjb21tYW5kcyAKewp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IGNvbW1hbmQ7
IAoKc3RhdGljIG1hcDxzdHJpbmcsY29tbWFuZCAqPiBjbWRzOwoKc3RydWN0IGNvbW1hbmQg
CnsKICBzdHJpbmcgbmFtZTsKICBzdHJpbmcgY21kZ3JvdXA7CiAgc3RyaW5nIHBhcmFtczsK
ICBzdHJpbmcgZGVzYzsKICBjb21tYW5kKHN0cmluZyBjb25zdCAmIG4sCgkgIHN0cmluZyBj
b25zdCAmIGcsCgkgIHN0cmluZyBjb25zdCAmIHAsCgkgIHN0cmluZyBjb25zdCAmIGQpIDog
bmFtZShuKSwgY21kZ3JvdXAoZyksIHBhcmFtcyhwKSwgZGVzYyhkKSAKICB7IGNtZHNbbl0g
PSB0aGlzOyB9CiAgdmlydHVhbCB+Y29tbWFuZCgpIHt9CiAgdmlydHVhbCB2b2lkIGV4ZWMo
YXBwX3N0YXRlICYgYXBwLCB2ZWN0b3I8c3RyaW5nPiBjb25zdCAmIGFyZ3MpID0gMDsKfTsK
CmJvb2wgb3BlcmF0b3I8KGNvbW1hbmQgY29uc3QgJiBzZWxmLCBjb21tYW5kIGNvbnN0ICYg
b3RoZXIpCnsKICByZXR1cm4gKChzZWxmLmNtZGdyb3VwIDwgb3RoZXIuY21kZ3JvdXApCgkg
IHx8ICgoc2VsZi5jbWRncm91cCA9PSBvdGhlci5jbWRncm91cCkgJiYgKHNlbGYubmFtZSA8
IG90aGVyLm5hbWUpKSk7Cn0KCgp2b2lkIGV4cGxhaW5fdXNhZ2Uoc3RyaW5nIGNvbnN0ICYg
Y21kLCBvc3RyZWFtICYgb3V0KQp7CiAgbWFwPHN0cmluZyxjb21tYW5kICo+Ojpjb25zdF9p
dGVyYXRvciBpOwogIGkgPSBjbWRzLmZpbmQoY21kKTsKICBpZiAoaSAhPSBjbWRzLmVuZCgp
KQogICAgewogICAgICBvdXQgPDwgIiAgICAgIiA8PCBpLT5zZWNvbmQtPm5hbWUgPDwgIiAi
IDw8IGktPnNlY29uZC0+cGFyYW1zIDw8IGVuZGwKCSAgPDwgIiAgICAgIiA8PCBpLT5zZWNv
bmQtPmRlc2MgPDwgZW5kbCA8PCBlbmRsOwogICAgICByZXR1cm47CiAgICB9CgogIHZlY3Rv
cjxjb21tYW5kICo+IHNvcnRlZDsKICBvdXQgPDwgImNvbW1hbmRzOiIgPDwgZW5kbDsKICBm
b3IgKGkgPSBjbWRzLmJlZ2luKCk7IGkgIT0gY21kcy5lbmQoKTsgKytpKQogICAgewogICAg
ICBzb3J0ZWQucHVzaF9iYWNrKGktPnNlY29uZCk7CiAgICB9CiAgCiAgc29ydChzb3J0ZWQu
YmVnaW4oKSwgc29ydGVkLmVuZCgpLCBzdGQ6OmdyZWF0ZXI8Y29tbWFuZCAqPigpKTsKCiAg
c3RyaW5nIGN1cnJfZ3JvdXA7CiAgc2l6ZV90IGNvbCA9IDA7CiAgc2l6ZV90IGNvbDIgPSAw
OwogIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc29ydGVkLnNpemUoKTsgKytpKQogICAgewog
ICAgICBjb2wyID0gY29sMiA+IHNvcnRlZFtpXS0+Y21kZ3JvdXAuc2l6ZSgpID8gY29sMiA6
IHNvcnRlZFtpXS0+Y21kZ3JvdXAuc2l6ZSgpOwogICAgfQoKICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNvcnRlZC5zaXplKCk7ICsraSkKICAgIHsKICAgICAgaWYgKHNvcnRlZFtpXS0+
Y21kZ3JvdXAgIT0gY3Vycl9ncm91cCkKCXsKCSAgY3Vycl9ncm91cCA9IHNvcnRlZFtpXS0+
Y21kZ3JvdXA7CgkgIG91dCA8PCBlbmRsOwoJICBvdXQgPDwgIiAgIiA8PCBzb3J0ZWRbaV0t
PmNtZGdyb3VwOwoJICBjb2wgPSBzb3J0ZWRbaV0tPmNtZGdyb3VwLnNpemUoKSArIDI7Cgkg
IHdoaWxlIChjb2wrKyA8IChjb2wyICsgMykpCgkgICAgb3V0IDw8ICcgJzsKCX0KICAgICAg
b3V0IDw8ICIgIiA8PCBzb3J0ZWRbaV0tPm5hbWU7CiAgICAgIGNvbCArPSBzb3J0ZWRbaV0t
Pm5hbWUuc2l6ZSgpICsgMTsKICAgICAgaWYgKGNvbCA+PSA3MCkKCXsKCSAgb3V0IDw8IGVu
ZGw7CgkgIGNvbCA9IDA7CgkgIHdoaWxlIChjb2wrKyA8IChjb2wyICsgMykpCgkgICAgb3V0
IDw8ICcgJzsKCX0KICAgIH0KICBvdXQgPDwgZW5kbCA8PCBlbmRsOwp9Cgp2b2lkIHByb2Nl
c3MoYXBwX3N0YXRlICYgYXBwLCBzdHJpbmcgY29uc3QgJiBjbWQsIHZlY3RvcjxzdHJpbmc+
IGNvbnN0ICYgYXJncykKewogIGlmIChjbWRzLmZpbmQoY21kKSAhPSBjbWRzLmVuZCgpKQog
ICAgewogICAgICBMKCJleGVjdXRpbmcgJXMgY29tbWFuZFxuIiwgY21kLmNfc3RyKCkpOwog
ICAgICBjbWRzW2NtZF0tPmV4ZWMoYXBwLCBhcmdzKTsKICAgIH0KICBlbHNlCiAgICB7CiAg
ICAgIHRocm93IHVzYWdlKGNtZCk7CiAgICB9Cn0KCiNkZWZpbmUgQ01EKEMsIGdyb3VwLCBw
YXJhbXMsIGRlc2MpICAgICAgICAgICAgICAgXApzdHJ1Y3QgY21kXyAjIyBDIDogcHVibGlj
IGNvbW1hbmQgICAgICAgICAgICAgICAgIFwKeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgY21kXyAjIyBDKCkgOiBjb21tYW5kKCNDLCBn
cm91cCwgcGFyYW1zLCBkZXNjKSAgXAogIHt9ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKICB2aXJ0dWFsIHZvaWQgZXhlYyhhcHBfc3RhdGUgJiBh
cHAsICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgdmVjdG9yPHN0cmluZz4g
Y29uc3QgJiBhcmdzKTsgXAp9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKc3RhdGljIGNtZF8gIyMgQyBDICMjIF9jbWQ7ICAgICAgICAgICAg
ICAgICAgICAgICBcCnZvaWQgY21kXyAjIyBDOjpleGVjKGFwcF9zdGF0ZSAmIGFwcCwgICAg
ICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICB2ZWN0b3I8c3RyaW5nPiBjb25zdCAm
IGFyZ3MpIFwKCiNkZWZpbmUgQUxJQVMoQywgcmVhbGNvbW1hbmQsIGdyb3VwLCBwYXJhbXMs
IGRlc2MpCVwKQ01EKEMsIGdyb3VwLCBwYXJhbXMsIGRlc2MpCQkJCVwKewkJCQkJCQlcCiAg
cHJvY2VzcyhhcHAsIHN0cmluZygjcmVhbGNvbW1hbmQpLCBhcmdzKTsJCVwKfQoKCnN0YXRp
YyB2b2lkIGVuc3VyZV9ib29rZGlyKCkKewogIG1rZGlyX3AobG9jYWxfcGF0aChib29rX2tl
ZXBpbmdfZGlyKSk7Cn0KCnN0YXRpYyB2b2lkIGdldF9tYW5pZmVzdF9wYXRoKGxvY2FsX3Bh
dGggJiBtX3BhdGgpCnsKICBtX3BhdGggPSAoZnM6OnBhdGgoYm9va19rZWVwaW5nX2Rpcikg
LyBmczo6cGF0aChtYW5pZmVzdF9maWxlX25hbWUpKS5zdHJpbmcoKTsKICBMKCJtYW5pZmVz
dCBwYXRoIGlzICVzXG4iLCBtX3BhdGgoKS5jX3N0cigpKTsKfQoKc3RhdGljIHZvaWQgZ2V0
X3dvcmtfcGF0aChsb2NhbF9wYXRoICYgd19wYXRoKQp7CiAgd19wYXRoID0gKGZzOjpwYXRo
KGJvb2tfa2VlcGluZ19kaXIpIC8gZnM6OnBhdGgod29ya19maWxlX25hbWUpKS5zdHJpbmco
KTsKICBMKCJ3b3JrIHBhdGggaXMgJXNcbiIsIHdfcGF0aCgpLmNfc3RyKCkpOwp9CgpzdGF0
aWMgdm9pZCBnZXRfbWFuaWZlc3RfbWFwKG1hbmlmZXN0X21hcCAmIG0pCnsKICBlbnN1cmVf
Ym9va2RpcigpOwogIGxvY2FsX3BhdGggbV9wYXRoOwogIGJhc2U2NDwgZ3ppcDxkYXRhPiA+
IG1fZGF0YTsKICBnZXRfbWFuaWZlc3RfcGF0aChtX3BhdGgpOwogIGlmIChmaWxlX2V4aXN0
cyhtX3BhdGgpKQogICAgewogICAgICBMKCJsb2FkaW5nIG1hbmlmZXN0IGZpbGUgJXNcbiIs
IG1fcGF0aCgpLmNfc3RyKCkpOyAgICAgIAogICAgICByZWFkX2RhdGEobV9wYXRoLCBtX2Rh
dGEpOwogICAgICByZWFkX21hbmlmZXN0X21hcChtYW5pZmVzdF9kYXRhKG1fZGF0YSksIG0p
OwogICAgICBMKCJyZWFkICVkIG1hbmlmZXN0IGVudHJpZXNcbiIsIG0uc2l6ZSgpKTsKICAg
IH0KICBlbHNlCiAgICB7CiAgICAgIEwoIm5vIG1hbmlmZXN0IGZpbGUgJXNcbiIsIG1fcGF0
aCgpLmNfc3RyKCkpOwogICAgfQp9CgpzdGF0aWMgdm9pZCBwdXRfbWFuaWZlc3RfbWFwKG1h
bmlmZXN0X21hcCBjb25zdCAmIG0pCnsKICBlbnN1cmVfYm9va2RpcigpOwogIGxvY2FsX3Bh
dGggbV9wYXRoOwogIG1hbmlmZXN0X2RhdGEgbV9kYXRhOwogIGdldF9tYW5pZmVzdF9wYXRo
KG1fcGF0aCk7CiAgTCgid3JpdGluZyBtYW5pZmVzdCBmaWxlICVzXG4iLCBtX3BhdGgoKS5j
X3N0cigpKTsKICB3cml0ZV9tYW5pZmVzdF9tYXAobSwgbV9kYXRhKTsKICB3cml0ZV9kYXRh
KG1fcGF0aCwgbV9kYXRhLmlubmVyKCkpOwogIEwoIndyb3RlICVkIG1hbmlmZXN0IGVudHJp
ZXNcbiIsIG0uc2l6ZSgpKTsKfQoKc3RhdGljIHZvaWQgZ2V0X3dvcmtfc2V0KHdvcmtfc2V0
ICYgdykKewogIGVuc3VyZV9ib29rZGlyKCk7CiAgbG9jYWxfcGF0aCB3X3BhdGg7CiAgZ2V0
X3dvcmtfcGF0aCh3X3BhdGgpOwogIGlmIChmaWxlX2V4aXN0cyh3X3BhdGgpKQogICAgewog
ICAgICBMKCJjaGVja2luZyBmb3IgdW4tY29tbWl0dGVkIHdvcmsgZmlsZSAlc1xuIiwgCgl3
X3BhdGgoKS5jX3N0cigpKTsKICAgICAgZGF0YSB3X2RhdGE7CiAgICAgIHJlYWRfZGF0YSh3
X3BhdGgsIHdfZGF0YSk7CiAgICAgIHJlYWRfd29ya19zZXQod19kYXRhLCB3KTsKICAgICAg
TCgicmVhZCAlZCBkZWxzLCAlZCBhZGRzIGZyb20gJXNcbiIsIAoJdy5kZWxzLnNpemUoKSwg
dy5hZGRzLnNpemUoKSwgd19wYXRoKCkuY19zdHIoKSk7CiAgICB9CiAgZWxzZQogICAgewog
ICAgICBMKCJubyB1bi1jb21taXR0ZWQgd29yayBmaWxlICVzXG4iLCB3X3BhdGgoKS5jX3N0
cigpKTsKICAgIH0KfQoKc3RhdGljIHZvaWQgcHV0X3dvcmtfc2V0KHdvcmtfc2V0ICYgdykK
ewogIGxvY2FsX3BhdGggd19wYXRoOwogIGdldF93b3JrX3BhdGgod19wYXRoKTsKCiAgaWYg
KHcuYWRkcy5zaXplKCkgPiAwCiAgICAgIHx8IHcuZGVscy5zaXplKCkgPiAwKQogICAgewog
ICAgICBlbnN1cmVfYm9va2RpcigpOwogICAgICBkYXRhIHdfZGF0YTsKICAgICAgd3JpdGVf
d29ya19zZXQod19kYXRhLCB3KTsKICAgICAgd3JpdGVfZGF0YSh3X3BhdGgsIHdfZGF0YSk7
CiAgICB9CiAgZWxzZQogICAgewogICAgICBkZWxldGVfZmlsZSh3X3BhdGgpOwogICAgfQp9
CgpzdGF0aWMgdm9pZCBjYWxjdWxhdGVfbmV3X21hbmlmZXN0X21hcChtYW5pZmVzdF9tYXAg
Y29uc3QgJiBtX29sZCwgCgkJCQkgICAgICAgbWFuaWZlc3RfbWFwICYgbV9uZXcpCnsKICBw
YXRoX3NldCBwYXRoczsKICB3b3JrX3NldCB3b3JrOwogIGV4dHJhY3RfcGF0aF9zZXQobV9v
bGQsIHBhdGhzKTsKICBnZXRfd29ya19zZXQod29yayk7CiAgaWYgKHdvcmsuZGVscy5zaXpl
KCkgPiAwKQogICAgTCgicmVtb3ZpbmcgJWQgZGVhZCBmaWxlcyBmcm9tIG1hbmlmZXN0XG4i
LCAKICAgICAgd29yay5kZWxzLnNpemUoKSk7CiAgaWYgKHdvcmsuYWRkcy5zaXplKCkgPiAw
KQogICAgTCgiYWRkaW5nICVkIGZpbGVzIHRvIG1hbmlmZXN0XG4iLCB3b3JrLmFkZHMuc2l6
ZSgpKTsKICBhcHBseV93b3JrX3NldCh3b3JrLCBwYXRocyk7CiAgYnVpbGRfbWFuaWZlc3Rf
bWFwKHBhdGhzLCBtX25ldyk7Cn0KCnN0YXRpYyBzdHJpbmcgZ2V0X3N0ZGluKCkKewogIGNo
YXIgYnVmW2J1ZnN6XTsKICBzdHJpbmcgdG1wOwogIHdoaWxlKGNpbikKICAgIHsKICAgICAg
Y2luLnJlYWQoYnVmLCBidWZzeik7CiAgICAgIHRtcC5hcHBlbmQoYnVmLCBjaW4uZ2NvdW50
KCkpOwogICAgfQogIHJldHVybiB0bXA7Cn0KCnN0YXRpYyB2b2lkIGdldF9sb2dfbWVzc2Fn
ZShwYXRjaF9zZXQgY29uc3QgJiBwcywgCgkJCSAgICBhcHBfc3RhdGUgJiBhcHAsCgkJCSAg
ICBzdHJpbmcgJiBsb2dfbWVzc2FnZSkKewogIHN0cmluZyBjb21tZW50YXJ5OwogIHN0cmlu
ZyBzdW1tYXJ5OwogIHN0cmluZ3N0cmVhbSBzczsKICBwYXRjaF9zZXRfdG9fdGV4dF9zdW1t
YXJ5KHBzLCBzcyk7CiAgc3VtbWFyeSA9IHNzLnN0cigpOwogIGNvbW1lbnRhcnkgKz0gIi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS1cbiI7CiAgY29tbWVudGFyeSArPSAiRW50ZXIgTG9nLiAgTGluZXMg
YmVnaW5uaW5nIHdpdGggYE1UOicgYXJlIHJlbW92ZWQgYXV0b21hdGljYWxseVxuIjsKICBj
b21tZW50YXJ5ICs9ICJcbiI7CiAgY29tbWVudGFyeSArPSAiU3VtbWFyeSBvZiBjaGFuZ2Vz
OlxuIjsKICBjb21tZW50YXJ5ICs9ICJcbiI7CiAgY29tbWVudGFyeSArPSBzdW1tYXJ5Owog
IGNvbW1lbnRhcnkgKz0gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7CiAgTihhcHAubHVhLmhvb2tf
ZWRpdF9jb21tZW50KGNvbW1lbnRhcnksIGxvZ19tZXNzYWdlKSwKICAgICJlZGl0IG9mIGxv
ZyBtZXNzYWdlIGZhaWxlZCIpOwp9CgoKLy8gdGhlIGdvYWwgaGVyZSBpcyB0byBsb29rIGJh
Y2sgdGhyb3VnaCB0aGUgYW5jZXN0cnkgb2YgdGhlIHByb3ZpZGVkCi8vIGNoaWxkLCBjaGVj
a2luZyB0byBzZWUgdGhlIGxlYXN0IGFuY2VzdG9yIGl0IGhhcyB3aGljaCB3ZSByZWNlaXZl
ZCBmcm9tCi8vIHRoZSBnaXZlbiBuZXR3b3JrIHVybC9ncm91cCBwYWlyLgovLwovLyB3ZSB1
c2UgdGhlIGFuY2VzdG9yIGFzIHRoZSBzb3VyY2UgbWFuaWZlc3Qgd2hlbiBidWlsZGluZyBh
IHBhdGNoc2V0IHRvCi8vIHNlbmQgdG8gdGhhdCB1cmwvZ3JvdXAuCgpzdGF0aWMgYm9vbCBm
aW5kX2FuY2VzdG9yX29uX25ldHNlcnZlciAobWFuaWZlc3RfaWQgY29uc3QgJiBjaGlsZCwg
CgkJCQkJdXJsIGNvbnN0ICYgdSwKCQkJCQlncm91cCBjb25zdCAmIGcsIAoJCQkJCW1hbmlm
ZXN0X2lkICYgYW5jLAoJCQkJCWFwcF9zdGF0ZSAmIGFwcCkKewogIHNldDxtYW5pZmVzdF9p
ZD4gZnJvbnRpZXI7CiAgY2VydF9uYW1lIHRuKGFuY2VzdG9yX2NlcnRfbmFtZSk7CiAgZnJv
bnRpZXIuaW5zZXJ0KGNoaWxkKTsKCiAgd2hpbGUgKCFmcm9udGllci5lbXB0eSgpKQogICAg
ewogICAgICBzZXQ8bWFuaWZlc3RfaWQ+IG5leHRfZnJvbnRpZXI7CiAgICAgIGZvciAoc2V0
PG1hbmlmZXN0X2lkPjo6Y29uc3RfaXRlcmF0b3IgaSA9IGZyb250aWVyLmJlZ2luKCk7Cgkg
ICBpICE9IGZyb250aWVyLmVuZCgpOyArK2kpCgl7CgkgIHZlY3RvcjwgbWFuaWZlc3Q8Y2Vy
dD4gPiB0bXA7CgkgIGFwcC5kYi5nZXRfbWFuaWZlc3RfY2VydHMoKmksIHRuLCB0bXApOwoK
CSAgLy8gd2UgZ28gdGhyb3VnaCB0aGlzIHZlY3RvciBiYWNrd2FyZHMgYmVjYXVzZSB3ZSB3
b3VsZCBwcmVmZXIgdG8KCSAgLy8gaGl0IG1vcmUgcmVjZW50bHktcXVldWVkIGFuY2VzdG9y
cyAoc3VjaCBhcyBpbnRlcm1lZGlhdGUgbm9kZXMKCSAgLy8gaW4gYSBtdWx0aS1ub2RlIG1l
cmdlKSByYXRoZXIgdGhhbiBvbGRlciBhbmNlc3RvcnMuIGJ1dCBvZgoJICAvLyBjb3Vyc2Us
IGFueSBhbmNlc3RvciB3aWxsIGRvLgoKCSAgZm9yICh2ZWN0b3I8IG1hbmlmZXN0PGNlcnQ+
ID46OnJldmVyc2VfaXRlcmF0b3IgaiA9IHRtcC5yYmVnaW4oKTsKCSAgICAgICBqICE9IHRt
cC5yZW5kKCk7ICsraikKCSAgICB7CgkgICAgICBjZXJ0X3ZhbHVlIHR2OwoJICAgICAgZGVj
b2RlX2Jhc2U2NChqLT5pbm5lcigpLnZhbHVlLCB0dik7CgkgICAgICBtYW5pZmVzdF9pZCBh
bmNfaWQgKHR2KCkpOwoKCSAgICAgIEwoImxvb2tpbmcgZm9yIHBhcmVudCAlcyBvZiAlcyBv
biBzZXJ2ZXJcbiIsIAoJCWktPmlubmVyKCkoKS5jX3N0cigpLAoJCWFuY19pZC5pbm5lcigp
KCkuY19zdHIoKSk7CgoJICAgICAgaWYgKGFwcC5kYi5tYW5pZmVzdF9leGlzdHNfb25fbmV0
c2VydmVyICh1LCBnLCBhbmNfaWQpKQoJCXsKCQkgIEwoImZvdW5kIHBhcmVudCAlcyBvbiBz
ZXJ2ZXJcbiIsIGFuY19pZC5pbm5lcigpKCkuY19zdHIoKSk7CgkJICBhbmMgPSBhbmNfaWQ7
CgkJICByZXR1cm4gdHJ1ZTsKCQl9CgkgICAgICBlbHNlCgkJbmV4dF9mcm9udGllci5pbnNl
cnQoYW5jX2lkKTsKCSAgICB9CSAgCgl9CgogICAgICBmcm9udGllciA9IG5leHRfZnJvbnRp
ZXI7CiAgICB9CgogIHJldHVybiBmYWxzZTsKfQoKCnN0YXRpYyB2b2lkIHF1ZXVlX2VkZ2Vf
Zm9yX3RhcmdldF9hbmNlc3RvciAocGFpcjx1cmwsZ3JvdXA+IGNvbnN0ICYgdGFyZywKCQkJ
CQkgICAgbWFuaWZlc3RfaWQgY29uc3QgJiBjaGlsZF9pZCwKCQkJCQkgICAgbWFuaWZlc3Rf
bWFwIGNvbnN0ICYgY2hpbGRfbWFwLAoJCQkJCSAgICBhcHBfc3RhdGUgJiBhcHApCnsgIAog
IC8vIG5vdyBoZXJlIGlzIGFuIGludGVyZXN0aW5nIHRoaW5nOiB3ZSAqbWlnaHQqIGJlIHNl
bmRpbmcgZGF0YSB0byBhCiAgLy8gZGVwb3QsIG9yIHNvbWVvbmUgd2l0aCBpbmRldGVybWlu
YXRlIHByZS1leGlzdGluZyBzdGF0ZSAoc2F5IHRoZSBmaXJzdAogIC8vIHRpbWUgd2UgcG9z
dCB0byBuZXRuZXdzKSwgdGhlcmVmb3JlIHdlIGNhbm5vdCBqdXN0ICJzZW5kIHRoZSBlZGdl
IiB3ZQogIC8vIGp1c3QgY29uc3RydWN0ZWQgaW4gYSBtZXJnZSBvciBjb21taXQsIHdlIG5l
ZWQgdG8gc2VuZCBhbiBlZGdlIGZyb20gYQogIC8vIHBhcmVudCB3aGljaCB3ZSBrbm93IHRv
IGJlIHByZXNlbnQgaW4gdGhlIGRlcG90IChvciBlbHNlIGFuIGVkZ2UgZnJvbQogIC8vIHRo
ZSBlbXB0eSBtYXAgLS0gZnVsbCBjb250ZW50cyBvZiBhbGwgZmlsZXMpLiB3aGF0IGlzIHNl
bnQgdGhlcmVmb3JlCiAgLy8gY2hhbmdlcyBvbiBhIGRlcG90LWJ5LWRlcG90IGJhc2lzLiB0
aGlzIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgdGhlCiAgLy8gYXBwcm9wcmlhdGUgdGhpbmcgdG8g
c2VuZC4KICAvLwogIC8vIG5iOiB0aGlzIGhhcyBubyBkaXJlY3QgcmVsYXRpb24gdG8gd2hh
dCB3ZSBzdG9yZSBpbiBvdXIgb3duCiAgLy8gZGF0YWJhc2UuIHdlIGFsd2F5cyBzdG9yZSB0
aGUgZWRnZSBmcm9tIG91ciBwYXJlbnQsIGFuZCB3ZSBhbHdheXMga25vdwogIC8vIHdoZW4g
d2UgaGF2ZSBhIHBhcmVudC4KCiAgdmVjdG9yPCBwYWlyPHVybCwgZ3JvdXA+ID4gb25lX3Rh
cmdldDsKICBvbmVfdGFyZ2V0LnB1c2hfYmFjayh0YXJnKTsKICBxdWV1ZWluZ19wYWNrZXRf
d3JpdGVyIHFwdyhhcHAsIG9uZV90YXJnZXQpOwogIAogIG1hbmlmZXN0X2RhdGEgdGFyZ19h
bmNlc3Rvcl9kYXRhOwogIG1hbmlmZXN0X21hcCB0YXJnX2FuY2VzdG9yX21hcDsKICBtYW5p
ZmVzdF9pZCB0YXJnX2FuY2VzdG9yX2lkOwogIAogIGlmIChmaW5kX2FuY2VzdG9yX29uX25l
dHNlcnZlciAoY2hpbGRfaWQsIAoJCQkJICB0YXJnLmZpcnN0LCAKCQkJCSAgdGFyZy5zZWNv
bmQsIAoJCQkJICB0YXJnX2FuY2VzdG9yX2lkLCAKCQkJCSAgYXBwKSkKICAgIHsJICAgIAog
ICAgICBhcHAuZGIuZ2V0X21hbmlmZXN0X3ZlcnNpb24odGFyZ19hbmNlc3Rvcl9pZCwgdGFy
Z19hbmNlc3Rvcl9kYXRhKTsKICAgICAgcmVhZF9tYW5pZmVzdF9tYXAodGFyZ19hbmNlc3Rv
cl9kYXRhLCB0YXJnX2FuY2VzdG9yX21hcCk7CiAgICB9CgogIHBhdGNoX3NldCBwczsKICBt
YW5pZmVzdHNfdG9fcGF0Y2hfc2V0KHRhcmdfYW5jZXN0b3JfbWFwLCBjaGlsZF9tYXAsIGFw
cCwgcHMpOwogIHBhdGNoX3NldF90b19wYWNrZXRzKHBzLCBhcHAsIHFwdyk7CgogIC8vIG5v
dyB0aGF0IHdlJ3ZlIHF1ZXVlZCB0aGUgZGF0YSwgd2UgY2FuIG5vdGUgdGhpcyBuZXcgY2hp
bGQKICAvLyBub2RlIGFzIGV4aXN0aW5nICh3ZWxsIC4uIHNvb24tdG8tZXhpc3QpIG9uIHRo
ZSBzZXJ2ZXIKICBhcHAuZGIubm90ZV9tYW5pZmVzdF9vbl9uZXRzZXJ2ZXIgKHRhcmcuZmly
c3QsIHRhcmcuc2Vjb25kLCBjaGlsZF9pZCk7Cgp9CgoKLy8gdGhpcyBoZWxwZXIgdHJpZXMg
dG8gcHJvZHVjZSBtZXJnZSA8LSBtZXJnZU4obGVmdCxyaWdodCksIHBvc3NpYmx5Ci8vIG1l
cmdlMyBpZiBpdCBjYW4gZmluZCBhbiBhbmNlc3Rvciwgb3RoZXJ3aXNlIG1lcmdlMi4gaXQg
YWxzbyBxdWV1ZXMgdGhlCi8vIGFwcHJvcHJpYXRlIGVkZ2VzIGZyb20ga25vd24gYW5jZXN0
b3JzIHRvIHRoZSBuZXcgbWVyZ2Ugbm9kZSwgdG8gYmUKLy8gdHJhbnNtaXR0ZWQgdG8gZWFj
aCBvZiB0aGUgdGFyZ2V0cyBwcm92aWRlZC4KCnN0YXRpYyB2b2lkIHRyeV9vbmVfbWVyZ2Uo
bWFuaWZlc3RfaWQgY29uc3QgJiBsZWZ0LAoJCQkgIG1hbmlmZXN0X2lkIGNvbnN0ICYgcmln
aHQsCgkJCSAgbWFuaWZlc3RfaWQgJiBtZXJnZWQsCgkJCSAgYXBwX3N0YXRlICYgYXBwLCAK
CQkJICB2ZWN0b3I8IHBhaXI8dXJsLGdyb3VwPiA+IGNvbnN0ICYgdGFyZ2V0cykKewogIG1h
bmlmZXN0X2RhdGEgbGVmdF9kYXRhLCByaWdodF9kYXRhLCBhbmNlc3Rvcl9kYXRhLCBtZXJn
ZWRfZGF0YTsKICBtYW5pZmVzdF9tYXAgbGVmdF9tYXAsIHJpZ2h0X21hcCwgYW5jZXN0b3Jf
bWFwLCBtZXJnZWRfbWFwOwogIG1hbmlmZXN0X2lkIGFuY2VzdG9yOwoKICBhcHAuZGIuZ2V0
X21hbmlmZXN0X3ZlcnNpb24obGVmdCwgbGVmdF9kYXRhKTsKICBhcHAuZGIuZ2V0X21hbmlm
ZXN0X3ZlcnNpb24ocmlnaHQsIHJpZ2h0X2RhdGEpOwogIHJlYWRfbWFuaWZlc3RfbWFwKGxl
ZnRfZGF0YSwgbGVmdF9tYXApOwogIHJlYWRfbWFuaWZlc3RfbWFwKHJpZ2h0X2RhdGEsIHJp
Z2h0X21hcCk7CiAgCiAgc2ltcGxlX21lcmdlX3Byb3ZpZGVyIG1lcmdlcihhcHApOwogIAog
IGlmKGZpbmRfY29tbW9uX2FuY2VzdG9yKGxlZnQsIHJpZ2h0LCBhbmNlc3RvciwgYXBwKSkJ
ICAgIAogICAgewogICAgICBQKCJjb21tb24gYW5jZXN0b3IgJXMgZm91bmQsIHRyeWluZyBt
ZXJnZTNcbiIsIGFuY2VzdG9yLmlubmVyKCkoKS5jX3N0cigpKTsgCiAgICAgIGFwcC5kYi5n
ZXRfbWFuaWZlc3RfdmVyc2lvbihhbmNlc3RvciwgYW5jZXN0b3JfZGF0YSk7CiAgICAgIHJl
YWRfbWFuaWZlc3RfbWFwKGFuY2VzdG9yX2RhdGEsIGFuY2VzdG9yX21hcCk7CiAgICAgIE4o
bWVyZ2UzKGFuY2VzdG9yX21hcCwgbGVmdF9tYXAsIHJpZ2h0X21hcCwgCgkgICAgICAgYXBw
LCBtZXJnZXIsIG1lcmdlZF9tYXApLAoJKHN0cmluZygiZmFpbGVkIHRvIG1lcmdlIG1hbmlm
ZXN0cyAiKQoJICsgbGVmdC5pbm5lcigpKCkgKyAiIGFuZCAiICsgcmlnaHQuaW5uZXIoKSgp
KSk7CSAgICAgIAogICAgfQogIGVsc2UKICAgIHsKICAgICAgUCgibm8gY29tbW9uIGFuY2Vz
dG9yIGZvdW5kLCB0cnlpbmcgbWVyZ2UyXG4iKTsgCiAgICAgIE4obWVyZ2UyKGxlZnRfbWFw
LCByaWdodF9tYXAsIGFwcCwgbWVyZ2VyLCBtZXJnZWRfbWFwKSwKCShzdHJpbmcoImZhaWxl
ZCB0byBtZXJnZSBtYW5pZmVzdHMgIikKCSArIGxlZnQuaW5uZXIoKSgpICsgIiBhbmQgIiAr
IHJpZ2h0LmlubmVyKCkoKSkpOwkgICAgICAKICAgIH0KICAKICB3cml0ZV9tYW5pZmVzdF9t
YXAobWVyZ2VkX21hcCwgbWVyZ2VkX2RhdGEpOwogIGNhbGN1bGF0ZV9tYW5pZmVzdF9tYXBf
aWRlbnQobWVyZ2VkX21hcCwgbWVyZ2VkKTsJICAKICAKICBiYXNlNjQ8IGd6aXA8ZGVsdGE+
ID4gbGVmdF9lZGdlOwogIGRpZmYobGVmdF9kYXRhLmlubmVyKCksIG1lcmdlZF9kYXRhLmlu
bmVyKCksIGxlZnRfZWRnZSk7CgogIC8vIEZJWE1FOiB3ZSBkbyAqbm90KiBtYW51ZmFjdHVy
ZSBvciBzdG9yZSB0aGUgc2Vjb25kIGVkZ2UgdG8KICAvLyB0aGUgbWVyZ2VkIHZlcnNpb24s
IHNpbmNlIGRvaW5nIHNvIHZpb2xhdGVzIHRoZQogIC8vIGFzc3VtcHRpb25zIG9mIHRoZSBk
YiwgYW5kIHRoZSAncmlnaHQnIHZlcnNpb24gYWxyZWFkeQogIC8vIGV4aXN0cyBpbiBpdHMg
ZW50aXJldHksIGFueXdheXMuIHRoaXMgaXMgYSBzdWJ0bGUgaXNzdWUKICAvLyB0aG91Z2gg
YW5kIEknbSBub3Qgc3VyZSBJJ20gbWFraW5nIHRoZSByaWdodAogIC8vIGRlY2lzaW9uLiBy
ZXZpc2l0LiBpZiB5b3UgZG8gbm90IHNlZSB0aGF0IGl0IGlzIGEgc3VidGxlCiAgLy8gaXNz
dWUgSSBzdWdnZXN0IHlvdSBhcmUgbm90IHRoaW5raW5nIGFib3V0IGl0IGxvbmcgZW5vdWdo
LgogIC8vCiAgLy8gYmFzZTY0PCBnemlwPGRlbHRhPiA+IHJpZ2h0X2VkZ2U7CiAgLy8gZGlm
ZihyaWdodF9kYXRhLmlubmVyKCksIG1lcmdlZF9kYXRhLmlubmVyKCksIHJpZ2h0X2VkZ2Up
OwogIC8vIGFwcC5kYi5wdXRfbWFuaWZlc3RfdmVyc2lvbihyaWdodCwgbWVyZ2VkLCByaWdo
dF9lZGdlKTsKICAKICAKICAvLyB3ZSBkbyBvZiBjb3Vyc2UgcmVjb3JkIHRoZSBsZWZ0IGVk
Z2UsIGFuZCBhbmNlc3RyeSByZWxhdGlvbnNoaXAgdG8KICAvLyBib3RoIHByZWRlY2Vzc29y
cy4KCiAgewogICAgcGFja2V0X2RiX3dyaXRlciBkYncoYXBwKTsgICAgCgogICAgZGJ3LmNv
bnN1bWVfbWFuaWZlc3RfZGVsdGEobGVmdCwgbWVyZ2VkLCBsZWZ0X2VkZ2UpOyAgCiAgICBj
ZXJ0X21hbmlmZXN0X2FuY2VzdG9yKGxlZnQsIG1lcmdlZCwgYXBwLCBkYncpOwogICAgY2Vy
dF9tYW5pZmVzdF9hbmNlc3RvcihyaWdodCwgbWVyZ2VkLCBhcHAsIGRidyk7CiAgICBjZXJ0
X21hbmlmZXN0X2RhdGVfbm93KG1lcmdlZCwgYXBwLCBkYncpOwogICAgY2VydF9tYW5pZmVz
dF9hdXRob3JfZGVmYXVsdChtZXJnZWQsIGFwcCwgZGJ3KTsKICAgIAogICAgLy8gbWFrZSBz
dXJlIHRoZSBhcHByb3ByaWF0ZSBlZGdlcyBnZXQgcXVldWVkIGZvciB0aGUgbmV0d29yay4K
ICAgIGZvciAodmVjdG9yPCBwYWlyPHVybCxncm91cD4gPjo6Y29uc3RfaXRlcmF0b3IgdGFy
ZyA9IHRhcmdldHMuYmVnaW4oKTsKCSB0YXJnICE9IHRhcmdldHMuZW5kKCk7ICsrdGFyZykK
ICAgICAgewoJcXVldWVfZWRnZV9mb3JfdGFyZ2V0X2FuY2VzdG9yICgqdGFyZywgbWVyZ2Vk
LCBtZXJnZWRfbWFwLCBhcHApOwogICAgICB9CiAgICAKICAgIHF1ZXVlaW5nX3BhY2tldF93
cml0ZXIgcXB3KGFwcCwgdGFyZ2V0cyk7CiAgICBjZXJ0X21hbmlmZXN0X2FuY2VzdG9yKGxl
ZnQsIG1lcmdlZCwgYXBwLCBxcHcpOwogICAgY2VydF9tYW5pZmVzdF9hbmNlc3RvcihyaWdo
dCwgbWVyZ2VkLCBhcHAsIHFwdyk7CiAgICBjZXJ0X21hbmlmZXN0X2RhdGVfbm93KG1lcmdl
ZCwgYXBwLCBxcHcpOwogICAgY2VydF9tYW5pZmVzdF9hdXRob3JfZGVmYXVsdChtZXJnZWQs
IGFwcCwgcXB3KTsKICB9Cgp9CQkJICAKCgovLyBhY3R1YWwgY29tbWFuZHMgZm9sbG93CgpD
TUQobHNjZXJ0cywgImtleSBhbmQgY2VydCIsICIoZmlsZXxtYW5pZmVzdCkgPGlkPiIsIAog
ICAgImxpc3QgY2VydHMgYXNzb2NpYXRlZCB3aXRoIG1hbmlmZXN0IG9yIGZpbGUiKQp7CiAg
aWYgKGFyZ3Muc2l6ZSgpICE9IDIpCiAgICB0aHJvdyB1c2FnZShuYW1lKTsKCiAgdmVjdG9y
PGNlcnQ+IGNlcnRzOwoKICB0cmFuc2FjdGlvbl9ndWFyZCBndWFyZChhcHAuZGIpOwoKICBp
ZiAoYXJnc1swXSA9PSAibWFuaWZlc3QiKQogICAgewogICAgICBtYW5pZmVzdF9pZCBpZGVu
dChhcmdzWzFdKTsKICAgICAgdmVjdG9yPCBtYW5pZmVzdDxjZXJ0PiA+IHRzOwogICAgICBh
cHAuZGIuZ2V0X21hbmlmZXN0X2NlcnRzKGlkZW50LCB0cyk7CiAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgdHMuc2l6ZSgpOyArK2kpCgljZXJ0cy5wdXNoX2JhY2sodHNbaV0uaW5u
ZXIoKSk7CiAgICB9CiAgZWxzZSBpZiAoYXJnc1swXSA9PSAiZmlsZSIpCiAgICB7CiAgICAg
IGZpbGVfaWQgaWRlbnQoYXJnc1sxXSk7CiAgICAgIHZlY3RvcjwgZmlsZTxjZXJ0PiA+IHRz
OwogICAgICBhcHAuZGIuZ2V0X2ZpbGVfY2VydHMoaWRlbnQsIHRzKTsKICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB0cy5zaXplKCk7ICsraSkKCWNlcnRzLnB1c2hfYmFjayh0c1tp
XS5pbm5lcigpKTsKICAgIH0KICBlbHNlCiAgICB0aHJvdyB1c2FnZShuYW1lKTsKCQogIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY2VydHMuc2l6ZSgpOyArK2kpCiAgICB7CiAgICAgIGJv
b2wgb2sgPSBjaGVja19jZXJ0KGFwcCwgY2VydHNbaV0pOwogICAgICBjZXJ0X3ZhbHVlIHR2
OyAgICAgIAogICAgICBkZWNvZGVfYmFzZTY0KGNlcnRzW2ldLnZhbHVlLCB0dik7CiAgICAg
IHN0cmluZyB3YXNoZWQ7CiAgICAgIGlmIChndWVzc19iaW5hcnkodHYoKSkpCgl7CgkgIHdh
c2hlZCA9ICI8YmluYXJ5IGRhdGE+IjsKCX0KICAgICAgZWxzZQoJewoJICB3YXNoZWQgPSB0
digpOwoJfQogICAgICBzdHJpbmcgaGVhZCA9IHN0cmluZyhvayA/ICJvayBzaWcgZnJvbSAi
IDogImJhZCBzaWcgZnJvbSAiKQoJKyAiWyIgKyBjZXJ0c1tpXS5rZXkoKSArICJdIDogIiAK
CSsgIlsiICsgY2VydHNbaV0ubmFtZSgpICsgIl0gPSBbIjsKICAgICAgc3RyaW5nIHBhZCho
ZWFkLnNpemUoKSwgJyAnKTsKICAgICAgdmVjdG9yPHN0cmluZz4gbGluZXM7CiAgICAgIHNw
bGl0X2ludG9fbGluZXMod2FzaGVkLCBsaW5lcyk7CiAgICAgIEkobGluZXMuc2l6ZSgpID4g
MCk7CiAgICAgIGNvdXQgPDwgaGVhZCA8PCBsaW5lc1swXSA7CiAgICAgIGZvciAoc2l6ZV90
IGkgPSAxOyBpIDwgbGluZXMuc2l6ZSgpOyArK2kpCgljb3V0IDw8IGVuZGwgPDwgcGFkIDw8
IGxpbmVzW2ldOwogICAgICBjb3V0IDw8ICJdIiA8PCBlbmRsOwogICAgfSAgCiAgZ3VhcmQu
Y29tbWl0KCk7Cn0KCkNNRChsc2tleXMsICJrZXkgYW5kIGNlcnQiLCAiW3BhcnRpYWwtaWRd
IiwgImxpc3Qga2V5cyIpCnsKICB2ZWN0b3I8cnNhX2tleXBhaXJfaWQ+IHB1YmtleXM7CiAg
dmVjdG9yPHJzYV9rZXlwYWlyX2lkPiBwcml2a2V5czsKCiAgdHJhbnNhY3Rpb25fZ3VhcmQg
Z3VhcmQoYXBwLmRiKTsKCiAgaWYgKGFyZ3Muc2l6ZSgpID09IDApCiAgICBhcHAuZGIuZ2V0
X2tleV9pZHMoIiIsIHB1YmtleXMsIHByaXZrZXlzKTsKICBlbHNlIGlmIChhcmdzLnNpemUo
KSA9PSAxKQogICAgYXBwLmRiLmdldF9rZXlfaWRzKGFyZ3NbMF0sIHB1YmtleXMsIHByaXZr
ZXlzKTsKICBlbHNlCiAgICB0aHJvdyB1c2FnZShuYW1lKTsKICAKICBpZiAocHVia2V5cy5z
aXplKCkgPiAwKQogICAgewogICAgICBjb3V0IDw8IGVuZGwgPDwgIltwdWJsaWMga2V5c10i
IDw8IGVuZGw7CiAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHVia2V5cy5zaXplKCk7
ICsraSkKCWNvdXQgPDwgcHVia2V5c1tpXSgpIDw8IGVuZGw7CiAgICAgIGNvdXQgPDwgZW5k
bDsKICAgIH0KCiAgaWYgKHByaXZrZXlzLnNpemUoKSA+IDApCiAgICB7CiAgICAgIGNvdXQg
PDwgZW5kbCA8PCAiW3ByaXZhdGUga2V5c10iIDw8IGVuZGw7CiAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcHJpdmtleXMuc2l6ZSgpOyArK2kpCgljb3V0IDw8IHByaXZrZXlzW2ld
KCkgPDwgZW5kbDsKICAgICAgY291dCA8PCBlbmRsOwogICAgfQoKICBndWFyZC5jb21taXQo
KTsKfQoKQ01EKGdlbmtleSwgImtleSBhbmQgY2VydCIsICI8a2V5aWQ+IiwgImdlbmVyYXRl
IGFuIFJTQSBrZXktcGFpciIpCnsKICBpZiAoYXJncy5zaXplKCkgIT0gMSkKICAgIHRocm93
IHVzYWdlKG5hbWUpOwogIAogIHRyYW5zYWN0aW9uX2d1YXJkIGd1YXJkKGFwcC5kYik7CiAg
cnNhX2tleXBhaXJfaWQgaWRlbnQoYXJnc1swXSk7CgogIE4oISBhcHAuZGIua2V5X2V4aXN0
cyhpZGVudCksCiAgICAoc3RyaW5nKCJrZXkgJyIpICsgaWRlbnQoKSArICInIGFscmVhZHkg
ZXhpc3RzIGluIGRhdGFiYXNlIikpOwogIAogIGJhc2U2NDxyc2FfcHViX2tleT4gcHViOwog
IGJhc2U2NDwgYXJjNDxyc2FfcHJpdl9rZXk+ID4gcHJpdjsKICBQKCJnZW5lcmF0aW5nIGtl
eS1wYWlyICclcydcbiIsIGlkZW50KCkuY19zdHIoKSk7CiAgZ2VuZXJhdGVfa2V5X3BhaXIo
YXBwLmx1YSwgaWRlbnQsIHB1YiwgcHJpdik7CiAgUCgic3RvcmluZyBrZXktcGFpciAnJXMn
IGluIGRhdGFiYXNlXG4iLCBpZGVudCgpLmNfc3RyKCkpOwogIGFwcC5kYi5wdXRfa2V5X3Bh
aXIoaWRlbnQsIHB1YiwgcHJpdik7CgogIGd1YXJkLmNvbW1pdCgpOwp9CgpDTUQoY2VydCwg
ImtleSBhbmQgY2VydCIsICIoZmlsZXxtYW5pZmVzdCkgPGlkPiA8Y2VydG5hbWU+IFtjZXJ0
dmFsXSIsIAogICAgICAgICAgICAgICAgICAgICAgICAiY3JlYXRlIGEgY2VydCBmb3IgYSBm
aWxlIG9yIG1hbmlmZXN0IikKewogIGlmICgoYXJncy5zaXplKCkgIT0gNCkgJiYgKGFyZ3Mu
c2l6ZSgpICE9IDMpKQogICAgdGhyb3cgdXNhZ2UobmFtZSk7CgogIHRyYW5zYWN0aW9uX2d1
YXJkIGd1YXJkKGFwcC5kYik7CgogIGhleGVuYzxpZD4gaWRlbnQoYXJnc1sxXSk7CiAgY2Vy
dF9uYW1lIG5hbWUoYXJnc1syXSk7CgogIHJzYV9rZXlwYWlyX2lkIGtleTsKICBpZiAoYXBw
LnNpZ25pbmdfa2V5KCkgIT0gIiIpCiAgICBrZXkgPSBhcHAuc2lnbmluZ19rZXk7CiAgZWxz
ZQogICAgTihndWVzc19kZWZhdWx0X2tleShrZXksIGFwcCksCiAgICAgICJubyB1bmlxdWUg
cHJpdmF0ZSBrZXkgZm91bmQsIGFuZCBubyBrZXkgc3BlY2lmaWVkIik7CiAgCiAgY2VydF92
YWx1ZSB2YWw7CiAgaWYgKGFyZ3Muc2l6ZSgpID09IDQpCiAgICB2YWwgPSBjZXJ0X3ZhbHVl
KGFyZ3NbM10pOwogIGVsc2UKICAgIHZhbCA9IGNlcnRfdmFsdWUoZ2V0X3N0ZGluKCkpOwoK
ICBiYXNlNjQ8Y2VydF92YWx1ZT4gdmFsX2VuY29kZWQ7CiAgZW5jb2RlX2Jhc2U2NCh2YWws
IHZhbF9lbmNvZGVkKTsKCiAgY2VydCB0KGlkZW50LCBuYW1lLCB2YWxfZW5jb2RlZCwga2V5
KTsKICAKICAvLyBuYjogd2Ugd2FudCB0byB0aHJvdyB1c2FnZSBvbiBtaXMtdXNlICpiZWZv
cmUqIGFza2luZyBmb3IgYQogIC8vIHBhc3NwaHJhc2UuCgogIGlmIChhcmdzWzBdID09ICJm
aWxlIikKICAgIHsKICAgICAgY2FsY3VsYXRlX2NlcnQoYXBwLCB0KTsKICAgICAgYXBwLmRi
LnB1dF9maWxlX2NlcnQoZmlsZTxjZXJ0Pih0KSk7CiAgICB9CiAgZWxzZSBpZiAoYXJnc1sw
XSA9PSAibWFuaWZlc3QiKQogICAgewogICAgICBjYWxjdWxhdGVfY2VydChhcHAsIHQpOwog
ICAgICBhcHAuZGIucHV0X21hbmlmZXN0X2NlcnQobWFuaWZlc3Q8Y2VydD4odCkpOwogICAg
fQogIGVsc2UKICAgIHRocm93IHVzYWdlKHRoaXMtPm5hbWUpOwoKICBndWFyZC5jb21taXQo
KTsKfQoKCkNNRCh0YWcsICJjZXJ0aWZpY2F0ZSIsICI8aWQ+IDx0YWduYW1lPiIsIAogICAg
InB1dCBhIHN5bWJvbGljIHRhZyBjZXJ0IG9uIGEgbWFuaWZlc3QgdmVyc2lvbiIpCnsKICBp
ZiAoYXJncy5zaXplKCkgIT0gMikKICAgIHRocm93IHVzYWdlKG5hbWUpOwogIG1hbmlmZXN0
X2lkIG0oYXJnc1swXSk7CiAgcGFja2V0X2RiX3dyaXRlciBkYncoYXBwKTsKICBjZXJ0X21h
bmlmZXN0X3RhZyhtLCBhcmdzWzFdLCBhcHAsIGRidyk7Cn0KCkNNRChhcHByb3ZlLCAiY2Vy
dGlmaWNhdGUiLCAiKGZpbGV8bWFuaWZlc3QpIDxpZD4iLCAKICAgICJhcHByb3ZlIG9mIGEg
bWFuaWZlc3Qgb3IgZmlsZSB2ZXJzaW9uIikKewogIGlmIChhcmdzLnNpemUoKSAhPSAyKQog
ICAgdGhyb3cgdXNhZ2UobmFtZSk7CiAgaWYgKGFyZ3NbMF0gPT0gIm1hbmlmZXN0IikKICAg
IHsKICAgICAgbWFuaWZlc3RfaWQgbShhcmdzWzFdKTsKICAgICAgcGFja2V0X2RiX3dyaXRl
ciBkYncoYXBwKTsKICAgICAgY2VydF9tYW5pZmVzdF9hcHByb3ZhbChtLCB0cnVlLCBhcHAs
IGRidyk7CiAgICB9CiAgZWxzZSBpZiAoYXJnc1swXSA9PSAiZmlsZSIpCiAgICB7CiAgICAg
IHBhY2tldF9kYl93cml0ZXIgZGJ3KGFwcCk7CiAgICAgIGZpbGVfaWQgZihhcmdzWzFdKTsK
ICAgICAgY2VydF9maWxlX2FwcHJvdmFsKGYsIHRydWUsIGFwcCwgZGJ3KTsKICAgIH0KICBl
bHNlCiAgICB0aHJvdyB1c2FnZShuYW1lKTsKfQoKQ01EKGRpc2FwcHJvdmUsICJjZXJ0aWZp
Y2F0ZSIsICIoZmlsZXxtYW5pZmVzdCkgPGlkPiIsIAogICAgImRpc2FwcHJvdmUgb2YgYSBt
YW5pZmVzdCBvciBmaWxlIHZlcnNpb24iKQp7CiAgaWYgKGFyZ3Muc2l6ZSgpICE9IDIpCiAg
ICB0aHJvdyB1c2FnZShuYW1lKTsKICBpZiAoYXJnc1swXSA9PSAibWFuaWZlc3QiKQogICAg
ewogICAgICBtYW5pZmVzdF9pZCBtKGFyZ3NbMV0pOwogICAgICBwYWNrZXRfZGJfd3JpdGVy
IGRidyhhcHApOwogICAgICBjZXJ0X21hbmlmZXN0X2FwcHJvdmFsKG0sIGZhbHNlLCBhcHAs
IGRidyk7CiAgICB9CiAgZWxzZSBpZiAoYXJnc1swXSA9PSAiZmlsZSIpCiAgICB7CiAgICAg
IGZpbGVfaWQgZihhcmdzWzFdKTsKICAgICAgcGFja2V0X2RiX3dyaXRlciBkYncoYXBwKTsK
ICAgICAgY2VydF9maWxlX2FwcHJvdmFsKGYsIGZhbHNlLCBhcHAsIGRidyk7CiAgICB9CiAg
ZWxzZQogICAgdGhyb3cgdXNhZ2UobmFtZSk7Cn0KCgpDTUQoY29tbWVudCwgImNlcnRpZmlj
YXRlIiwgIihmaWxlfG1hbmlmZXN0KSA8aWQ+IFtjb21tZW50XSIsIAogICAgImNvbW1lbnQg
b24gYSBmaWxlIG9yIG1hbmlmZXN0IHZlcnNpb24iKQp7CiAgaWYgKGFyZ3Muc2l6ZSgpICE9
IDIgJiYgYXJncy5zaXplKCkgIT0gMykKICAgIHRocm93IHVzYWdlKG5hbWUpOwoKICBzdHJp
bmcgY29tbWVudDsKICBpZiAoYXJncy5zaXplKCkgPT0gMykKICAgIGNvbW1lbnQgPSBhcmdz
WzJdOwogIGVsc2UKICAgIE4oYXBwLmx1YS5ob29rX2VkaXRfY29tbWVudCgiIiwgY29tbWVu
dCksICJlZGl0IGNvbW1lbnQgZmFpbGVkIik7CiAgCiAgTihjb21tZW50LmZpbmRfZmlyc3Rf
bm90X29mKCIgXHJcdFxuIikgPT0gc3RyaW5nOjpucG9zLCAiZW1wdHkgY29tbWVudCIpOwoK
ICBpZiAoYXJnc1swXSA9PSAiZmlsZSIpCiAgICB7CiAgICAgIHBhY2tldF9kYl93cml0ZXIg
ZGJ3KGFwcCk7CiAgICAgIGNlcnRfZmlsZV9jb21tZW50KGZpbGVfaWQoYXJnc1sxXSksIGNv
bW1lbnQsIGFwcCwgZGJ3KTsgCiAgICB9CiAgZWxzZSBpZiAoYXJnc1swXSA9PSAibWFuaWZl
c3QiKQogICAgewogICAgICBwYWNrZXRfZGJfd3JpdGVyIGRidyhhcHApOwogICAgICBjZXJ0
X21hbmlmZXN0X2NvbW1lbnQobWFuaWZlc3RfaWQoYXJnc1sxXSksIGNvbW1lbnQsIGFwcCwg
ZGJ3KTsKICAgIH0KICBlbHNlCiAgICB0aHJvdyB1c2FnZShuYW1lKTsKfQoKCgpDTUQoYWRk
LCAid29ya2luZyBjb3B5IiwgIjxwYXRobmFtZT4gWy4uLl0iLCAiYWRkIGZpbGVzIHRvIHdv
cmtpbmcgY29weSIpCnsKICBpZiAoYXJncy5zaXplKCkgPCAxKQogICAgdGhyb3cgdXNhZ2Uo
bmFtZSk7CgogIHRyYW5zYWN0aW9uX2d1YXJkIGd1YXJkKGFwcC5kYik7CgogIG1hbmlmZXN0
X21hcCBtYW47CiAgd29ya19zZXQgd29yazsgIAogIGdldF9tYW5pZmVzdF9tYXAobWFuKTsK
ICBnZXRfd29ya19zZXQod29yayk7CiAgYm9vbCByZXdyaXRlX3dvcmsgPSBmYWxzZTsKCiAg
Zm9yICh2ZWN0b3I8c3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaSA9IGFyZ3MuYmVnaW4oKTsg
aSAhPSBhcmdzLmVuZCgpOyArK2kpCiAgICBidWlsZF9hZGRpdGlvbihmaWxlX3BhdGgoKmkp
LCBhcHAsIHdvcmssIG1hbiwgcmV3cml0ZV93b3JrKTsKICAKICBndWFyZC5jb21taXQoKTsK
ICAKICAvLyBzbWFsbCByYWNlIGhlcmUKICBpZiAocmV3cml0ZV93b3JrKQogICAgcHV0X3dv
cmtfc2V0KHdvcmspOwp9CgpDTUQoZHJvcCwgIndvcmtpbmcgY29weSIsICI8cGF0aG5hbWU+
IFsuLi5dIiwgImRyb3AgZmlsZXMgZnJvbSB3b3JraW5nIGNvcHkiKQp7CiAgaWYgKGFyZ3Mu
c2l6ZSgpIDwgMSkKICAgIHRocm93IHVzYWdlKG5hbWUpOwoKICBtYW5pZmVzdF9tYXAgbWFu
OwogIHdvcmtfc2V0IHdvcms7CiAgZ2V0X21hbmlmZXN0X21hcChtYW4pOwogIGdldF93b3Jr
X3NldCh3b3JrKTsKICBib29sIHJld3JpdGVfd29yayA9IGZhbHNlOwoKICB0cmFuc2FjdGlv
bl9ndWFyZCBndWFyZChhcHAuZGIpOwoKICBmb3IgKHZlY3RvcjxzdHJpbmc+Ojpjb25zdF9p
dGVyYXRvciBpID0gYXJncy5iZWdpbigpOyBpICE9IGFyZ3MuZW5kKCk7ICsraSkKICAgIGJ1
aWxkX2RlbGV0aW9uKGZpbGVfcGF0aCgqaSksIGFwcCwgd29yaywgbWFuLCByZXdyaXRlX3dv
cmspOwogIAogIGd1YXJkLmNvbW1pdCgpOwoKICAvLyBzbWFsbCByYWNlIGhlcmUKICBpZiAo
cmV3cml0ZV93b3JrKQogICAgcHV0X3dvcmtfc2V0KHdvcmspOwp9CgpDTUQoY29tbWl0LCAi
d29ya2luZyBjb3B5IiwgIltsb2cgbWVzc2FnZV0iLCAiY29tbWl0IHdvcmtpbmcgY29weSB0
byBkYXRhYmFzZSIpCnsKICBzdHJpbmcgbG9nX21lc3NhZ2UoIiIpOwogIG1hbmlmZXN0X21h
cCBtX29sZCwgbV9uZXc7CiAgcGF0Y2hfc2V0IHBzOwoKICBnZXRfbWFuaWZlc3RfbWFwKG1f
b2xkKTsKICBjYWxjdWxhdGVfbmV3X21hbmlmZXN0X21hcChtX29sZCwgbV9uZXcpOwogIG1h
bmlmZXN0X2lkIG9sZF9pZCwgbmV3X2lkOwogIGNhbGN1bGF0ZV9tYW5pZmVzdF9tYXBfaWRl
bnQobV9vbGQsIG9sZF9pZCk7CiAgY2FsY3VsYXRlX21hbmlmZXN0X21hcF9pZGVudChtX25l
dywgbmV3X2lkKTsKCiAgaWYgKGFyZ3Muc2l6ZSgpICE9IDAgJiYgYXJncy5zaXplKCkgIT0g
MSkKICAgIHRocm93IHVzYWdlKG5hbWUpOwogIAogIGNlcnRfdmFsdWUgYnJhbmNobmFtZTsK
ICBpZiAoYXBwLmJyYW5jaF9uYW1lICE9ICIiKQogICAgewogICAgICBicmFuY2huYW1lID0g
YXBwLmJyYW5jaF9uYW1lOwogICAgfQogIGVsc2UKICAgIHsKICAgICAgdmVjdG9yPCBtYW5p
ZmVzdDxjZXJ0PiA+IGNlcnRzOwogICAgICBjZXJ0X25hbWUgYnJhbmNoKGJyYW5jaF9jZXJ0
X25hbWUpOwogICAgICBhcHAuZGIuZ2V0X21hbmlmZXN0X2NlcnRzKG9sZF9pZCwgYnJhbmNo
LCBjZXJ0cyk7CgogICAgICBOKGNlcnRzLnNpemUoKSAhPSAwLCAKCXN0cmluZygibm8gYnJh
bmNoIGNlcnRzIGZvdW5kIGZvciBvbGQgbWFuaWZlc3QgIikKCSsgb2xkX2lkLmlubmVyKCko
KSArICIsIHBsZWFzZSBwcm92aWRlIGEgYnJhbmNoIG5hbWUiKTsKCiAgICAgIE4oY2VydHMu
c2l6ZSgpID09IDEsCglzdHJpbmcoIm11bHRpcGxlIGJyYW5jaCBjZXJ0cyBmb3VuZCBmb3Ig
b2xkIG1hbmlmZXN0ICIpCgkrIG9sZF9pZC5pbm5lcigpKCkgKyAiLCBwbGVhc2UgcHJvdmlk
ZSBhIGJyYW5jaCBuYW1lIik7CgogICAgICBkZWNvZGVfYmFzZTY0KGNlcnRzWzBdLmlubmVy
KCkudmFsdWUsIGJyYW5jaG5hbWUpOwogICAgfQogICAgCiAgTCgiY29tbWl0dGluZyAlcyB0
byBicmFuY2ggJXNcbiIsIAogICAgbmV3X2lkLmlubmVyKCkoKS5jX3N0cigpLCBicmFuY2hu
YW1lKCkuY19zdHIoKSk7CiAgYXBwLmJyYW5jaF9uYW1lID0gYnJhbmNobmFtZSgpOwoKICBt
YW5pZmVzdHNfdG9fcGF0Y2hfc2V0KG1fb2xkLCBtX25ldywgYXBwLCBwcyk7CgogIC8vIGdl
dCBsb2cgbWVzc2FnZQogIGlmIChhcmdzLnNpemUoKSA9PSAxKQogICAgbG9nX21lc3NhZ2Ug
PSBhcmdzWzBdOwogIGVsc2UKICAgIGdldF9sb2dfbWVzc2FnZShwcywgYXBwLCBsb2dfbWVz
c2FnZSk7CgogIE4obG9nX21lc3NhZ2UuZmluZF9maXJzdF9ub3Rfb2YoIiBcclx0XG4iKSAh
PSBzdHJpbmc6Om5wb3MsCiAgICAiZW1wdHkgbG9nIG1lc3NhZ2UiKTsKCiAgewogICAgdHJh
bnNhY3Rpb25fZ3VhcmQgZ3VhcmQoYXBwLmRiKTsKCiAgICAvLyBwcm9jZXNzIG1hbmlmZXN0
IGRlbHRhIG9yIG5ldyBtYW5pZmVzdAogICAgaWYgKGFwcC5kYi5tYW5pZmVzdF92ZXJzaW9u
X2V4aXN0cyhwcy5tX25ldykpCiAgICAgIHsKCUwoInNraXBwaW5nIG1hbmlmZXN0ICVzLCBh
bHJlYWR5IGluIGRhdGFiYXNlXG4iLCBwcy5tX25ldy5pbm5lcigpKCkuY19zdHIoKSk7CiAg
ICAgIH0KICAgIGVsc2UKICAgICAgewoJaWYgKGFwcC5kYi5tYW5pZmVzdF92ZXJzaW9uX2V4
aXN0cyhwcy5tX29sZCkpCgkgIHsKCSAgICBMKCJpbnNlcnRpbmcgbWFuaWZlc3QgZGVsdGEg
JXMgLT4gJXNcbiIsIAoJICAgICAgcHMubV9vbGQuaW5uZXIoKSgpLmNfc3RyKCksIHBzLm1f
bmV3LmlubmVyKCkoKS5jX3N0cigpKTsKCSAgICBtYW5pZmVzdF9kYXRhIG1fb2xkX2RhdGEs
IG1fbmV3X2RhdGE7CgkgICAgYXBwLmRiLmdldF9tYW5pZmVzdF92ZXJzaW9uKHBzLm1fb2xk
LCBtX29sZF9kYXRhKTsKCSAgICB3cml0ZV9tYW5pZmVzdF9tYXAobV9uZXcsIG1fbmV3X2Rh
dGEpOwoJICAgIGJhc2U2NDwgZ3ppcDxkZWx0YT4gPiBkZWw7CgkgICAgZGlmZihtX29sZF9k
YXRhLmlubmVyKCksIG1fbmV3X2RhdGEuaW5uZXIoKSwgZGVsKTsKCSAgICBhcHAuZGIucHV0
X21hbmlmZXN0X3ZlcnNpb24ocHMubV9vbGQsIHBzLm1fbmV3LCBtYW5pZmVzdF9kZWx0YShk
ZWwpKTsKCSAgfQoJZWxzZQoJICB7CgkgICAgTCgiaW5zZXJ0aW5nIGZ1bGwgbWFuaWZlc3Qg
JXNcbiIsIAoJICAgICAgcHMubV9uZXcuaW5uZXIoKSgpLmNfc3RyKCkpOwoJICAgIG1hbmlm
ZXN0X2RhdGEgbV9uZXdfZGF0YTsKCSAgICB3cml0ZV9tYW5pZmVzdF9tYXAobV9uZXcsIG1f
bmV3X2RhdGEpOwoJICAgIGFwcC5kYi5wdXRfbWFuaWZlc3QocHMubV9uZXcsIG1fbmV3X2Rh
dGEpOwoJICB9CiAgICAgIH0KCiAgICAvLyBwcm9jZXNzIGZpbGUgZGVsdGFzCiAgICBmb3Ig
KHNldDxwYXRjaF9kZWx0YT46OmNvbnN0X2l0ZXJhdG9yIGkgPSBwcy5mX2RlbHRhcy5iZWdp
bigpOwoJIGkgIT0gcHMuZl9kZWx0YXMuZW5kKCk7ICsraSkKICAgICAgewoJaWYgKGFwcC5k
Yi5maWxlX3ZlcnNpb25fZXhpc3RzKGktPmlkX25ldykpCgkgIHsKCSAgICBMKCJza2lwcGlu
ZyBmaWxlIGRlbHRhICVzLCBhbHJlYWR5IGluIGRhdGFiYXNlXG4iLCBpLT5pZF9uZXcuaW5u
ZXIoKSgpLmNfc3RyKCkpOwoJICB9CgllbHNlCgkgIHsKCSAgICBpZiAoYXBwLmRiLmZpbGVf
dmVyc2lvbl9leGlzdHMoaS0+aWRfb2xkKSkKCSAgICAgIHsKCQlMKCJpbnNlcnRpbmcgZGVs
dGEgJXMgLT4gJXNcbiIsIAoJCSAgaS0+aWRfb2xkLmlubmVyKCkoKS5jX3N0cigpLCBpLT5p
ZF9uZXcuaW5uZXIoKSgpLmNfc3RyKCkpOwoJCWZpbGVfZGF0YSBvbGRfZGF0YTsKCQliYXNl
NjQ8IGd6aXA8ZGF0YT4gPiBuZXdfZGF0YTsKCQlhcHAuZGIuZ2V0X2ZpbGVfdmVyc2lvbihp
LT5pZF9vbGQsIG9sZF9kYXRhKTsKCQlyZWFkX2RhdGEoaS0+cGF0aCwgbmV3X2RhdGEpOwoJ
CWJhc2U2NDwgZ3ppcDxkZWx0YT4gPiBkZWw7CgkJZGlmZihvbGRfZGF0YS5pbm5lcigpLCBu
ZXdfZGF0YSwgZGVsKTsKCQlhcHAuZGIucHV0X2ZpbGVfdmVyc2lvbihpLT5pZF9vbGQsIGkt
PmlkX25ldywgZmlsZV9kZWx0YShkZWwpKTsKCSAgICAgIH0KCSAgICBlbHNlCgkgICAgICB7
CgkJTCgiaW5zZXJ0aW5nIGZ1bGwgdmVyc2lvbiAlc1xuIiwgaS0+aWRfb2xkLmlubmVyKCko
KS5jX3N0cigpKTsKCQliYXNlNjQ8IGd6aXA8ZGF0YT4gPiBuZXdfZGF0YTsKCQlyZWFkX2Rh
dGEoaS0+cGF0aCwgbmV3X2RhdGEpOwoJCS8vIHNhbml0eSBjaGVjawoJCWhleGVuYzxpZD4g
dGlkOwoJCWNhbGN1bGF0ZV9pZGVudChuZXdfZGF0YSwgdGlkKTsKCQlJKHRpZCA9PSBpLT5p
ZF9uZXcuaW5uZXIoKSk7CgkJYXBwLmRiLnB1dF9maWxlKGktPmlkX25ldywgZmlsZV9kYXRh
KG5ld19kYXRhKSk7CgkgICAgICB9CgkgIH0KICAgICAgfQogIAogICAgLy8gcHJvY2VzcyBm
aWxlIGFkZHMKICAgIGZvciAoc2V0PHBhdGNoX2FkZGl0aW9uPjo6Y29uc3RfaXRlcmF0b3Ig
aSA9IHBzLmZfYWRkcy5iZWdpbigpOwoJIGkgIT0gcHMuZl9hZGRzLmVuZCgpOyArK2kpCiAg
ICAgIHsKCWlmIChhcHAuZGIuZmlsZV92ZXJzaW9uX2V4aXN0cyhpLT5pZGVudCkpCgkgIHsK
CSAgICBMKCJza2lwcGluZyBmaWxlICVzICVzLCBhbHJlYWR5IGluIGRhdGFiYXNlXG4iLCAK
CSAgICAgIGktPnBhdGgoKS5jX3N0cigpLCBpLT5pZGVudC5pbm5lcigpKCkuY19zdHIoKSk7
CgkgIH0KCWVsc2UKCSAgewoJICAgIC8vIGl0J3MgYSBuZXcgZmlsZQoJICAgIEwoImluc2Vy
dGluZyBuZXcgZmlsZSAlcyAlc1xuIiwgCgkgICAgICBpLT5wYXRoKCkuY19zdHIoKSwgaS0+
aWRlbnQuaW5uZXIoKSgpLmNfc3RyKCkpOwoJICAgIGJhc2U2NDwgZ3ppcDxkYXRhPiA+IG5l
d19kYXRhOwoJICAgIHJlYWRfZGF0YShpLT5wYXRoLCBuZXdfZGF0YSk7CgkgICAgYXBwLmRi
LnB1dF9maWxlKGktPmlkZW50LCBuZXdfZGF0YSk7CgkgIH0KICAgICAgfQoKICAgIHBhY2tl
dF9kYl93cml0ZXIgZGJ3KGFwcCk7CgogICAgaWYgKCEgbV9vbGQuZW1wdHkoKSkKICAgICAg
Y2VydF9tYW5pZmVzdF9hbmNlc3Rvcihwcy5tX29sZCwgcHMubV9uZXcsIGFwcCwgZGJ3KTsK
CiAgICBjZXJ0X21hbmlmZXN0X2luX2JyYW5jaChwcy5tX25ldywgYnJhbmNobmFtZSwgYXBw
LCBkYncpOyAKICAgIGNlcnRfbWFuaWZlc3RfZGF0ZV9ub3cocHMubV9uZXcsIGFwcCwgZGJ3
KTsKICAgIGNlcnRfbWFuaWZlc3RfYXV0aG9yX2RlZmF1bHQocHMubV9uZXcsIGFwcCwgZGJ3
KTsKICAgIGNlcnRfbWFuaWZlc3RfY2hhbmdlbG9nKHBzLm1fbmV3LCBsb2dfbWVzc2FnZSwg
YXBwLCBkYncpOwoKICAgIC8vIGNvbW1pdCBkb25lLCBub3cgcXVldWUgZGlmZiBmb3Igc2Vu
ZGluZwoKICAgIGlmIChhcHAuZGIubWFuaWZlc3RfdmVyc2lvbl9leGlzdHMocHMubV9uZXcp
KQogICAgICB7Cgl2ZWN0b3I8IHBhaXI8dXJsLGdyb3VwPiA+IHRhcmdldHM7CglhcHAubHVh
Lmhvb2tfZ2V0X3Bvc3RfdGFyZ2V0cyhicmFuY2huYW1lLCB0YXJnZXRzKTsKCQoJLy8gbWFr
ZSBzdXJlIHRoZSBhcHByb3ByaWF0ZSBlZGdlcyBnZXQgcXVldWVkIGZvciB0aGUgbmV0d29y
ay4KCWZvciAodmVjdG9yPCBwYWlyPHVybCxncm91cD4gPjo6Y29uc3RfaXRlcmF0b3IgdGFy
ZyA9IHRhcmdldHMuYmVnaW4oKTsKCSAgICAgdGFyZyAhPSB0YXJnZXRzLmVuZCgpOyArK3Rh
cmcpCgkgIHsKCSAgICBxdWV1ZV9lZGdlX2Zvcl90YXJnZXRfYW5jZXN0b3IgKCp0YXJnLCBw
cy5tX25ldywgbV9uZXcsIGFwcCk7CgkgIH0KCQoJLy8gdGhyb3cgaW4gYWxsIGF2YWlsYWJs
ZSBjZXJ0cyBmb3IgZ29vZCBtZWFzdXJlCglxdWV1ZWluZ19wYWNrZXRfd3JpdGVyIHFwdyhh
cHAsIHRhcmdldHMpOwoJdmVjdG9yPCBtYW5pZmVzdDxjZXJ0PiA+IGNlcnRzOwoJYXBwLmRi
LmdldF9tYW5pZmVzdF9jZXJ0cyhwcy5tX25ldywgY2VydHMpOwoJZm9yKHZlY3RvcjwgbWFu
aWZlc3Q8Y2VydD4gPjo6Y29uc3RfaXRlcmF0b3IgaSA9IGNlcnRzLmJlZ2luKCk7CgkgICAg
aSAhPSBjZXJ0cy5lbmQoKTsgKytpKQoJICBxcHcuY29uc3VtZV9tYW5pZmVzdF9jZXJ0KCpp
KTsKICAgICAgfSAKICAgIAogICAgZ3VhcmQuY29tbWl0KCk7CiAgfQogIC8vIHNtYWxsIHJh
Y2UgY29uZGl0aW9uIGhlcmUuLi4KICBsb2NhbF9wYXRoIHdfcGF0aDsKICBnZXRfd29ya19w
YXRoKHdfcGF0aCk7CiAgZGVsZXRlX2ZpbGUod19wYXRoKTsKICBwdXRfbWFuaWZlc3RfbWFw
KG1fbmV3KTsKICBQKCJjb21taXR0ZWQgJXNcbiIsIHBzLm1fbmV3LmlubmVyKCkoKS5jX3N0
cigpKTsKfQoKQ01EKHVwZGF0ZSwgIndvcmtpbmcgY29weSIsICJbc29ydCBrZXlzLi4uXSIs
ICJ1cGRhdGUgd29ya2luZyBjb3B5LCByZWxhdGl2ZSB0byBzb3J0aW5nIGtleXMiKQp7Cgog
IG1hbmlmZXN0X2RhdGEgbV9jaG9zZW5fZGF0YTsKICBtYW5pZmVzdF9tYXAgbV9vbGQsIG1f
d29ya2luZywgbV9jaG9zZW4sIG1fbmV3OwogIG1hbmlmZXN0X2lkIG1fb2xkX2lkLCBtX2No
b3Nlbl9pZDsKCiAgdHJhbnNhY3Rpb25fZ3VhcmQgZ3VhcmQoYXBwLmRiKTsKCiAgZ2V0X21h
bmlmZXN0X21hcChtX29sZCk7CiAgY2FsY3VsYXRlX21hbmlmZXN0X21hcF9pZGVudChtX29s
ZCwgbV9vbGRfaWQpOwogIGNhbGN1bGF0ZV9uZXdfbWFuaWZlc3RfbWFwKG1fb2xkLCBtX3dv
cmtpbmcpOwogIAogIHBpY2tfdXBkYXRlX3RhcmdldChtX29sZF9pZCwgYXJncywgYXBwLCBt
X2Nob3Nlbl9pZCk7CiAgUCgic2VsZWN0ZWQgdXBkYXRlIHRhcmdldCAlc1xuIiwKICAgIG1f
Y2hvc2VuX2lkLmlubmVyKCkoKS5jX3N0cigpKTsKICBhcHAuZGIuZ2V0X21hbmlmZXN0X3Zl
cnNpb24obV9jaG9zZW5faWQsIG1fY2hvc2VuX2RhdGEpOwogIHJlYWRfbWFuaWZlc3RfbWFw
KG1fY2hvc2VuX2RhdGEsIG1fY2hvc2VuKTsKCiAgdXBkYXRlX21lcmdlX3Byb3ZpZGVyIG1l
cmdlcihhcHApOwogIE4obWVyZ2UzKG1fb2xkLCBtX2Nob3NlbiwgbV93b3JraW5nLCBhcHAs
IG1lcmdlciwgbV9uZXcpLAogICAgc3RyaW5nKCJtYW5pZmVzdCBtZXJnZSBmYWlsZWQsIG5v
IHVwZGF0ZSBwZXJmb3JtZWQiKSk7CgogIFAoImNhbGN1bGF0aW5nIHBhdGNoc2V0IGZvciB1
cGRhdGVcbiIpOwogIHBhdGNoX3NldCBwczsKICBtYW5pZmVzdHNfdG9fcGF0Y2hfc2V0KG1f
d29ya2luZywgbV9uZXcsIGFwcCwgcHMpOwoKICBMKCJhcHBseWluZyAlZCBkZWxldGlvbnMg
dG8gZmlsZXMgaW4gdHJlZVxuIiwgcHMuZl9kZWxzLnNpemUoKSk7CiAgZm9yIChzZXQ8Zmls
ZV9wYXRoPjo6Y29uc3RfaXRlcmF0b3IgaSA9IHBzLmZfZGVscy5iZWdpbigpOwogICAgICAg
aSAhPSBwcy5mX2RlbHMuZW5kKCk7ICsraSkKICAgIHsKICAgICAgTCgiZGVsZXRpbmcgJXNc
biIsICgqaSkoKS5jX3N0cigpKTsKICAgICAgZGVsZXRlX2ZpbGUoKmkpOwogICAgfQoKICBM
KCJhcHBseWluZyAlZCBtb3ZlcyB0byBmaWxlcyBpbiB0cmVlXG4iLCBwcy5mX21vdmVzLnNp
emUoKSk7CiAgZm9yIChzZXQ8cGF0Y2hfbW92ZT46OmNvbnN0X2l0ZXJhdG9yIGkgPSBwcy5m
X21vdmVzLmJlZ2luKCk7CiAgICAgICBpICE9IHBzLmZfbW92ZXMuZW5kKCk7ICsraSkKICAg
IHsKICAgICAgTCgibW92aW5nICVzIC0+ICVzXG4iLCBpLT5wYXRoX29sZCgpLmNfc3RyKCks
IGktPnBhdGhfbmV3KCkuY19zdHIoKSk7CiAgICAgIG1vdmVfZmlsZShpLT5wYXRoX29sZCwg
aS0+cGF0aF9uZXcpOwogICAgfQogIAogIEwoImFwcGx5aW5nICVkIGFkZGl0aW9ucyB0byB0
cmVlXG4iLCBwcy5mX2FkZHMuc2l6ZSgpKTsKICBmb3IgKHNldDxwYXRjaF9hZGRpdGlvbj46
OmNvbnN0X2l0ZXJhdG9yIGkgPSBwcy5mX2FkZHMuYmVnaW4oKTsKICAgICAgIGkgIT0gcHMu
Zl9hZGRzLmVuZCgpOyArK2kpCiAgICB7CiAgICAgIEwoImFkZGluZyAlcyBhcyAlc1xuIiwg
aS0+aWRlbnQuaW5uZXIoKSgpLmNfc3RyKCksIGktPnBhdGgoKS5jX3N0cigpKTsKICAgICAg
ZmlsZV9kYXRhIHRtcDsKICAgICAgaWYgKGFwcC5kYi5maWxlX3ZlcnNpb25fZXhpc3RzKGkt
PmlkZW50KSkKCWFwcC5kYi5nZXRfZmlsZV92ZXJzaW9uKGktPmlkZW50LCB0bXApOwogICAg
ICBlbHNlIGlmIChtZXJnZXIudGVtcG9yYXJ5X3N0b3JlLmZpbmQoaS0+aWRlbnQpICE9IG1l
cmdlci50ZW1wb3Jhcnlfc3RvcmUuZW5kKCkpCgl0bXAgPSBtZXJnZXIudGVtcG9yYXJ5X3N0
b3JlW2ktPmlkZW50XTsKICAgICAgZWxzZQoJSShmYWxzZSk7IC8vIHRyaXAgYXNzZXJ0LiB0
aGlzIHNob3VsZCBiZSBpbXBvc3NpYmxlLgogICAgICB3cml0ZV9kYXRhKGktPnBhdGgsIHRt
cC5pbm5lcigpKTsKICAgIH0KCiAgTCgiYXBwbHlpbmcgJWQgZGVsdGFzIHRvIHRyZWVcbiIs
IHBzLmZfZGVsdGFzLnNpemUoKSk7CiAgZm9yIChzZXQ8cGF0Y2hfZGVsdGE+Ojpjb25zdF9p
dGVyYXRvciBpID0gcHMuZl9kZWx0YXMuYmVnaW4oKTsKICAgICAgIGkgIT0gcHMuZl9kZWx0
YXMuZW5kKCk7ICsraSkKICAgIHsKICAgICAgUCgidXBkYXRpbmcgZmlsZSAlczogJXMgLT4g
JXNcbiIsIAoJaS0+cGF0aCgpLmNfc3RyKCksCglpLT5pZF9vbGQuaW5uZXIoKSgpLmNfc3Ry
KCksCglpLT5pZF9uZXcuaW5uZXIoKSgpLmNfc3RyKCkpOwogICAgICAKICAgICAgLy8gc2Fu
aXR5IGNoZWNrCiAgICAgIHsKCWJhc2U2NDwgZ3ppcDxkYXRhPiA+IGR0bXA7CgloZXhlbmM8
aWQ+IGR0bXBfaWQ7CglyZWFkX2RhdGEoaS0+cGF0aCwgZHRtcCk7CgljYWxjdWxhdGVfaWRl
bnQoZHRtcCwgZHRtcF9pZCk7CglJKGR0bXBfaWQgPT0gaS0+aWRfb2xkLmlubmVyKCkpOwog
ICAgICB9CgogICAgICAvLyBvaywgcmVwbGFjZSB3aXRoIG5ldyB2ZXJzaW9uCiAgICAgIHsK
CWZpbGVfZGF0YSB0bXA7CglpZiAoYXBwLmRiLmZpbGVfdmVyc2lvbl9leGlzdHMoaS0+aWRf
bmV3KSkKCSAgYXBwLmRiLmdldF9maWxlX3ZlcnNpb24oaS0+aWRfbmV3LCB0bXApOwoJZWxz
ZSBpZiAobWVyZ2VyLnRlbXBvcmFyeV9zdG9yZS5maW5kKGktPmlkX25ldykgIT0gbWVyZ2Vy
LnRlbXBvcmFyeV9zdG9yZS5lbmQoKSkKCSAgdG1wID0gbWVyZ2VyLnRlbXBvcmFyeV9zdG9y
ZVtpLT5pZF9uZXddOwoJZWxzZQoJICBJKGZhbHNlKTsgLy8gdHJpcCBhc3NlcnQuIHRoaXMg
c2hvdWxkIGJlIGltcG9zc2libGUuCgl3cml0ZV9kYXRhKGktPnBhdGgsIHRtcC5pbm5lcigp
KTsKICAgICAgfQogICAgfQogIAogIEwoInVwZGF0ZSBzdWNjZXNzZnVsXG4iKTsKICBndWFy
ZC5jb21taXQoKTsKCiAgLy8gc21hbGwgcmFjZSBjb25kaXRpb24gaGVyZS4uLgogIC8vIG5i
OiB3ZSB3cml0ZSBvdXQgbV9jaG9zZW4sIG5vdCBtX25ldywgYmVjYXVzZSB0aGUgbWFuaWZl
c3Qtb24tZGlzawogIC8vIGlzIHRoZSBiYXNpcyBvZiB0aGUgd29ya2luZyBjb3B5LCBub3Qg
dGhlIHdvcmtpbmcgY29weSBpdHNlbGYuCiAgcHV0X21hbmlmZXN0X21hcChtX2Nob3Nlbik7
CiAgUCgidXBkYXRlZCB0byBiYXNlIHZlcnNpb24gJXNcbiIsIG1fY2hvc2VuX2lkLmlubmVy
KCkoKS5jX3N0cigpKTsKfQoKCgpDTUQoY2F0LCAidHJlZSIsICIoZmlsZXxtYW5pZmVzdCkg
PGlkPiIsICJ3cml0ZSBmaWxlIG9yIG1hbmlmZXN0IGZyb20gZGF0YWJhc2UgdG8gc3Rkb3V0
IikKewogIGlmIChhcmdzLnNpemUoKSAhPSAyKQogICAgdGhyb3cgdXNhZ2UobmFtZSk7Cgog
IHRyYW5zYWN0aW9uX2d1YXJkIGd1YXJkKGFwcC5kYik7CgogIGlmIChhcmdzWzBdID09ICJm
aWxlIikKICAgIHsKICAgICAgZmlsZV9kYXRhIGRhdDsKICAgICAgZmlsZV9pZCBpZGVudChh
cmdzWzFdKTsKCiAgICAgIE4oYXBwLmRiLmZpbGVfdmVyc2lvbl9leGlzdHMoaWRlbnQpLAoJ
KHN0cmluZygibm8gZmlsZSB2ZXJzaW9uICIpICsgaWRlbnQuaW5uZXIoKSgpICsgIiBmb3Vu
ZCBpbiBkYXRhYmFzZSIpKTsKCiAgICAgIEwoImR1bXBpbmcgZmlsZSAlc1xuIiwgaWRlbnQu
aW5uZXIoKSgpLmNfc3RyKCkpOwogICAgICBhcHAuZGIuZ2V0X2ZpbGVfdmVyc2lvbihpZGVu
dCwgZGF0KTsKICAgICAgZGF0YSB1bnBhY2tlZDsKICAgICAgdW5wYWNrKGRhdC5pbm5lcigp
LCB1bnBhY2tlZCk7CiAgICAgIGNvdXQud3JpdGUodW5wYWNrZWQoKS5kYXRhKCksIHVucGFj
a2VkKCkuc2l6ZSgpKTsKCiAgICB9CiAgZWxzZSBpZiAoYXJnc1swXSA9PSAibWFuaWZlc3Qi
KQogICAgewogICAgICBtYW5pZmVzdF9kYXRhIGRhdDsKICAgICAgbWFuaWZlc3RfaWQgaWRl
bnQoYXJnc1sxXSk7CgogICAgICBOKGFwcC5kYi5tYW5pZmVzdF92ZXJzaW9uX2V4aXN0cyhp
ZGVudCksCgkoc3RyaW5nKCJubyBmaWxlIHZlcnNpb24gIikgKyBpZGVudC5pbm5lcigpKCkg
KyAiIGZvdW5kIGluIGRhdGFiYXNlIikpOwoKICAgICAgTCgiZHVtcGluZyBtYW5pZmVzdCAl
c1xuIiwgaWRlbnQuaW5uZXIoKSgpLmNfc3RyKCkpOwogICAgICBhcHAuZGIuZ2V0X21hbmlm
ZXN0X3ZlcnNpb24oaWRlbnQsIGRhdCk7CiAgICAgIGRhdGEgdW5wYWNrZWQ7CiAgICAgIHVu
cGFjayhkYXQuaW5uZXIoKSwgdW5wYWNrZWQpOwogICAgICBjb3V0LndyaXRlKHVucGFja2Vk
KCkuZGF0YSgpLCB1bnBhY2tlZCgpLnNpemUoKSk7CiAgICB9CiAgZWxzZSAKICAgIHRocm93
IHVzYWdlKG5hbWUpOwoKICBndWFyZC5jb21taXQoKTsKfQoKCkNNRChjaGVja291dCwgInRy
ZWUiLCAiPG1hbmlmZXN0LWlkPiIsICJjaGVjayBvdXQgdHJlZSBzdGF0ZSBmcm9tIGRhdGFi
YXNlIikKewogIGlmIChhcmdzLnNpemUoKSAhPSAxKQogICAgdGhyb3cgdXNhZ2UobmFtZSk7
CgogIHRyYW5zYWN0aW9uX2d1YXJkIGd1YXJkKGFwcC5kYik7CgogIGZpbGVfZGF0YSBkYXRh
OwogIG1hbmlmZXN0X2lkIGlkZW50KGFyZ3NbMF0pOwogIG1hbmlmZXN0X21hcCBtOwoKICBO
KGFwcC5kYi5tYW5pZmVzdF92ZXJzaW9uX2V4aXN0cyhpZGVudCksCiAgICAoc3RyaW5nKCJu
byBtYW5pZmVzdCB2ZXJzaW9uICIpICsgaWRlbnQuaW5uZXIoKSgpICsgIiBmb3VuZCBpbiBk
YXRhYmFzZSIpKTsKICAKICBMKCJleHBvcnRpbmcgbWFuaWZlc3QgJXNcbiIsIGlkZW50Lmlu
bmVyKCkoKS5jX3N0cigpKTsKICBtYW5pZmVzdF9kYXRhIG1fZGF0YTsKICBhcHAuZGIuZ2V0
X21hbmlmZXN0X3ZlcnNpb24oaWRlbnQsIG1fZGF0YSk7CiAgcmVhZF9tYW5pZmVzdF9tYXAo
bV9kYXRhLCBtKTsgICAgICAKICBwdXRfbWFuaWZlc3RfbWFwKG0pOwogIAogIGZvciAobWFu
aWZlc3RfbWFwOjpjb25zdF9pdGVyYXRvciBpID0gbS5iZWdpbigpOyBpICE9IG0uZW5kKCk7
ICsraSkKICAgIHsKICAgICAgdmVjdG9yPHN0cmluZz4gYXJnczsKICAgICAgcGF0aF9pZF9w
YWlyIHBpcCgqaSk7CiAgICAgIAogICAgICBOKGFwcC5kYi5maWxlX3ZlcnNpb25fZXhpc3Rz
KHBpcC5pZGVudCgpKSwKCShzdHJpbmcoIm5vIGZpbGUgdmVyc2lvbiAiKQoJICsgcGlwLmlk
ZW50KCkuaW5uZXIoKSgpIAoJICsgIiBmb3VuZCBpbiBkYXRhYmFzZSBmb3IgIgoJICsgcGlw
LnBhdGgoKSgpLmNfc3RyKCkpKTsKICAgICAgCiAgICAgIGZpbGVfZGF0YSBkYXQ7CiAgICAg
IEwoIndyaXRpbmcgZmlsZSAlcyB0byAlc1xuIiwgCglwaXAuaWRlbnQoKS5pbm5lcigpKCku
Y19zdHIoKSwKCXBpcC5wYXRoKCkoKS5jX3N0cigpKTsKICAgICAgYXBwLmRiLmdldF9maWxl
X3ZlcnNpb24ocGlwLmlkZW50KCksIGRhdCk7CiAgICAgIHdyaXRlX2RhdGEocGlwLnBhdGgo
KSwgZGF0LmlubmVyKCkpOwogICAgfQoKICBndWFyZC5jb21taXQoKTsKfQoKQUxJQVMoY28s
IGNoZWNrb3V0LCAidHJlZSIsICI8bWFuaWZlc3QtaWQ+IiwKICAgICAgImNoZWNrIG91dCB0
cmVlIHN0YXRlIGZyb20gZGF0YWJhc2U7IGFsaWFzIGZvciBjaGVja291dCIpCgpDTUQoaGVh
ZHMsICJ0cmVlIiwgIiIsICJzaG93IHVubWVyZ2VkIGhlYWRzIG9mIGJyYW5jaCIpCnsKICB2
ZWN0b3I8bWFuaWZlc3RfaWQ+IGhlYWRzOwogIGlmIChhcmdzLnNpemUoKSAhPSAwKQogICAg
dGhyb3cgdXNhZ2UobmFtZSk7CgogIGlmIChhcHAuYnJhbmNoX25hbWUgPT0gIiIpCiAgICB7
CiAgICAgIGNvdXQgPDwgInBsZWFzZSBzcGVjaWZ5IGEgYnJhbmNoLCB3aXRoIC0tYnJhbmNo
PTxicmFuY2huYW1lPiIgPDwgZW5kbDsKICAgICAgcmV0dXJuOwogICAgfQoKICBnZXRfYnJh
bmNoX2hlYWRzKGFwcC5icmFuY2hfbmFtZSwgYXBwLCBoZWFkcyk7CgogIGlmIChoZWFkcy5z
aXplKCkgPT0gMCkKICAgIGNvdXQgPDwgImJyYW5jaCAnIiA8PCBhcHAuYnJhbmNoX25hbWUg
PDwgIicgaXMgZW1wdHkiIDw8IGVuZGw7CiAgZWxzZSBpZiAoaGVhZHMuc2l6ZSgpID09IDEp
CiAgICBjb3V0IDw8ICJicmFuY2ggJyIgPDwgYXBwLmJyYW5jaF9uYW1lIDw8ICInIGlzIGN1
cnJlbnRseSBtZXJnZWQ6IiA8PCBlbmRsOwogIGVsc2UKICAgIGNvdXQgPDwgImJyYW5jaCAn
IiA8PCBhcHAuYnJhbmNoX25hbWUgPDwgIicgaXMgY3VycmVudGx5IHVubWVyZ2VkOiIgPDwg
ZW5kbDsKCiAgZm9yICh2ZWN0b3I8bWFuaWZlc3RfaWQ+Ojpjb25zdF9pdGVyYXRvciBpID0g
aGVhZHMuYmVnaW4oKTsgCiAgICAgICBpICE9IGhlYWRzLmVuZCgpOyArK2kpCiAgICB7CiAg
ICAgIGNvdXQgPDwgaS0+aW5uZXIoKSgpIDw8IGVuZGw7CiAgICB9Cn0KCgpDTUQobWVyZ2Us
ICJ0cmVlIiwgIiIsICJtZXJnZSB1bm1lcmdlZCBoZWFkcyBvZiBicmFuY2giKQp7CgogIHZl
Y3RvcjxtYW5pZmVzdF9pZD4gaGVhZHM7CgogIGlmIChhcmdzLnNpemUoKSAhPSAwKQogICAg
dGhyb3cgdXNhZ2UobmFtZSk7CgogIGlmIChhcHAuYnJhbmNoX25hbWUgPT0gIiIpCiAgICB7
CiAgICAgIGNvdXQgPDwgInBsZWFzZSBzcGVjaWZ5IGEgYnJhbmNoLCB3aXRoIC0tYnJhbmNo
PTxicmFuY2huYW1lPiIgPDwgZW5kbDsKICAgICAgcmV0dXJuOwogICAgfQoKICBnZXRfYnJh
bmNoX2hlYWRzKGFwcC5icmFuY2hfbmFtZSwgYXBwLCBoZWFkcyk7CgogIGlmIChoZWFkcy5z
aXplKCkgPT0gMCkKICAgIHsKICAgICAgY291dCA8PCAiYnJhbmNoICIgPDwgYXJnc1swXSA8
PCAiaXMgZW1wdHkiIDw8IGVuZGw7CiAgICAgIHJldHVybjsKICAgIH0KICBlbHNlIGlmICho
ZWFkcy5zaXplKCkgPT0gMSkKICAgIHsKICAgICAgY291dCA8PCAiYnJhbmNoICIgPDwgYXJn
c1swXSA8PCAiaXMgbWVyZ2VkIiA8PCBlbmRsOwogICAgICByZXR1cm47CiAgICB9CiAgZWxz
ZQogICAgewogICAgICB2ZWN0b3I8IHBhaXI8dXJsLGdyb3VwPiA+IHRhcmdldHM7CiAgICAg
IGFwcC5sdWEuaG9va19nZXRfcG9zdF90YXJnZXRzKGFwcC5icmFuY2hfbmFtZSwgdGFyZ2V0
cyk7CgogICAgICBtYW5pZmVzdF9pZCBsZWZ0ID0gaGVhZHNbMF07CiAgICAgIG1hbmlmZXN0
X2lkIGFuY2VzdG9yOwogICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGhlYWRzLnNpemUo
KTsgKytpKQoJewoJICBtYW5pZmVzdF9pZCByaWdodCA9IGhlYWRzW2ldOwoJICBQKCJtZXJn
aW5nIHdpdGggbWFuaWZlc3QgJWQgLyAlZDogJXMgPC0+ICVzXG4iLAoJICAgIGksIGhlYWRz
LnNpemUoKSwKCSAgICBsZWZ0LmlubmVyKCkoKS5jX3N0cigpLCByaWdodC5pbm5lcigpKCku
Y19zdHIoKSk7CgoJICBtYW5pZmVzdF9pZCBtZXJnZWQ7CgkgIHRyYW5zYWN0aW9uX2d1YXJk
IGd1YXJkKGFwcC5kYik7CgkgIHRyeV9vbmVfbWVyZ2UgKGxlZnQsIHJpZ2h0LCBtZXJnZWQs
IGFwcCwgdGFyZ2V0cyk7CgkgIAkgIAoJICAvLyBtZXJnZWQgMSBlZGdlOyBub3cgd2UgY29t
bWl0IHRoaXMsIHVwZGF0ZSBtZXJnZSBzb3VyY2UgYW5kCgkgIC8vIHRyeSBuZXh0IG9uZQoK
CSAgcGFja2V0X2RiX3dyaXRlciBkYncoYXBwKTsKCSAgcXVldWVpbmdfcGFja2V0X3dyaXRl
ciBxcHcoYXBwLCB0YXJnZXRzKTsKCSAgY2VydF9tYW5pZmVzdF9pbl9icmFuY2gobWVyZ2Vk
LCBhcHAuYnJhbmNoX25hbWUsIGFwcCwgZGJ3KTsKCSAgY2VydF9tYW5pZmVzdF9pbl9icmFu
Y2gobWVyZ2VkLCBhcHAuYnJhbmNoX25hbWUsIGFwcCwgcXB3KTsKCgkgIHN0cmluZyBsb2cg
PSAibWVyZ2Ugb2YgIiArIGxlZnQuaW5uZXIoKSgpICsgIiBhbmQgIiArIHJpZ2h0LmlubmVy
KCkoKTsKCSAgY2VydF9tYW5pZmVzdF9jaGFuZ2Vsb2cobWVyZ2VkLCBsb2csIGFwcCwgZGJ3
KTsKCSAgY2VydF9tYW5pZmVzdF9jaGFuZ2Vsb2cobWVyZ2VkLCBsb2csIGFwcCwgcXB3KTsK
CSAgCgkgIGd1YXJkLmNvbW1pdCgpOwoJICBQKCJbc291cmNlXSAlc1xuW3NvdXJjZV0gJXNc
blttZXJnZWRdICVzXG4iLAoJICAgIGxlZnQuaW5uZXIoKSgpLmNfc3RyKCksCgkgICAgcmln
aHQuaW5uZXIoKSgpLmNfc3RyKCksCgkgICAgbWVyZ2VkLmlubmVyKCkoKS5jX3N0cigpKTsK
CSAgbGVmdCA9IG1lcmdlZDsKCX0KICAgIH0gIAp9CgoKQ01EKHByb3BhZ2F0ZSwgInRyZWUi
LCAiPHNyYy1icmFuY2g+IDxkc3QtYnJhbmNoPiIsIAogICAgIm1lcmdlIGZyb20gb25lIGJy
YW5jaCB0byBhbm90aGVyIGFzeW1tZXRyaWNhbGx5IikKewogIC8qICAKCiAgdGhpcyBpcyBh
IHNwZWNpYWwgbWVyZ2Ugb3BlcmF0b3IsIGJ1dCB2ZXJ5IHVzZWZ1bCBmb3IgcGVvcGxlIG1h
aW50YWluaW5nCiAgInNsaWdodGx5IGRpc3BhcmF0ZSBidXQgcmVsYXRlZCIgdHJlZXMuIGl0
IGRvZXMgYSBvbmUtd2F5IG1lcmdlOyBsZXNzCiAgcG93ZXJmdWwgdGhhbiBwdXR0aW5nIHRo
aW5ncyBpbiB0aGUgc2FtZSBicmFuY2ggYW5kIGFsc28gbW9yZSBmbGV4aWJsZS4KCiAgMS4g
Y2hlY2sgdG8gc2VlIGlmIHNyYyBhbmQgZHN0IGJyYW5jaGVzIGFyZSBtZXJnZWQsIGlmIG5v
dCBhYm9ydCwgaWYgc28KICAgICBjYWxsIGhlYWRzIE4xIGFuZCBOMiByZXNwZWN0aXZlbHku
CgogIDIuIChGSVhNRTogbm90IHlldCBwcmVzZW50KSBydW4gdGhlIGhvb2sgcHJvcGFnYXRl
ICgic3JjLWJyYW5jaCIsCiAgICAgImRzdC1icmFuY2giLCBOMSwgTjIpIHdoaWNoIGdpdmVz
IHRoZSB1c2VyIGEgY2hhbmNlIHRvIG1hc3NhZ2UgTjEgaW50bwogICAgIGEgc3RhdGUgd2hp
Y2ggaXMgbGlrZWx5IHRvICJtZXJnZSBuaWNlbHkiIHdpdGggTjIsIGVnLiBlZGl0IHBhdGhu
YW1lcywKICAgICBvbWl0IG9wdGlvbmFsIGZpbGVzIG9mIG5vIGludGVyZXN0LgoKICAzLiBk
byBhIG5vcm1hbCAyIG9yIDMtd2F5IG1lcmdlIG9uIE4xIGFuZCBOMiwgZGVwZW5kaW5nIG9u
IHRoZQogICAgIGV4aXN0ZW5jZSBvZiBjb21tb24gYW5jZXN0b3JzLgoKICA0LiBzYXZlIHRo
ZSByZXN1bHRzIGFzIHRoZSBkZWx0YSAoTjIsTSksIHRoZSBhbmNlc3RyeSBlZGdlcyAoTjEs
TSkKICAgICBhbmQgKE4yLE0pLCBhbmQgdGhlIGNlcnQgKE4yLGRzdCkuCgogIDUuIHF1ZXVl
IHRoZSByZXN1bHRpbmcgcGFja2V0cyB0byBzZW5kIHRvIHRoZSB1cmwgZm9yIGRzdC1icmFu
Y2gsIG5vdAogICAgIHNyYy1icmFuY2guCgogICovCgogIHZlY3RvcjxtYW5pZmVzdF9pZD4g
c3JjX2hlYWRzLCBkc3RfaGVhZHM7CgogIGlmIChhcmdzLnNpemUoKSAhPSAyKQogICAgdGhy
b3cgdXNhZ2UobmFtZSk7CgogIGdldF9icmFuY2hfaGVhZHMoYXJnc1swXSwgYXBwLCBzcmNf
aGVhZHMpOwogIGdldF9icmFuY2hfaGVhZHMoYXJnc1sxXSwgYXBwLCBkc3RfaGVhZHMpOwoK
ICBpZiAoc3JjX2hlYWRzLnNpemUoKSA9PSAwKQogICAgewogICAgICBjb3V0IDw8ICJicmFu
Y2ggIiA8PCBhcmdzWzBdIDw8ICJpcyBlbXB0eSIgPDwgZW5kbDsKICAgICAgcmV0dXJuOwog
ICAgfQogIGVsc2UgaWYgKHNyY19oZWFkcy5zaXplKCkgIT0gMSkKICAgIHsKICAgICAgY291
dCA8PCAiYnJhbmNoICIgPDwgYXJnc1swXSA8PCAiaXMgbm90IG1lcmdlZCIgPDwgZW5kbDsK
ICAgICAgcmV0dXJuOwogICAgfQogIGVsc2UgaWYgKGRzdF9oZWFkcy5zaXplKCkgPT0gMCkK
ICAgIHsKICAgICAgY291dCA8PCAiYnJhbmNoICIgPDwgYXJnc1sxXSA8PCAiaXMgZW1wdHki
IDw8IGVuZGw7CiAgICAgIHJldHVybjsKICAgIH0KICBlbHNlIGlmIChkc3RfaGVhZHMuc2l6
ZSgpICE9IDEpCiAgICB7CiAgICAgIGNvdXQgPDwgImJyYW5jaCAiIDw8IGFyZ3NbMV0gPDwg
ImlzIG5vdCBtZXJnZWQiIDw8IGVuZGw7CiAgICAgIHJldHVybjsKICAgIH0KICBlbHNlCiAg
ICB7CiAgICAgIHZlY3RvcjwgcGFpcjx1cmwsZ3JvdXA+ID4gdGFyZ2V0czsKICAgICAgYXBw
Lmx1YS5ob29rX2dldF9wb3N0X3RhcmdldHMoYXJnc1sxXSwgdGFyZ2V0cyk7CgogICAgICBt
YW5pZmVzdF9pZCBtZXJnZWQ7CiAgICAgIHRyYW5zYWN0aW9uX2d1YXJkIGd1YXJkKGFwcC5k
Yik7CiAgICAgIHRyeV9vbmVfbWVyZ2UgKHNyY19oZWFkc1swXSwgZHN0X2hlYWRzWzBdLCBt
ZXJnZWQsIGFwcCwgdGFyZ2V0cyk7ICAgICAgCgogICAgICBxdWV1ZWluZ19wYWNrZXRfd3Jp
dGVyIHFwdyhhcHAsIHRhcmdldHMpOwogICAgICBjZXJ0X21hbmlmZXN0X2luX2JyYW5jaCht
ZXJnZWQsIGFwcC5icmFuY2hfbmFtZSwgYXBwLCBxcHcpOwogICAgICBjZXJ0X21hbmlmZXN0
X2NoYW5nZWxvZyhtZXJnZWQsIAoJCQkgICAgICAicHJvcGFnYXRlIG9mICIgCgkJCSAgICAg
ICsgc3JjX2hlYWRzWzBdLmlubmVyKCkoKSAKCQkJICAgICAgKyAiIGFuZCAiIAoJCQkgICAg
ICArIGRzdF9oZWFkc1swXS5pbm5lcigpKCkKCQkJICAgICAgKyAiXG4iCgkJCSAgICAgICsg
ImZyb20gYnJhbmNoICIgCgkJCSAgICAgICsgYXJnc1swXSArICIgdG8gIiArIGFyZ3NbMV0g
KyAiXG4iLCAKCQkJICAgICAgYXBwLCBxcHcpOwkgIAogICAgICBndWFyZC5jb21taXQoKTsg
ICAgICAKICAgIH0KfQoKCgpDTUQoZGlmZiwgImluZm9ybWF0aXZlIiwgIiIsICJzaG93IGN1
cnJlbnQgZGlmZnMgb24gc3Rkb3V0IikKewogIG1hbmlmZXN0X21hcCBtX29sZCwgbV9uZXc7
CiAgcGF0Y2hfc2V0IHBzOwoKICB0cmFuc2FjdGlvbl9ndWFyZCBndWFyZChhcHAuZGIpOwoK
ICBnZXRfbWFuaWZlc3RfbWFwKG1fb2xkKTsKICBjYWxjdWxhdGVfbmV3X21hbmlmZXN0X21h
cChtX29sZCwgbV9uZXcpOwogIG1hbmlmZXN0c190b19wYXRjaF9zZXQobV9vbGQsIG1fbmV3
LCBhcHAsIHBzKTsKCiAgZm9yIChzZXQ8cGF0Y2hfZGVsdGE+Ojpjb25zdF9pdGVyYXRvciBp
ID0gcHMuZl9kZWx0YXMuYmVnaW4oKTsKICAgICAgIGkgIT0gcHMuZl9kZWx0YXMuZW5kKCk7
ICsraSkKICAgIHsKICAgICAgZmlsZV9kYXRhIGZfb2xkOwogICAgICBnemlwPGRhdGE+IGRl
Y29kZWRfb2xkOwogICAgICBkYXRhIGRlY29tcHJlc3NlZF9vbGQsIGRlY29tcHJlc3NlZF9u
ZXc7CiAgICAgIHZlY3RvcjxzdHJpbmc+IG9sZF9saW5lcywgbmV3X2xpbmVzOwoKICAgICAg
YXBwLmRiLmdldF9maWxlX3ZlcnNpb24oaS0+aWRfb2xkLCBmX29sZCk7CiAgICAgIGRlY29k
ZV9iYXNlNjQoZl9vbGQuaW5uZXIoKSwgZGVjb2RlZF9vbGQpOwogICAgICBkZWNvZGVfZ3pp
cChkZWNvZGVkX29sZCwgZGVjb21wcmVzc2VkX29sZCk7CgogICAgICByZWFkX2RhdGEoaS0+
cGF0aCwgZGVjb21wcmVzc2VkX25ldyk7CgogICAgICBzcGxpdF9pbnRvX2xpbmVzKGRlY29t
cHJlc3NlZF9vbGQoKSwgb2xkX2xpbmVzKTsKICAgICAgc3BsaXRfaW50b19saW5lcyhkZWNv
bXByZXNzZWRfbmV3KCksIG5ld19saW5lcyk7CgogICAgICB1bmlkaWZmKGktPnBhdGgoKSwg
aS0+cGF0aCgpLCBvbGRfbGluZXMsIG5ld19saW5lcywgY291dCk7CiAgICB9ICAKICBndWFy
ZC5jb21taXQoKTsKfQoKQ01EKHN0YXR1cywgImluZm9ybWF0aXZlIiwgIiIsICJzaG93IHN0
YXR1cyBvZiB3b3JraW5nIGNvcHkiKQp7CiAgbWFuaWZlc3RfbWFwIG1fb2xkLCBtX25ldzsK
ICBwYXRjaF9zZXQgcHM7CgogIHRyYW5zYWN0aW9uX2d1YXJkIGd1YXJkKGFwcC5kYik7CiAg
Z2V0X21hbmlmZXN0X21hcChtX29sZCk7CiAgY2FsY3VsYXRlX25ld19tYW5pZmVzdF9tYXAo
bV9vbGQsIG1fbmV3KTsKICBtYW5pZmVzdHNfdG9fcGF0Y2hfc2V0KG1fb2xkLCBtX25ldywg
YXBwLCBwcyk7CiAgcGF0Y2hfc2V0X3RvX3RleHRfc3VtbWFyeShwcywgY291dCk7CiAgZ3Vh
cmQuY29tbWl0KCk7Cn0KCgpDTUQobWRlbHRhLCAicGFja2V0IGkvbyIsICI8b2xkaWQ+IDxu
ZXdpZD4iLCAid3JpdGUgbWFuaWZlc3QgZGVsdGEgcGFja2V0IHRvIHN0ZG91dCIpCnsKICBp
ZiAoYXJncy5zaXplKCkgIT0gMikKICAgIHRocm93IHVzYWdlKG5hbWUpOwoKICB0cmFuc2Fj
dGlvbl9ndWFyZCBndWFyZChhcHAuZGIpOwogIHBhY2tldF93cml0ZXIgcHcoY291dCk7Cgog
IG1hbmlmZXN0X2lkIG1fb2xkX2lkLCBtX25ld19pZDsgCiAgbWFuaWZlc3RfZGF0YSBtX29s
ZF9kYXRhLCBtX25ld19kYXRhOwogIG1hbmlmZXN0X21hcCBtX29sZCwgbV9uZXc7CiAgcGF0
Y2hfc2V0IHBzOyAgICAgIAogIG1fb2xkX2lkID0gaGV4ZW5jPGlkPihhcmdzWzBdKTsgCiAg
bV9uZXdfaWQgPSBoZXhlbmM8aWQ+KGFyZ3NbMV0pOwogIGFwcC5kYi5nZXRfbWFuaWZlc3Rf
dmVyc2lvbihtX29sZF9pZCwgbV9vbGRfZGF0YSk7CiAgYXBwLmRiLmdldF9tYW5pZmVzdF92
ZXJzaW9uKG1fbmV3X2lkLCBtX25ld19kYXRhKTsKICByZWFkX21hbmlmZXN0X21hcChtX29s
ZF9kYXRhLCBtX29sZCk7CiAgcmVhZF9tYW5pZmVzdF9tYXAobV9uZXdfZGF0YSwgbV9uZXcp
OwogIG1hbmlmZXN0c190b19wYXRjaF9zZXQobV9vbGQsIG1fbmV3LCBhcHAsIHBzKTsKICBw
YXRjaF9zZXRfdG9fcGFja2V0cyhwcywgYXBwLCBwdyk7ICAKICBndWFyZC5jb21taXQoKTsK
fQoKQ01EKGZkZWx0YSwgInBhY2tldCBpL28iLCAiPG9sZGlkPiA8bmV3aWQ+IiwgIndyaXRl
IGZpbGUgZGVsdGEgcGFja2V0IHRvIHN0ZG91dCIpCnsKICBpZiAoYXJncy5zaXplKCkgIT0g
MikKICAgIHRocm93IHVzYWdlKG5hbWUpOwoKICB0cmFuc2FjdGlvbl9ndWFyZCBndWFyZChh
cHAuZGIpOwogIHBhY2tldF93cml0ZXIgcHcoY291dCk7CgogIGZpbGVfaWQgZl9vbGRfaWQs
IGZfbmV3X2lkOwogIGZpbGVfZGF0YSBmX29sZF9kYXRhLCBmX25ld19kYXRhOwogIGZfb2xk
X2lkID0gaGV4ZW5jPGlkPihhcmdzWzBdKTsKICBmX25ld19pZCA9IGhleGVuYzxpZD4oYXJn
c1sxXSk7ICAgICAKICBhcHAuZGIuZ2V0X2ZpbGVfdmVyc2lvbihmX29sZF9pZCwgZl9vbGRf
ZGF0YSk7CiAgYXBwLmRiLmdldF9maWxlX3ZlcnNpb24oZl9uZXdfaWQsIGZfbmV3X2RhdGEp
OwogIGJhc2U2NDwgZ3ppcDxkZWx0YT4gPiBkZWw7CiAgZGlmZihmX29sZF9kYXRhLmlubmVy
KCksIGZfbmV3X2RhdGEuaW5uZXIoKSwgZGVsKTsKICBwdy5jb25zdW1lX2ZpbGVfZGVsdGEo
Zl9vbGRfaWQsIGZfbmV3X2lkLCBmaWxlX2RlbHRhKGRlbCkpOyAgCiAgZ3VhcmQuY29tbWl0
KCk7Cn0KCkNNRChtZGF0YSwgInBhY2tldCBpL28iLCAiPGlkPiIsICJ3cml0ZSBtYW5pZmVz
dCBkYXRhIHBhY2tldCB0byBzdGRvdXQiKQp7CiAgaWYgKGFyZ3Muc2l6ZSgpICE9IDEpCiAg
ICB0aHJvdyB1c2FnZShuYW1lKTsKCiAgdHJhbnNhY3Rpb25fZ3VhcmQgZ3VhcmQoYXBwLmRi
KTsKICBwYWNrZXRfd3JpdGVyIHB3KGNvdXQpOwoKICBtYW5pZmVzdF9pZCBtX2lkOwogIG1h
bmlmZXN0X2RhdGEgbV9kYXRhOwogIG1faWQgPSBoZXhlbmM8aWQ+KGFyZ3NbMF0pOwogIGFw
cC5kYi5nZXRfbWFuaWZlc3RfdmVyc2lvbihtX2lkLCBtX2RhdGEpOwogIHB3LmNvbnN1bWVf
bWFuaWZlc3RfZGF0YShtX2lkLCBtX2RhdGEpOyAgCiAgZ3VhcmQuY29tbWl0KCk7Cn0KCgpD
TUQoZmRhdGEsICJwYWNrZXQgaS9vIiwgIjxpZD4iLCAid3JpdGUgZmlsZSBkYXRhIHBhY2tl
dCB0byBzdGRvdXQiKQp7CiAgaWYgKGFyZ3Muc2l6ZSgpICE9IDEpCiAgICB0aHJvdyB1c2Fn
ZShuYW1lKTsKCiAgdHJhbnNhY3Rpb25fZ3VhcmQgZ3VhcmQoYXBwLmRiKTsKICBwYWNrZXRf
d3JpdGVyIHB3KGNvdXQpOwoKICBmaWxlX2lkIGZfaWQ7CiAgZmlsZV9kYXRhIGZfZGF0YTsK
ICBmX2lkID0gaGV4ZW5jPGlkPihhcmdzWzBdKTsKICBhcHAuZGIuZ2V0X2ZpbGVfdmVyc2lv
bihmX2lkLCBmX2RhdGEpOwogIHB3LmNvbnN1bWVfZmlsZV9kYXRhKGZfaWQsIGZfZGF0YSk7
ICAKICBndWFyZC5jb21taXQoKTsKfQoKQ01EKG1jZXJ0cywgInBhY2tldCBpL28iLCAiPGlk
PiIsICJ3cml0ZSBtYW5pZmVzdCBjZXJ0IHBhY2tldHMgdG8gc3Rkb3V0IikKewogIGlmIChh
cmdzLnNpemUoKSAhPSAxKQogICAgdGhyb3cgdXNhZ2UobmFtZSk7CgogIHRyYW5zYWN0aW9u
X2d1YXJkIGd1YXJkKGFwcC5kYik7CiAgcGFja2V0X3dyaXRlciBwdyhjb3V0KTsKCiAgbWFu
aWZlc3RfaWQgbV9pZDsKICB2ZWN0b3I8IG1hbmlmZXN0PGNlcnQ+ID4gY2VydHM7CgogIG1f
aWQgPSBoZXhlbmM8aWQ+KGFyZ3NbMF0pOwogIGFwcC5kYi5nZXRfbWFuaWZlc3RfY2VydHMo
bV9pZCwgY2VydHMpOwogIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2VydHMuc2l6ZSgpOyAr
K2kpCiAgICBwdy5jb25zdW1lX21hbmlmZXN0X2NlcnQoY2VydHNbaV0pOwogIGd1YXJkLmNv
bW1pdCgpOwp9CgpDTUQoZmNlcnRzLCAicGFja2V0IGkvbyIsICI8aWQ+IiwgIndyaXRlIGZp
bGUgY2VydCBwYWNrZXRzIHRvIHN0ZG91dCIpCnsKICBpZiAoYXJncy5zaXplKCkgIT0gMSkK
ICAgIHRocm93IHVzYWdlKG5hbWUpOwoKICB0cmFuc2FjdGlvbl9ndWFyZCBndWFyZChhcHAu
ZGIpOwogIHBhY2tldF93cml0ZXIgcHcoY291dCk7CgogIGZpbGVfaWQgZl9pZDsKICB2ZWN0
b3I8IGZpbGU8Y2VydD4gPiBjZXJ0czsKCiAgZl9pZCA9IGhleGVuYzxpZD4oYXJnc1swXSk7
CiAgYXBwLmRiLmdldF9maWxlX2NlcnRzKGZfaWQsIGNlcnRzKTsKICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGNlcnRzLnNpemUoKTsgKytpKQogICAgcHcuY29uc3VtZV9maWxlX2NlcnQo
Y2VydHNbaV0pOwogIGd1YXJkLmNvbW1pdCgpOwp9CgpDTUQocHVia2V5LCAicGFja2V0IGkv
byIsICI8aWQ+IiwgIndyaXRlIHB1YmxpYyBrZXkgcGFja2V0IHRvIHN0ZG91dCIpCnsKICBp
ZiAoYXJncy5zaXplKCkgIT0gMSkKICAgIHRocm93IHVzYWdlKG5hbWUpOwoKICB0cmFuc2Fj
dGlvbl9ndWFyZCBndWFyZChhcHAuZGIpOwogIHBhY2tldF93cml0ZXIgcHcoY291dCk7CiAg
cnNhX2tleXBhaXJfaWQgaWRlbnQoYXJnc1swXSk7CiAgYmFzZTY0PCByc2FfcHViX2tleSA+
IGtleTsKICBhcHAuZGIuZ2V0X2tleShpZGVudCwga2V5KTsKICBwdy5jb25zdW1lX3B1Ymxp
Y19rZXkoaWRlbnQsIGtleSk7CiAgZ3VhcmQuY29tbWl0KCk7Cn0KCkNNRChwcml2a2V5LCAi
cGFja2V0IGkvbyIsICI8aWQ+IiwgIndyaXRlIHByaXZhdGUga2V5IHBhY2tldCB0byBzdGRv
dXQiKQp7CiAgaWYgKGFyZ3Muc2l6ZSgpICE9IDEpCiAgICB0aHJvdyB1c2FnZShuYW1lKTsK
CiAgdHJhbnNhY3Rpb25fZ3VhcmQgZ3VhcmQoYXBwLmRiKTsKICBwYWNrZXRfd3JpdGVyIHB3
KGNvdXQpOwogIHJzYV9rZXlwYWlyX2lkIGlkZW50KGFyZ3NbMF0pOwogIGJhc2U2NDwgYXJj
NDxyc2FfcHJpdl9rZXk+ID4ga2V5OwogIGFwcC5kYi5nZXRfa2V5KGlkZW50LCBrZXkpOwog
IHB3LmNvbnN1bWVfcHJpdmF0ZV9rZXkoaWRlbnQsIGtleSk7CiAgZ3VhcmQuY29tbWl0KCk7
Cn0KCgpDTUQocmVhZCwgInBhY2tldCBpL28iLCAiIiwgInJlYWQgcGFja2V0cyBmcm9tIHN0
ZGluIikKewogIHRyYW5zYWN0aW9uX2d1YXJkIGd1YXJkKGFwcC5kYik7CiAgcGFja2V0X2Ri
X3dyaXRlciBkYncoYXBwLCB0cnVlKTsKICBzaXplX3QgY291bnQgPSByZWFkX3BhY2tldHMo
Y2luLCBkYncpOwogIE4oY291bnQgIT0gMCwgIm5vIHBhY2tldHMgZm91bmQgb24gc3RkaW4i
KTsKICBpZiAoY291bnQgPT0gMSkKICAgIFAoInJlYWQgMSBwYWNrZXRcbiIpOwogIGVsc2UK
ICAgIFAoInJlYWQgJWQgcGFja2V0c1xuIiwgY291bnQpOwogIGd1YXJkLmNvbW1pdCgpOwp9
CgoKQ01EKGFncmFwaCwgImdyYXBoIHZpc3VhbGl6YXRpb24iLCAiIiwgImR1bXAgYW5jZXN0
cnkgZ3JhcGggdG8gc3Rkb3V0IikKewogIHZlY3RvcjwgbWFuaWZlc3Q8Y2VydD4gPiBjZXJ0
czsKICB0cmFuc2FjdGlvbl9ndWFyZCBndWFyZChhcHAuZGIpOwogIGFwcC5kYi5nZXRfbWFu
aWZlc3RfY2VydHMoYW5jZXN0b3JfY2VydF9uYW1lLCBjZXJ0cyk7CiAgc2V0PHN0cmluZz4g
bm9kZXM7CiAgdmVjdG9yPCBwYWlyPHN0cmluZywgc3RyaW5nPiA+IGVkZ2VzOwogIGZvcih2
ZWN0b3I8IG1hbmlmZXN0PGNlcnQ+ID46Oml0ZXJhdG9yIGkgPSBjZXJ0cy5iZWdpbigpOwog
ICAgICBpICE9IGNlcnRzLmVuZCgpOyArK2kpCiAgICB7CiAgICAgIGNlcnRfdmFsdWUgdHY7
CiAgICAgIGRlY29kZV9iYXNlNjQoaS0+aW5uZXIoKS52YWx1ZSwgdHYpOwogICAgICBub2Rl
cy5pbnNlcnQodHYoKSk7CiAgICAgIG5vZGVzLmluc2VydChpLT5pbm5lcigpLmlkZW50KCkp
OwogICAgICBlZGdlcy5wdXNoX2JhY2sobWFrZV9wYWlyKHR2KCksIGktPmlubmVyKCkuaWRl
bnQoKSkpOwogICAgfQogIGNvdXQgPDwgImdyYXBoOiAiIDw8IGVuZGwgPDwgInsiIDw8IGVu
ZGw7IC8vIG9wZW4gZ3JhcGgKICBmb3IgKHNldDxzdHJpbmc+OjppdGVyYXRvciBpID0gbm9k
ZXMuYmVnaW4oKTsgaSAhPSBub2Rlcy5lbmQoKTsKICAgICAgICsraSkKICAgIHsKICAgICAg
Y291dCA8PCAibm9kZTogeyB0aXRsZSA6IFwiIiA8PCAqaSA8PCAiXCJ9IiA8PCBlbmRsOwog
ICAgfQogIGZvciAodmVjdG9yPCBwYWlyPHN0cmluZyxzdHJpbmc+ID46Oml0ZXJhdG9yIGkg
PSBlZGdlcy5iZWdpbigpOyBpICE9IGVkZ2VzLmVuZCgpOwogICAgICAgKytpKQogICAgewog
ICAgICBjb3V0IDw8ICJlZGdlOiB7IHNvdXJjZW5hbWUgOiBcIiIgPDwgaS0+Zmlyc3QgPDwg
IlwiIiA8PCBlbmRsCgkgICA8PCAiICAgICAgICB0YXJnZXRuYW1lIDogXCIiIDw8IGktPnNl
Y29uZCA8PCAiXCIgfSIgPDwgZW5kbDsKICAgIH0KICBjb3V0IDw8ICJ9IiA8PCBlbmRsIDw8
IGVuZGw7IC8vIGNsb3NlIGdyYXBoCiAgZ3VhcmQuY29tbWl0KCk7Cn0KCkNNRChmZXRjaCwg
Im5ldHdvcmsiLCAiW1VSTF0gW2dyb3VwbmFtZV0iLCAiZmV0Y2ggcmVjZW50IGNoYW5nZXMg
ZnJvbSBuZXR3b3JrIikKewogIGlmIChhcmdzLnNpemUoKSA+IDIpCiAgICB0aHJvdyB1c2Fn
ZShuYW1lKTsKCiAgdmVjdG9yPCBwYWlyPHVybCxncm91cD4gPiBzb3VyY2VzOwoKICBpZiAo
YXJncy5zaXplKCkgPT0gMCkKICAgIHsKICAgICAgaWYgKGFwcC5icmFuY2hfbmFtZSA9PSAi
IikKCXsKCSAgUCgibm8gYnJhbmNoIG5hbWUgcHJvdmlkZWQsIGZldGNoaW5nIGZyb20gYWxs
IGtub3duIFVSTHNcbiIpOwoJICBhcHAuZGIuZ2V0X2FsbF9rbm93bl9zb3VyY2VzKHNvdXJj
ZXMpOwoJfQogICAgICBlbHNlCgl7CgkgIE4oYXBwLmx1YS5ob29rX2dldF9mZXRjaF9zb3Vy
Y2VzKGFwcC5icmFuY2hfbmFtZSwgc291cmNlcyksCgkgICAgKCJubyBVUkwgLyBncm91cCBw
YWlycyBmb3VuZCBmb3IgYnJhbmNoICIgKyBhcHAuYnJhbmNoX25hbWUpKTsgCgl9CiAgICB9
CiAgZWxzZQogICAgewogICAgICBOKGFyZ3Muc2l6ZSgpID09IDIsICJuZWVkIFVSTCBhbmQg
Z3JvdXBuYW1lIik7CiAgICAgIHNvdXJjZXMucHVzaF9iYWNrKG1ha2VfcGFpcih1cmwoYXJn
c1swXSksCgkJCQkgIGdyb3VwKGFyZ3NbMV0pKSk7CiAgICB9CiAgCiAgZmV0Y2hfcXVldWVk
X2Jsb2JzX2Zyb21fbmV0d29yayhzb3VyY2VzLCBhcHApOwp9CgpDTUQocG9zdCwgIm5ldHdv
cmsiLCAiW1VSTF0gW2dyb3VwbmFtZV0iLCAicG9zdCBxdWV1ZWQgY2hhbmdlcyB0byBuZXR3
b3JrIikKewogIGlmIChhcmdzLnNpemUoKSA+IDIpCiAgICB0aHJvdyB1c2FnZShuYW1lKTsK
CiAgdmVjdG9yPCBwYWlyPHVybCxncm91cD4gPiB0YXJnZXRzOwogIGlmIChhcmdzLnNpemUo
KSA9PSAwKQogICAgewogICAgICBpZiAoYXBwLmJyYW5jaF9uYW1lID09ICIiKQoJewoJICBQ
KCJubyBicmFuY2ggbmFtZSBwcm92aWRlZCwgcG9zdGluZyBhbGwgcXVldWVkIHRhcmdldHNc
biIpOwoJICBhcHAuZGIuZ2V0X3F1ZXVlZF90YXJnZXRzKHRhcmdldHMpOwoJfQogICAgICBl
bHNlCgl7CgkgIE4oYXBwLmx1YS5ob29rX2dldF9wb3N0X3RhcmdldHMoYXBwLmJyYW5jaF9u
YW1lLCB0YXJnZXRzKSwKCSAgICAoIm5vIFVSTCAvIGdyb3VwIHBhaXJzIGZvdW5kIGZvciBi
cmFuY2ggIiArIGFwcC5icmFuY2hfbmFtZSkpOyAKCX0KICAgIH0gIAogIGVsc2UKICAgIHsK
ICAgICAgTihhcmdzLnNpemUoKSA9PSAyLCAibmVlZCBVUkwgYW5kIGdyb3VwbmFtZSIpOwog
ICAgICB0YXJnZXRzLnB1c2hfYmFjayhtYWtlX3BhaXIodXJsKGFyZ3NbMF0pLAoJCQkJICBn
cm91cChhcmdzWzFdKSkpOwogICAgfQoKICBwb3N0X3F1ZXVlZF9ibG9ic190b19uZXR3b3Jr
KHRhcmdldHMsIGFwcCk7Cn0KCgpDTUQocmNzX2ltcG9ydCwgInJjcyIsICI8cmNzZmlsZT4g
Li4uIiwgImltcG9ydCBhbGwgdmVyc2lvbnMgaW4gUkNTIGZpbGVzIikKewogIGlmIChhcmdz
LnNpemUoKSA8IDEpCiAgICB0aHJvdyB1c2FnZShuYW1lKTsKICAKICB0cmFuc2FjdGlvbl9n
dWFyZCBndWFyZChhcHAuZGIpOwogIGZvciAodmVjdG9yPHN0cmluZz46OmNvbnN0X2l0ZXJh
dG9yIGkgPSBhcmdzLmJlZ2luKCk7CiAgICAgICBpICE9IGFyZ3MuZW5kKCk7ICsraSkKICAg
IHsKICAgICAgaW1wb3J0X3Jjc19maWxlKGZzOjpwYXRoKCppKSwgYXBwLmRiKTsKICAgIH0K
ICBndWFyZC5jb21taXQoKTsKfQoKCkNNRChjdnNfaW1wb3J0LCAicmNzIiwgIjxjdnNyb290
PiIsICJpbXBvcnQgYWxsIHZlcnNpb25zIGluIENWUyByZXBvc2l0b3J5IikKewogIGlmIChh
cmdzLnNpemUoKSAhPSAxKQogICAgdGhyb3cgdXNhZ2UobmFtZSk7CgogIGltcG9ydF9jdnNf
cmVwbyhmczo6cGF0aChhcmdzLmF0KDApKSwgYXBwKTsKfQoKCn07IC8vIG5hbWVzcGFjZSBj
b21tYW5kcwo=
_ATEOF


cat >secondfile.b64 <<'_ATEOF'
Ly8gY29weXJpZ2h0IChDKSAyMDAyLCAyMDAzIGdyYXlkb24gaG9hcmUgPGdyYXlkb25AcG9i
b3guY29tPgovLyBhbGwgcmlnaHRzIHJlc2VydmVkLgovLyBsaWNlbnNlZCB0byB0aGUgcHVi
bGljIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdQTCAoPj0gMikKLy8gc2VlIHRoZSBm
aWxlIENPUFlJTkcgZm9yIGRldGFpbHMKCiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxjc3Rk
aW8+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxhbGdvcml0
aG0+CiNpbmNsdWRlIDxpdGVyYXRvcj4KI2luY2x1ZGUgPGJvb3N0L2ZpbGVzeXN0ZW0vcGF0
aC5ocHA+CiNpbmNsdWRlIDxib29zdC9maWxlc3lzdGVtL29wZXJhdGlvbnMuaHBwPgojaW5j
bHVkZSA8Ym9vc3QvbGV4aWNhbF9jYXN0LmhwcD4KCiNpbmNsdWRlICJjb21tYW5kcy5oaCIK
I2luY2x1ZGUgImNvbnN0YW50cy5oaCIKCiNpbmNsdWRlICJhcHBfc3RhdGUuaGgiCiNpbmNs
dWRlICJkaWZmX3BhdGNoLmhoIgojaW5jbHVkZSAiZmlsZV9pby5oaCIKI2luY2x1ZGUgImtl
eXMuaGgiCiNpbmNsdWRlICJtYW5pZmVzdC5oaCIKI2luY2x1ZGUgIm5ldHdvcmsuaGgiCiNp
bmNsdWRlICJwYWNrZXQuaGgiCiNpbmNsdWRlICJwYXRjaF9zZXQuaGgiCiNpbmNsdWRlICJy
Y3NfaW1wb3J0LmhoIgojaW5jbHVkZSAic2FuaXR5LmhoIgojaW5jbHVkZSAiY2VydC5oaCIK
I2luY2x1ZGUgInRyYW5zZm9ybXMuaGgiCiNpbmNsdWRlICJ1cGRhdGUuaGgiCiNpbmNsdWRl
ICJ2b2NhYi5oaCIKI2luY2x1ZGUgIndvcmsuaGgiCgovLwovLyB0aGlzIGZpbGUgZGVmaW5l
cyB0aGUgdGFzay1vcmllbnRlZCAidG9wIGxldmVsIiBjb21tYW5kcyB3aGljaCBjYW4gYmUK
Ly8gaXNzdWVkIGFzIHBhcnQgb2YgYSBtb25vdG9uZSBjb21tYW5kIGxpbmUuIHRoZSBjb21t
YW5kIGxpbmUgY2FuIG9ubHkKLy8gaGF2ZSBvbmUgc3VjaCBjb21tYW5kIG9uIGl0LCBmb2xs
b3dlZCBieSBhIHZlY3RvciBvZiBzdHJpbmdzIHdoaWNoIGFyZSBpdHMKLy8gYXJndW1lbnRz
LiBhbGwgLS1vcHRpb25zIHdpbGwgYmUgcHJvY2Vzc2VkIGJ5IHRoZSBtYWluIHByb2dyYW0g
KmJlZm9yZSoKLy8gY2FsbGluZyBhIGNvbW1hbmQKLy8KLy8gd2UgbWlnaHQgZXhwb3NlIHRo
aXMgYmx1bnQgY29tbWFuZCBpbnRlcmZhY2UgdG8gc2NyaXB0aW5nIHNvbWVkYXkuIGJ1dAov
LyBub3QgdG9kYXkuCgpuYW1lc3BhY2UgY29tbWFuZHMgCnsKICBzdHJ1Y3QgY29tbWFuZDsK
ICBib29sIG9wZXJhdG9yPChjb21tYW5kIGNvbnN0ICYgc2VsZiwgY29tbWFuZCBjb25zdCAm
IG90aGVyKTsKfTsKCm5hbWVzcGFjZSBzdGQKewogIHRlbXBsYXRlIDw+CiAgc3RydWN0IHN0
ZDo6Z3JlYXRlcjxjb21tYW5kczo6Y29tbWFuZCAqPgogIHsKICAgIGJvb2wgb3BlcmF0b3Io
KShjb21tYW5kczo6Y29tbWFuZCBjb25zdCAqIGEsIGNvbW1hbmRzOjpjb21tYW5kIGNvbnN0
ICogYikKICAgIHsKICAgICAgcmV0dXJuICphIDwgKmI7CiAgICB9CiAgfTsKfTsKCm5hbWVz
cGFjZSBjb21tYW5kcyAKewp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IGNvbW1hbmQ7
IAoKc3RhdGljIG1hcDxzdHJpbmcsY29tbWFuZCAqPiBjbWRzOwoKc3RydWN0IGNvbW1hbmQg
CnsKICBzdHJpbmcgbmFtZTsKICBzdHJpbmcgY21kZ3JvdXA7CiAgc3RyaW5nIHBhcmFtczsK
ICBzdHJpbmcgZGVzYzsKICBjb21tYW5kKHN0cmluZyBjb25zdCAmIG4sCgkgIHN0cmluZyBj
b25zdCAmIGcsCgkgIHN0cmluZyBjb25zdCAmIHAsCgkgIHN0cmluZyBjb25zdCAmIGQpIDog
bmFtZShuKSwgY21kZ3JvdXAoZyksIHBhcmFtcyhwKSwgZGVzYyhkKSAKICB7IGNtZHNbbl0g
PSB0aGlzOyB9CiAgdmlydHVhbCB+Y29tbWFuZCgpIHt9CiAgdmlydHVhbCB2b2lkIGV4ZWMo
YXBwX3N0YXRlICYgYXBwLCB2ZWN0b3I8c3RyaW5nPiBjb25zdCAmIGFyZ3MpID0gMDsKfTsK
CmJvb2wgb3BlcmF0b3I8KGNvbW1hbmQgY29uc3QgJiBzZWxmLCBjb21tYW5kIGNvbnN0ICYg
b3RoZXIpCnsKICByZXR1cm4gKChzZWxmLmNtZGdyb3VwIDwgb3RoZXIuY21kZ3JvdXApCgkg
IHx8ICgoc2VsZi5jbWRncm91cCA9PSBvdGhlci5jbWRncm91cCkgJiYgKHNlbGYubmFtZSA8
IG90aGVyLm5hbWUpKSk7Cn0KCgp2b2lkIGV4cGxhaW5fdXNhZ2Uoc3RyaW5nIGNvbnN0ICYg
Y21kLCBvc3RyZWFtICYgb3V0KQp7CiAgbWFwPHN0cmluZyxjb21tYW5kICo+Ojpjb25zdF9p
dGVyYXRvciBpOwogIGkgPSBjbWRzLmZpbmQoY21kKTsKICBpZiAoaSAhPSBjbWRzLmVuZCgp
KQogICAgewogICAgICBvdXQgPDwgIiAgICAgIiA8PCBpLT5zZWNvbmQtPm5hbWUgPDwgIiAi
IDw8IGktPnNlY29uZC0+cGFyYW1zIDw8IGVuZGwKCSAgPDwgIiAgICAgIiA8PCBpLT5zZWNv
bmQtPmRlc2MgPDwgZW5kbCA8PCBlbmRsOwogICAgICByZXR1cm47CiAgICB9CgogIHZlY3Rv
cjxjb21tYW5kICo+IHNvcnRlZDsKICBvdXQgPDwgImNvbW1hbmRzOiIgPDwgZW5kbDsKICBm
b3IgKGkgPSBjbWRzLmJlZ2luKCk7IGkgIT0gY21kcy5lbmQoKTsgKytpKQogICAgewogICAg
ICBzb3J0ZWQucHVzaF9iYWNrKGktPnNlY29uZCk7CiAgICB9CiAgCiAgc29ydChzb3J0ZWQu
YmVnaW4oKSwgc29ydGVkLmVuZCgpLCBzdGQ6OmdyZWF0ZXI8Y29tbWFuZCAqPigpKTsKCiAg
c3RyaW5nIGN1cnJfZ3JvdXA7CiAgc2l6ZV90IGNvbCA9IDA7CiAgc2l6ZV90IGNvbDIgPSAw
OwogIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc29ydGVkLnNpemUoKTsgKytpKQogICAgewog
ICAgICBjb2wyID0gY29sMiA+IHNvcnRlZFtpXS0+Y21kZ3JvdXAuc2l6ZSgpID8gY29sMiA6
IHNvcnRlZFtpXS0+Y21kZ3JvdXAuc2l6ZSgpOwogICAgfQoKICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNvcnRlZC5zaXplKCk7ICsraSkKICAgIHsKICAgICAgaWYgKHNvcnRlZFtpXS0+
Y21kZ3JvdXAgIT0gY3Vycl9ncm91cCkKCXsKCSAgY3Vycl9ncm91cCA9IHNvcnRlZFtpXS0+
Y21kZ3JvdXA7CgkgIG91dCA8PCBlbmRsOwoJICBvdXQgPDwgIiAgIiA8PCBzb3J0ZWRbaV0t
PmNtZGdyb3VwOwoJICBjb2wgPSBzb3J0ZWRbaV0tPmNtZGdyb3VwLnNpemUoKSArIDI7Cgkg
IHdoaWxlIChjb2wrKyA8IChjb2wyICsgMykpCgkgICAgb3V0IDw8ICcgJzsKCX0KICAgICAg
b3V0IDw8ICIgIiA8PCBzb3J0ZWRbaV0tPm5hbWU7CiAgICAgIGNvbCArPSBzb3J0ZWRbaV0t
Pm5hbWUuc2l6ZSgpICsgMTsKICAgICAgaWYgKGNvbCA+PSA3MCkKCXsKCSAgb3V0IDw8IGVu
ZGw7CgkgIGNvbCA9IDA7CgkgIHdoaWxlIChjb2wrKyA8IChjb2wyICsgMykpCgkgICAgb3V0
IDw8ICcgJzsKCX0KICAgIH0KICBvdXQgPDwgZW5kbCA8PCBlbmRsOwp9Cgp2b2lkIHByb2Nl
c3MoYXBwX3N0YXRlICYgYXBwLCBzdHJpbmcgY29uc3QgJiBjbWQsIHZlY3RvcjxzdHJpbmc+
IGNvbnN0ICYgYXJncykKewogIGlmIChjbWRzLmZpbmQoY21kKSAhPSBjbWRzLmVuZCgpKQog
ICAgewogICAgICBMKCJleGVjdXRpbmcgJXMgY29tbWFuZFxuIiwgY21kLmNfc3RyKCkpOwog
ICAgICBjbWRzW2NtZF0tPmV4ZWMoYXBwLCBhcmdzKTsKICAgIH0KICBlbHNlCiAgICB7CiAg
ICAgIHRocm93IHVzYWdlKGNtZCk7CiAgICB9Cn0KCiNkZWZpbmUgQ01EKEMsIGdyb3VwLCBw
YXJhbXMsIGRlc2MpICAgICAgICAgICAgICAgXApzdHJ1Y3QgY21kXyAjIyBDIDogcHVibGlj
IGNvbW1hbmQgICAgICAgICAgICAgICAgIFwKeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgY21kXyAjIyBDKCkgOiBjb21tYW5kKCNDLCBn
cm91cCwgcGFyYW1zLCBkZXNjKSAgXAogIHt9ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKICB2aXJ0dWFsIHZvaWQgZXhlYyhhcHBfc3RhdGUgJiBh
cHAsICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgdmVjdG9yPHN0cmluZz4g
Y29uc3QgJiBhcmdzKTsgXAp9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKc3RhdGljIGNtZF8gIyMgQyBDICMjIF9jbWQ7ICAgICAgICAgICAg
ICAgICAgICAgICBcCnZvaWQgY21kXyAjIyBDOjpleGVjKGFwcF9zdGF0ZSAmIGFwcCwgICAg
ICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICB2ZWN0b3I8c3RyaW5nPiBjb25zdCAm
IGFyZ3MpIFwKCiNkZWZpbmUgQUxJQVMoQywgcmVhbGNvbW1hbmQsIGdyb3VwLCBwYXJhbXMs
IGRlc2MpCVwKQ01EKEMsIGdyb3VwLCBwYXJhbXMsIGRlc2MpCQkJCVwKewkJCQkJCQlcCiAg
cHJvY2VzcyhhcHAsIHN0cmluZygjcmVhbGNvbW1hbmQpLCBhcmdzKTsJCVwKfQoKCnN0YXRp
YyB2b2lkIGVuc3VyZV9ib29rZGlyKCkKewogIG1rZGlyX3AobG9jYWxfcGF0aChib29rX2tl
ZXBpbmdfZGlyKSk7Cn0KCnN0YXRpYyB2b2lkIGdldF9tYW5pZmVzdF9wYXRoKGxvY2FsX3Bh
dGggJiBtX3BhdGgpCnsKICBtX3BhdGggPSAoZnM6OnBhdGgoYm9va19rZWVwaW5nX2Rpcikg
LyBmczo6cGF0aChtYW5pZmVzdF9maWxlX25hbWUpKS5zdHJpbmcoKTsKICBMKCJtYW5pZmVz
dCBwYXRoIGlzICVzXG4iLCBtX3BhdGgoKS5jX3N0cigpKTsKfQoKc3RhdGljIHZvaWQgZ2V0
X3dvcmtfcGF0aChsb2NhbF9wYXRoICYgd19wYXRoKQp7CiAgd19wYXRoID0gKGZzOjpwYXRo
KGJvb2tfa2VlcGluZ19kaXIpIC8gZnM6OnBhdGgod29ya19maWxlX25hbWUpKS5zdHJpbmco
KTsKICBMKCJ3b3JrIHBhdGggaXMgJXNcbiIsIHdfcGF0aCgpLmNfc3RyKCkpOwp9CgpzdGF0
aWMgdm9pZCBnZXRfbWFuaWZlc3RfbWFwKG1hbmlmZXN0X21hcCAmIG0pCnsKICBlbnN1cmVf
Ym9va2RpcigpOwogIGxvY2FsX3BhdGggbV9wYXRoOwogIGJhc2U2NDwgZ3ppcDxkYXRhPiA+
IG1fZGF0YTsKICBnZXRfbWFuaWZlc3RfcGF0aChtX3BhdGgpOwogIGlmIChmaWxlX2V4aXN0
cyhtX3BhdGgpKQogICAgewogICAgICBMKCJsb2FkaW5nIG1hbmlmZXN0IGZpbGUgJXNcbiIs
IG1fcGF0aCgpLmNfc3RyKCkpOyAgICAgIAogICAgICByZWFkX2RhdGEobV9wYXRoLCBtX2Rh
dGEpOwogICAgICByZWFkX21hbmlmZXN0X21hcChtYW5pZmVzdF9kYXRhKG1fZGF0YSksIG0p
OwogICAgICBMKCJyZWFkICVkIG1hbmlmZXN0IGVudHJpZXNcbiIsIG0uc2l6ZSgpKTsKICAg
IH0KICBlbHNlCiAgICB7CiAgICAgIEwoIm5vIG1hbmlmZXN0IGZpbGUgJXNcbiIsIG1fcGF0
aCgpLmNfc3RyKCkpOwogICAgfQp9CgpzdGF0aWMgdm9pZCBwdXRfbWFuaWZlc3RfbWFwKG1h
bmlmZXN0X21hcCBjb25zdCAmIG0pCnsKICBlbnN1cmVfYm9va2RpcigpOwogIGxvY2FsX3Bh
dGggbV9wYXRoOwogIG1hbmlmZXN0X2RhdGEgbV9kYXRhOwogIGdldF9tYW5pZmVzdF9wYXRo
KG1fcGF0aCk7CiAgTCgid3JpdGluZyBtYW5pZmVzdCBmaWxlICVzXG4iLCBtX3BhdGgoKS5j
X3N0cigpKTsKICB3cml0ZV9tYW5pZmVzdF9tYXAobSwgbV9kYXRhKTsKICB3cml0ZV9kYXRh
KG1fcGF0aCwgbV9kYXRhLmlubmVyKCkpOwogIEwoIndyb3RlICVkIG1hbmlmZXN0IGVudHJp
ZXNcbiIsIG0uc2l6ZSgpKTsKfQoKc3RhdGljIHZvaWQgZ2V0X3dvcmtfc2V0KHdvcmtfc2V0
ICYgdykKewogIGVuc3VyZV9ib29rZGlyKCk7CiAgbG9jYWxfcGF0aCB3X3BhdGg7CiAgZ2V0
X3dvcmtfcGF0aCh3X3BhdGgpOwogIGlmIChmaWxlX2V4aXN0cyh3X3BhdGgpKQogICAgewog
ICAgICBMKCJjaGVja2luZyBmb3IgdW4tY29tbWl0dGVkIHdvcmsgZmlsZSAlc1xuIiwgCgl3
X3BhdGgoKS5jX3N0cigpKTsKICAgICAgZGF0YSB3X2RhdGE7CiAgICAgIHJlYWRfZGF0YSh3
X3BhdGgsIHdfZGF0YSk7CiAgICAgIHJlYWRfd29ya19zZXQod19kYXRhLCB3KTsKICAgICAg
TCgicmVhZCAlZCBkZWxzLCAlZCBhZGRzIGZyb20gJXNcbiIsIAoJdy5kZWxzLnNpemUoKSwg
dy5hZGRzLnNpemUoKSwgd19wYXRoKCkuY19zdHIoKSk7CiAgICB9CiAgZWxzZQogICAgewog
ICAgICBMKCJubyB1bi1jb21taXR0ZWQgd29yayBmaWxlICVzXG4iLCB3X3BhdGgoKS5jX3N0
cigpKTsKICAgIH0KfQoKc3RhdGljIHZvaWQgcHV0X3dvcmtfc2V0KHdvcmtfc2V0ICYgdykK
ewogIGxvY2FsX3BhdGggd19wYXRoOwogIGdldF93b3JrX3BhdGgod19wYXRoKTsKCiAgaWYg
KHcuYWRkcy5zaXplKCkgPiAwCiAgICAgIHx8IHcuZGVscy5zaXplKCkgPiAwKQogICAgewog
ICAgICBlbnN1cmVfYm9va2RpcigpOwogICAgICBkYXRhIHdfZGF0YTsKICAgICAgd3JpdGVf
d29ya19zZXQod19kYXRhLCB3KTsKICAgICAgd3JpdGVfZGF0YSh3X3BhdGgsIHdfZGF0YSk7
CiAgICB9CiAgZWxzZQogICAgewogICAgICBkZWxldGVfZmlsZSh3X3BhdGgpOwogICAgfQp9
CgpzdGF0aWMgdm9pZCBjYWxjdWxhdGVfbmV3X21hbmlmZXN0X21hcChtYW5pZmVzdF9tYXAg
Y29uc3QgJiBtX29sZCwgCgkJCQkgICAgICAgbWFuaWZlc3RfbWFwICYgbV9uZXcpCnsKICBw
YXRoX3NldCBwYXRoczsKICB3b3JrX3NldCB3b3JrOwogIGV4dHJhY3RfcGF0aF9zZXQobV9v
bGQsIHBhdGhzKTsKICBnZXRfd29ya19zZXQod29yayk7CiAgaWYgKHdvcmsuZGVscy5zaXpl
KCkgPiAwKQogICAgTCgicmVtb3ZpbmcgJWQgZGVhZCBmaWxlcyBmcm9tIG1hbmlmZXN0XG4i
LCAKICAgICAgd29yay5kZWxzLnNpemUoKSk7CiAgaWYgKHdvcmsuYWRkcy5zaXplKCkgPiAw
KQogICAgTCgiYWRkaW5nICVkIGZpbGVzIHRvIG1hbmlmZXN0XG4iLCB3b3JrLmFkZHMuc2l6
ZSgpKTsKICBhcHBseV93b3JrX3NldCh3b3JrLCBwYXRocyk7CiAgYnVpbGRfbWFuaWZlc3Rf
bWFwKHBhdGhzLCBtX25ldyk7Cn0KCnN0YXRpYyBzdHJpbmcgZ2V0X3N0ZGluKCkKewogIGNo
YXIgYnVmW2J1ZnN6XTsKICBzdHJpbmcgdG1wOwogIHdoaWxlKGNpbikKICAgIHsKICAgICAg
Y2luLnJlYWQoYnVmLCBidWZzeik7CiAgICAgIHRtcC5hcHBlbmQoYnVmLCBjaW4uZ2NvdW50
KCkpOwogICAgfQogIHJldHVybiB0bXA7Cn0KCnN0YXRpYyB2b2lkIGdldF9sb2dfbWVzc2Fn
ZShwYXRjaF9zZXQgY29uc3QgJiBwcywgCgkJCSAgICBhcHBfc3RhdGUgJiBhcHAsCgkJCSAg
ICBzdHJpbmcgJiBsb2dfbWVzc2FnZSkKewogIHN0cmluZyBjb21tZW50YXJ5OwogIHN0cmlu
ZyBzdW1tYXJ5OwogIHN0cmluZ3N0cmVhbSBzczsKICBwYXRjaF9zZXRfdG9fdGV4dF9zdW1t
YXJ5KHBzLCBzcyk7CiAgc3VtbWFyeSA9IHNzLnN0cigpOwogIGNvbW1lbnRhcnkgKz0gIi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS1cbiI7CiAgY29tbWVudGFyeSArPSAiRW50ZXIgTG9nLiAgTGluZXMg
YmVnaW5uaW5nIHdpdGggYE1UOicgYXJlIHJlbW92ZWQgYXV0b21hdGljYWxseVxuIjsKICBj
b21tZW50YXJ5ICs9ICJcbiI7CiAgY29tbWVudGFyeSArPSAiU3VtbWFyeSBvZiBjaGFuZ2Vz
OlxuIjsKICBjb21tZW50YXJ5ICs9ICJcbiI7CiAgY29tbWVudGFyeSArPSBzdW1tYXJ5Owog
IGNvbW1lbnRhcnkgKz0gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7CiAgTihhcHAubHVhLmhvb2tf
ZWRpdF9jb21tZW50KGNvbW1lbnRhcnksIGxvZ19tZXNzYWdlKSwKICAgICJlZGl0IG9mIGxv
ZyBtZXNzYWdlIGZhaWxlZCIpOwp9CgoKLy8gdGhlIGdvYWwgaGVyZSBpcyB0byBsb29rIGJh
Y2sgdGhyb3VnaCB0aGUgYW5jZXN0cnkgb2YgdGhlIHByb3ZpZGVkCi8vIGNoaWxkLCBjaGVj
a2luZyB0byBzZWUgdGhlIGxlYXN0IGFuY2VzdG9yIGl0IGhhcyB3aGljaCB3ZSByZWNlaXZl
ZCBmcm9tCi8vIHRoZSBnaXZlbiBuZXR3b3JrIHVybC9ncm91cCBwYWlyLgovLwovLyB3ZSB1
c2UgdGhlIGFuY2VzdG9yIGFzIHRoZSBzb3VyY2UgbWFuaWZlc3Qgd2hlbiBidWlsZGluZyBh
IHBhdGNoc2V0IHRvCi8vIHNlbmQgdG8gdGhhdCB1cmwvZ3JvdXAuCgpzdGF0aWMgYm9vbCBm
aW5kX2FuY2VzdG9yX29uX25ldHNlcnZlciAobWFuaWZlc3RfaWQgY29uc3QgJiBjaGlsZCwg
CgkJCQkJdXJsIGNvbnN0ICYgdSwKCQkJCQlncm91cCBjb25zdCAmIGcsIAoJCQkJCW1hbmlm
ZXN0X2lkICYgYW5jLAoJCQkJCWFwcF9zdGF0ZSAmIGFwcCkKewogIHNldDxtYW5pZmVzdF9p
ZD4gZnJvbnRpZXI7CiAgY2VydF9uYW1lIHRuKGFuY2VzdG9yX2NlcnRfbmFtZSk7CiAgZnJv
bnRpZXIuaW5zZXJ0KGNoaWxkKTsKCiAgd2hpbGUgKCFmcm9udGllci5lbXB0eSgpKQogICAg
ewogICAgICBzZXQ8bWFuaWZlc3RfaWQ+IG5leHRfZnJvbnRpZXI7CiAgICAgIGZvciAoc2V0
PG1hbmlmZXN0X2lkPjo6Y29uc3RfaXRlcmF0b3IgaSA9IGZyb250aWVyLmJlZ2luKCk7Cgkg
ICBpICE9IGZyb250aWVyLmVuZCgpOyArK2kpCgl7CgkgIHZlY3RvcjwgbWFuaWZlc3Q8Y2Vy
dD4gPiB0bXA7CgkgIGFwcC5kYi5nZXRfbWFuaWZlc3RfY2VydHMoKmksIHRuLCB0bXApOwoK
CSAgLy8gd2UgZ28gdGhyb3VnaCB0aGlzIHZlY3RvciBiYWNrd2FyZHMgYmVjYXVzZSB3ZSB3
b3VsZCBwcmVmZXIgdG8KCSAgLy8gaGl0IG1vcmUgcmVjZW50bHktcXVldWVkIGFuY2VzdG9y
cyAoc3VjaCBhcyBpbnRlcm1lZGlhdGUgbm9kZXMKCSAgLy8gaW4gYSBtdWx0aS1ub2RlIG1l
cmdlKSByYXRoZXIgdGhhbiBvbGRlciBhbmNlc3RvcnMuIGJ1dCBvZgoJICAvLyBjb3Vyc2Us
IGFueSBhbmNlc3RvciB3aWxsIGRvLgoKCSAgZm9yICh2ZWN0b3I8IG1hbmlmZXN0PGNlcnQ+
ID46OnJldmVyc2VfaXRlcmF0b3IgaiA9IHRtcC5yYmVnaW4oKTsKCSAgICAgICBqICE9IHRt
cC5yZW5kKCk7ICsraikKCSAgICB7CgkgICAgICBjZXJ0X3ZhbHVlIHR2OwoJICAgICAgZGVj
b2RlX2Jhc2U2NChqLT5pbm5lcigpLnZhbHVlLCB0dik7CgkgICAgICBtYW5pZmVzdF9pZCBh
bmNfaWQgKHR2KCkpOwoKCSAgICAgIEwoImxvb2tpbmcgZm9yIHBhcmVudCAlcyBvZiAlcyBv
biBzZXJ2ZXJcbiIsIAoJCWktPmlubmVyKCkoKS5jX3N0cigpLAoJCWFuY19pZC5pbm5lcigp
KCkuY19zdHIoKSk7CgoJICAgICAgaWYgKGFwcC5kYi5tYW5pZmVzdF9leGlzdHNfb25fbmV0
c2VydmVyICh1LCBnLCBhbmNfaWQpKQoJCXsKCQkgIEwoImZvdW5kIHBhcmVudCAlcyBvbiBz
ZXJ2ZXJcbiIsIGFuY19pZC5pbm5lcigpKCkuY19zdHIoKSk7CgkJICBhbmMgPSBhbmNfaWQ7
CgkJICByZXR1cm4gdHJ1ZTsKCQl9CgkgICAgICBlbHNlCgkJbmV4dF9mcm9udGllci5pbnNl
cnQoYW5jX2lkKTsKCSAgICB9CSAgCgl9CgogICAgICBmcm9udGllciA9IG5leHRfZnJvbnRp
ZXI7CiAgICB9CgogIHJldHVybiBmYWxzZTsKfQoKCnN0YXRpYyB2b2lkIHF1ZXVlX2VkZ2Vf
Zm9yX3RhcmdldF9hbmNlc3RvciAocGFpcjx1cmwsZ3JvdXA+IGNvbnN0ICYgdGFyZywKCQkJ
CQkgICAgbWFuaWZlc3RfaWQgY29uc3QgJiBjaGlsZF9pZCwKCQkJCQkgICAgbWFuaWZlc3Rf
bWFwIGNvbnN0ICYgY2hpbGRfbWFwLAoJCQkJCSAgICBhcHBfc3RhdGUgJiBhcHApCnsgIAog
IC8vIG5vdyBoZXJlIGlzIGFuIGludGVyZXN0aW5nIHRoaW5nOiB3ZSAqbWlnaHQqIGJlIHNl
bmRpbmcgZGF0YSB0byBhCiAgLy8gZGVwb3QsIG9yIHNvbWVvbmUgd2l0aCBpbmRldGVybWlu
YXRlIHByZS1leGlzdGluZyBzdGF0ZSAoc2F5IHRoZSBmaXJzdAogIC8vIHRpbWUgd2UgcG9z
dCB0byBuZXRuZXdzKSwgdGhlcmVmb3JlIHdlIGNhbm5vdCBqdXN0ICJzZW5kIHRoZSBlZGdl
IiB3ZQogIC8vIGp1c3QgY29uc3RydWN0ZWQgaW4gYSBtZXJnZSBvciBjb21taXQsIHdlIG5l
ZWQgdG8gc2VuZCBhbiBlZGdlIGZyb20gYQogIC8vIHBhcmVudCB3aGljaCB3ZSBrbm93IHRv
IGJlIHByZXNlbnQgaW4gdGhlIGRlcG90IChvciBlbHNlIGFuIGVkZ2UgZnJvbQogIC8vIHRo
ZSBlbXB0eSBtYXAgLS0gZnVsbCBjb250ZW50cyBvZiBhbGwgZmlsZXMpLiB3aGF0IGlzIHNl
bnQgdGhlcmVmb3JlCiAgLy8gY2hhbmdlcyBvbiBhIGRlcG90LWJ5LWRlcG90IGJhc2lzLiB0
aGlzIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgdGhlCiAgLy8gYXBwcm9wcmlhdGUgdGhpbmcgdG8g
c2VuZC4KICAvLwogIC8vIG5iOiB0aGlzIGhhcyBubyBkaXJlY3QgcmVsYXRpb24gdG8gd2hh
dCB3ZSBzdG9yZSBpbiBvdXIgb3duCiAgLy8gZGF0YWJhc2UuIHdlIGFsd2F5cyBzdG9yZSB0
aGUgZWRnZSBmcm9tIG91ciBwYXJlbnQsIGFuZCB3ZSBhbHdheXMga25vdwogIC8vIHdoZW4g
d2UgaGF2ZSBhIHBhcmVudC4KCiAgdmVjdG9yPCBwYWlyPHVybCwgZ3JvdXA+ID4gb25lX3Rh
cmdldDsKICBvbmVfdGFyZ2V0LnB1c2hfYmFjayh0YXJnKTsKICBxdWV1ZWluZ19wYWNrZXRf
d3JpdGVyIHFwdyhhcHAsIG9uZV90YXJnZXQpOwogIAogIG1hbmlmZXN0X2RhdGEgdGFyZ19h
bmNlc3Rvcl9kYXRhOwogIG1hbmlmZXN0X21hcCB0YXJnX2FuY2VzdG9yX21hcDsKICBtYW5p
ZmVzdF9pZCB0YXJnX2FuY2VzdG9yX2lkOwogIAogIGlmIChmaW5kX2FuY2VzdG9yX29uX25l
dHNlcnZlciAoY2hpbGRfaWQsIAoJCQkJICB0YXJnLmZpcnN0LCAKCQkJCSAgdGFyZy5zZWNv
bmQsIAoJCQkJICB0YXJnX2FuY2VzdG9yX2lkLCAKCQkJCSAgYXBwKSkKICAgIHsJICAgIAog
ICAgICBhcHAuZGIuZ2V0X21hbmlmZXN0X3ZlcnNpb24odGFyZ19hbmNlc3Rvcl9pZCwgdGFy
Z19hbmNlc3Rvcl9kYXRhKTsKICAgICAgcmVhZF9tYW5pZmVzdF9tYXAodGFyZ19hbmNlc3Rv
cl9kYXRhLCB0YXJnX2FuY2VzdG9yX21hcCk7CiAgICB9CgogIHBhdGNoX3NldCBwczsKICBt
YW5pZmVzdHNfdG9fcGF0Y2hfc2V0KHRhcmdfYW5jZXN0b3JfbWFwLCBjaGlsZF9tYXAsIGFw
cCwgcHMpOwogIHBhdGNoX3NldF90b19wYWNrZXRzKHBzLCBhcHAsIHFwdyk7CgogIC8vIG5v
dyB0aGF0IHdlJ3ZlIHF1ZXVlZCB0aGUgZGF0YSwgd2UgY2FuIG5vdGUgdGhpcyBuZXcgY2hp
bGQKICAvLyBub2RlIGFzIGV4aXN0aW5nICh3ZWxsIC4uIHNvb24tdG8tZXhpc3QpIG9uIHRo
ZSBzZXJ2ZXIKICBhcHAuZGIubm90ZV9tYW5pZmVzdF9vbl9uZXRzZXJ2ZXIgKHRhcmcuZmly
c3QsIHRhcmcuc2Vjb25kLCBjaGlsZF9pZCk7Cgp9CgoKLy8gdGhpcyBoZWxwZXIgdHJpZXMg
dG8gcHJvZHVjZSBtZXJnZSA8LSBtZXJnZU4obGVmdCxyaWdodCksIHBvc3NpYmx5Ci8vIG1l
cmdlMyBpZiBpdCBjYW4gZmluZCBhbiBhbmNlc3Rvciwgb3RoZXJ3aXNlIG1lcmdlMi4gaXQg
YWxzbyBxdWV1ZXMgdGhlCi8vIGFwcHJvcHJpYXRlIGVkZ2VzIGZyb20ga25vd24gYW5jZXN0
b3JzIHRvIHRoZSBuZXcgbWVyZ2Ugbm9kZSwgdG8gYmUKLy8gdHJhbnNtaXR0ZWQgdG8gZWFj
aCBvZiB0aGUgdGFyZ2V0cyBwcm92aWRlZC4KCnN0YXRpYyB2b2lkIHRyeV9vbmVfbWVyZ2Uo
bWFuaWZlc3RfaWQgY29uc3QgJiBsZWZ0LAoJCQkgIG1hbmlmZXN0X2lkIGNvbnN0ICYgcmln
aHQsCgkJCSAgbWFuaWZlc3RfaWQgJiBtZXJnZWQsCgkJCSAgYXBwX3N0YXRlICYgYXBwLCAK
CQkJICB2ZWN0b3I8IHBhaXI8dXJsLGdyb3VwPiA+IGNvbnN0ICYgdGFyZ2V0cykKewogIG1h
bmlmZXN0X2RhdGEgbGVmdF9kYXRhLCByaWdodF9kYXRhLCBhbmNlc3Rvcl9kYXRhLCBtZXJn
ZWRfZGF0YTsKICBtYW5pZmVzdF9tYXAgbGVmdF9tYXAsIHJpZ2h0X21hcCwgYW5jZXN0b3Jf
bWFwLCBtZXJnZWRfbWFwOwogIG1hbmlmZXN0X2lkIGFuY2VzdG9yOwoKICBhcHAuZGIuZ2V0
X21hbmlmZXN0X3ZlcnNpb24obGVmdCwgbGVmdF9kYXRhKTsKICBhcHAuZGIuZ2V0X21hbmlm
ZXN0X3ZlcnNpb24ocmlnaHQsIHJpZ2h0X2RhdGEpOwogIHJlYWRfbWFuaWZlc3RfbWFwKGxl
ZnRfZGF0YSwgbGVmdF9tYXApOwogIHJlYWRfbWFuaWZlc3RfbWFwKHJpZ2h0X2RhdGEsIHJp
Z2h0X21hcCk7CiAgCiAgc2ltcGxlX21lcmdlX3Byb3ZpZGVyIG1lcmdlcihhcHApOwogIAog
IGlmKGZpbmRfY29tbW9uX2FuY2VzdG9yKGxlZnQsIHJpZ2h0LCBhbmNlc3RvciwgYXBwKSkJ
ICAgIAogICAgewogICAgICBQKCJjb21tb24gYW5jZXN0b3IgJXMgZm91bmQsIHRyeWluZyBt
ZXJnZTNcbiIsIGFuY2VzdG9yLmlubmVyKCkoKS5jX3N0cigpKTsgCiAgICAgIGFwcC5kYi5n
ZXRfbWFuaWZlc3RfdmVyc2lvbihhbmNlc3RvciwgYW5jZXN0b3JfZGF0YSk7CiAgICAgIHJl
YWRfbWFuaWZlc3RfbWFwKGFuY2VzdG9yX2RhdGEsIGFuY2VzdG9yX21hcCk7CiAgICAgIE4o
bWVyZ2UzKGFuY2VzdG9yX21hcCwgbGVmdF9tYXAsIHJpZ2h0X21hcCwgCgkgICAgICAgYXBw
LCBtZXJnZXIsIG1lcmdlZF9tYXApLAoJKHN0cmluZygiZmFpbGVkIHRvIG1lcmdlIG1hbmlm
ZXN0cyAiKQoJICsgbGVmdC5pbm5lcigpKCkgKyAiIGFuZCAiICsgcmlnaHQuaW5uZXIoKSgp
KSk7CSAgICAgIAogICAgfQogIGVsc2UKICAgIHsKICAgICAgUCgibm8gY29tbW9uIGFuY2Vz
dG9yIGZvdW5kLCB0cnlpbmcgbWVyZ2UyXG4iKTsgCiAgICAgIE4obWVyZ2UyKGxlZnRfbWFw
LCByaWdodF9tYXAsIGFwcCwgbWVyZ2VyLCBtZXJnZWRfbWFwKSwKCShzdHJpbmcoImZhaWxl
ZCB0byBtZXJnZSBtYW5pZmVzdHMgIikKCSArIGxlZnQuaW5uZXIoKSgpICsgIiBhbmQgIiAr
IHJpZ2h0LmlubmVyKCkoKSkpOwkgICAgICAKICAgIH0KICAKICB3cml0ZV9tYW5pZmVzdF9t
YXAobWVyZ2VkX21hcCwgbWVyZ2VkX2RhdGEpOwogIGNhbGN1bGF0ZV9tYW5pZmVzdF9tYXBf
aWRlbnQobWVyZ2VkX21hcCwgbWVyZ2VkKTsJICAKICAKICBiYXNlNjQ8IGd6aXA8ZGVsdGE+
ID4gbGVmdF9lZGdlOwogIGRpZmYobGVmdF9kYXRhLmlubmVyKCksIG1lcmdlZF9kYXRhLmlu
bmVyKCksIGxlZnRfZWRnZSk7CgogIC8vIEZJWE1FOiB3ZSBkbyAqbm90KiBtYW51ZmFjdHVy
ZSBvciBzdG9yZSB0aGUgc2Vjb25kIGVkZ2UgdG8KICAvLyB0aGUgbWVyZ2VkIHZlcnNpb24s
IHNpbmNlIGRvaW5nIHNvIHZpb2xhdGVzIHRoZQogIC8vIGFzc3VtcHRpb25zIG9mIHRoZSBk
YiwgYW5kIHRoZSAncmlnaHQnIHZlcnNpb24gYWxyZWFkeQogIC8vIGV4aXN0cyBpbiBpdHMg
ZW50aXJldHksIGFueXdheXMuIHRoaXMgaXMgYSBzdWJ0bGUgaXNzdWUKICAvLyB0aG91Z2gg
YW5kIEknbSBub3Qgc3VyZSBJJ20gbWFraW5nIHRoZSByaWdodAogIC8vIGRlY2lzaW9uLiBy
ZXZpc2l0LiBpZiB5b3UgZG8gbm90IHNlZSB0aGF0IGl0IGlzIGEgc3VidGxlCiAgLy8gaXNz
dWUgSSBzdWdnZXN0IHlvdSBhcmUgbm90IHRoaW5raW5nIGFib3V0IGl0IGxvbmcgZW5vdWdo
LgogIC8vCiAgLy8gYmFzZTY0PCBnemlwPGRlbHRhPiA+IHJpZ2h0X2VkZ2U7CiAgLy8gZGlm
ZihyaWdodF9kYXRhLmlubmVyKCksIG1lcmdlZF9kYXRhLmlubmVyKCksIHJpZ2h0X2VkZ2Up
OwogIC8vIGFwcC5kYi5wdXRfbWFuaWZlc3RfdmVyc2lvbihyaWdodCwgbWVyZ2VkLCByaWdo
dF9lZGdlKTsKICAKICAKICAvLyB3ZSBkbyBvZiBjb3Vyc2UgcmVjb3JkIHRoZSBsZWZ0IGVk
Z2UsIGFuZCBhbmNlc3RyeSByZWxhdGlvbnNoaXAgdG8KICAvLyBib3RoIHByZWRlY2Vzc29y
cy4KCiAgewogICAgcGFja2V0X2RiX3dyaXRlciBkYncoYXBwKTsgICAgCgogICAgZGJ3LmNv
bnN1bWVfbWFuaWZlc3RfZGVsdGEobGVmdCwgbWVyZ2VkLCBsZWZ0X2VkZ2UpOyAgCiAgICBj
ZXJ0X21hbmlmZXN0X2FuY2VzdG9yKGxlZnQsIG1lcmdlZCwgYXBwLCBkYncpOwogICAgY2Vy
dF9tYW5pZmVzdF9hbmNlc3RvcihyaWdodCwgbWVyZ2VkLCBhcHAsIGRidyk7CiAgICBjZXJ0
X21hbmlmZXN0X2RhdGVfbm93KG1lcmdlZCwgYXBwLCBkYncpOwogICAgY2VydF9tYW5pZmVz
dF9hdXRob3JfZGVmYXVsdChtZXJnZWQsIGFwcCwgZGJ3KTsKICAgIAogICAgLy8gbWFrZSBz
dXJlIHRoZSBhcHByb3ByaWF0ZSBlZGdlcyBnZXQgcXVldWVkIGZvciB0aGUgbmV0d29yay4K
ICAgIGZvciAodmVjdG9yPCBwYWlyPHVybCxncm91cD4gPjo6Y29uc3RfaXRlcmF0b3IgdGFy
ZyA9IHRhcmdldHMuYmVnaW4oKTsKCSB0YXJnICE9IHRhcmdldHMuZW5kKCk7ICsrdGFyZykK
ICAgICAgewoJcXVldWVfZWRnZV9mb3JfdGFyZ2V0X2FuY2VzdG9yICgqdGFyZywgbWVyZ2Vk
LCBtZXJnZWRfbWFwLCBhcHApOwogICAgICB9CiAgICAKICAgIHF1ZXVlaW5nX3BhY2tldF93
cml0ZXIgcXB3KGFwcCwgdGFyZ2V0cyk7CiAgICBjZXJ0X21hbmlmZXN0X2FuY2VzdG9yKGxl
ZnQsIG1lcmdlZCwgYXBwLCBxcHcpOwogICAgY2VydF9tYW5pZmVzdF9hbmNlc3RvcihyaWdo
dCwgbWVyZ2VkLCBhcHAsIHFwdyk7CiAgICBjZXJ0X21hbmlmZXN0X2RhdGVfbm93KG1lcmdl
ZCwgYXBwLCBxcHcpOwogICAgY2VydF9tYW5pZmVzdF9hdXRob3JfZGVmYXVsdChtZXJnZWQs
IGFwcCwgcXB3KTsKICB9Cgp9CQkJICAKCgovLyBhY3R1YWwgY29tbWFuZHMgZm9sbG93CgpD
TUQobHNjZXJ0cywgImtleSBhbmQgY2VydCIsICIoZmlsZXxtYW5pZmVzdCkgPGlkPiIsIAog
ICAgImxpc3QgY2VydHMgYXNzb2NpYXRlZCB3aXRoIG1hbmlmZXN0IG9yIGZpbGUiKQp7CiAg
aWYgKGFyZ3Muc2l6ZSgpICE9IDIpCiAgICB0aHJvdyB1c2FnZShuYW1lKTsKCiAgdmVjdG9y
PGNlcnQ+IGNlcnRzOwoKICB0cmFuc2FjdGlvbl9ndWFyZCBndWFyZChhcHAuZGIpOwoKICBp
ZiAoYXJnc1swXSA9PSAibWFuaWZlc3QiKQogICAgewogICAgICBtYW5pZmVzdF9pZCBpZGVu
dChhcmdzWzFdKTsKICAgICAgdmVjdG9yPCBtYW5pZmVzdDxjZXJ0PiA+IHRzOwogICAgICBh
cHAuZGIuZ2V0X21hbmlmZXN0X2NlcnRzKGlkZW50LCB0cyk7CiAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgdHMuc2l6ZSgpOyArK2kpCgljZXJ0cy5wdXNoX2JhY2sodHNbaV0uaW5u
ZXIoKSk7CiAgICB9CiAgZWxzZSBpZiAoYXJnc1swXSA9PSAiZmlsZSIpCiAgICB7CiAgICAg
IGZpbGVfaWQgaWRlbnQoYXJnc1sxXSk7CiAgICAgIHZlY3RvcjwgZmlsZTxjZXJ0PiA+IHRz
OwogICAgICBhcHAuZGIuZ2V0X2ZpbGVfY2VydHMoaWRlbnQsIHRzKTsKICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB0cy5zaXplKCk7ICsraSkKCWNlcnRzLnB1c2hfYmFjayh0c1tp
XS5pbm5lcigpKTsKICAgIH0KICBlbHNlCiAgICB0aHJvdyB1c2FnZShuYW1lKTsKCQogIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY2VydHMuc2l6ZSgpOyArK2kpCiAgICB7CiAgICAgIGJv
b2wgb2sgPSBjaGVja19jZXJ0KGFwcCwgY2VydHNbaV0pOwogICAgICBjZXJ0X3ZhbHVlIHR2
OyAgICAgIAogICAgICBkZWNvZGVfYmFzZTY0KGNlcnRzW2ldLnZhbHVlLCB0dik7CiAgICAg
IHN0cmluZyB3YXNoZWQ7CiAgICAgIGlmIChndWVzc19iaW5hcnkodHYoKSkpCgl7CgkgIHdh
c2hlZCA9ICI8YmluYXJ5IGRhdGE+IjsKCX0KICAgICAgZWxzZQoJewoJICB3YXNoZWQgPSB0
digpOwoJfQogICAgICBzdHJpbmcgaGVhZCA9IHN0cmluZyhvayA/ICJvayBzaWcgZnJvbSAi
IDogImJhZCBzaWcgZnJvbSAiKQoJKyAiWyIgKyBjZXJ0c1tpXS5rZXkoKSArICJdIDogIiAK
CSsgIlsiICsgY2VydHNbaV0ubmFtZSgpICsgIl0gPSBbIjsKICAgICAgc3RyaW5nIHBhZCho
ZWFkLnNpemUoKSwgJyAnKTsKICAgICAgdmVjdG9yPHN0cmluZz4gbGluZXM7CiAgICAgIHNw
bGl0X2ludG9fbGluZXMod2FzaGVkLCBsaW5lcyk7CiAgICAgIEkobGluZXMuc2l6ZSgpID4g
MCk7CiAgICAgIGNvdXQgPDwgaGVhZCA8PCBsaW5lc1swXSA7CiAgICAgIGZvciAoc2l6ZV90
IGkgPSAxOyBpIDwgbGluZXMuc2l6ZSgpOyArK2kpCgljb3V0IDw8IGVuZGwgPDwgcGFkIDw8
IGxpbmVzW2ldOwogICAgICBjb3V0IDw8ICJdIiA8PCBlbmRsOwogICAgfSAgCiAgZ3VhcmQu
Y29tbWl0KCk7Cn0KCkNNRChsc2tleXMsICJrZXkgYW5kIGNlcnQiLCAiW3BhcnRpYWwtaWRd
IiwgImxpc3Qga2V5cyIpCnsKICB2ZWN0b3I8cnNhX2tleXBhaXJfaWQ+IHB1YmtleXM7CiAg
dmVjdG9yPHJzYV9rZXlwYWlyX2lkPiBwcml2a2V5czsKCiAgdHJhbnNhY3Rpb25fZ3VhcmQg
Z3VhcmQoYXBwLmRiKTsKCiAgaWYgKGFyZ3Muc2l6ZSgpID09IDApCiAgICBhcHAuZGIuZ2V0
X2tleV9pZHMoIiIsIHB1YmtleXMsIHByaXZrZXlzKTsKICBlbHNlIGlmIChhcmdzLnNpemUo
KSA9PSAxKQogICAgYXBwLmRiLmdldF9rZXlfaWRzKGFyZ3NbMF0sIHB1YmtleXMsIHByaXZr
ZXlzKTsKICBlbHNlCiAgICB0aHJvdyB1c2FnZShuYW1lKTsKICAKICBpZiAocHVia2V5cy5z
aXplKCkgPiAwKQogICAgewogICAgICBjb3V0IDw8IGVuZGwgPDwgIltwdWJsaWMga2V5c10i
IDw8IGVuZGw7CiAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHVia2V5cy5zaXplKCk7
ICsraSkKCWNvdXQgPDwgcHVia2V5c1tpXSgpIDw8IGVuZGw7CiAgICAgIGNvdXQgPDwgZW5k
bDsKICAgIH0KCiAgaWYgKHByaXZrZXlzLnNpemUoKSA+IDApCiAgICB7CiAgICAgIGNvdXQg
PDwgZW5kbCA8PCAiW3ByaXZhdGUga2V5c10iIDw8IGVuZGw7CiAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcHJpdmtleXMuc2l6ZSgpOyArK2kpCgljb3V0IDw8IHByaXZrZXlzW2ld
KCkgPDwgZW5kbDsKICAgICAgY291dCA8PCBlbmRsOwogICAgfQoKICBndWFyZC5jb21taXQo
KTsKfQoKQ01EKGdlbmtleSwgImtleSBhbmQgY2VydCIsICI8a2V5aWQ+IiwgImdlbmVyYXRl
IGFuIFJTQSBrZXktcGFpciIpCnsKICBpZiAoYXJncy5zaXplKCkgIT0gMSkKICAgIHRocm93
IHVzYWdlKG5hbWUpOwogIAogIHRyYW5zYWN0aW9uX2d1YXJkIGd1YXJkKGFwcC5kYik7CiAg
cnNhX2tleXBhaXJfaWQgaWRlbnQoYXJnc1swXSk7CgogIE4oISBhcHAuZGIua2V5X2V4aXN0
cyhpZGVudCksCiAgICAoc3RyaW5nKCJrZXkgJyIpICsgaWRlbnQoKSArICInIGFscmVhZHkg
ZXhpc3RzIGluIGRhdGFiYXNlIikpOwogIAogIGJhc2U2NDxyc2FfcHViX2tleT4gcHViOwog
IGJhc2U2NDwgYXJjNDxyc2FfcHJpdl9rZXk+ID4gcHJpdjsKICBQKCJnZW5lcmF0aW5nIGtl
eS1wYWlyICclcydcbiIsIGlkZW50KCkuY19zdHIoKSk7CiAgZ2VuZXJhdGVfa2V5X3BhaXIo
YXBwLmx1YSwgaWRlbnQsIHB1YiwgcHJpdik7CiAgUCgic3RvcmluZyBrZXktcGFpciAnJXMn
IGluIGRhdGFiYXNlXG4iLCBpZGVudCgpLmNfc3RyKCkpOwogIGFwcC5kYi5wdXRfa2V5X3Bh
aXIoaWRlbnQsIHB1YiwgcHJpdik7CgogIGd1YXJkLmNvbW1pdCgpOwp9CgpDTUQoY2VydCwg
ImtleSBhbmQgY2VydCIsICIoZmlsZXxtYW5pZmVzdCkgPGlkPiA8Y2VydG5hbWU+IFtjZXJ0
dmFsXSIsIAogICAgICAgICAgICAgICAgICAgICAgICAiY3JlYXRlIGEgY2VydCBmb3IgYSBm
aWxlIG9yIG1hbmlmZXN0IikKewogIGlmICgoYXJncy5zaXplKCkgIT0gNCkgJiYgKGFyZ3Mu
c2l6ZSgpICE9IDMpKQogICAgdGhyb3cgdXNhZ2UobmFtZSk7CgogIHRyYW5zYWN0aW9uX2d1
YXJkIGd1YXJkKGFwcC5kYik7CgogIGhleGVuYzxpZD4gaWRlbnQoYXJnc1sxXSk7CiAgY2Vy
dF9uYW1lIG5hbWUoYXJnc1syXSk7CgogIHJzYV9rZXlwYWlyX2lkIGtleTsKICBpZiAoYXBw
LnNpZ25pbmdfa2V5KCkgIT0gIiIpCiAgICBrZXkgPSBhcHAuc2lnbmluZ19rZXk7CiAgZWxz
ZQogICAgTihndWVzc19kZWZhdWx0X2tleShrZXksIGFwcCksCiAgICAgICJubyB1bmlxdWUg
cHJpdmF0ZSBrZXkgZm91bmQsIGFuZCBubyBrZXkgc3BlY2lmaWVkIik7CiAgCiAgY2VydF92
YWx1ZSB2YWw7CiAgaWYgKGFyZ3Muc2l6ZSgpID09IDQpCiAgICB2YWwgPSBjZXJ0X3ZhbHVl
KGFyZ3NbM10pOwogIGVsc2UKICAgIHZhbCA9IGNlcnRfdmFsdWUoZ2V0X3N0ZGluKCkpOwoK
ICBiYXNlNjQ8Y2VydF92YWx1ZT4gdmFsX2VuY29kZWQ7CiAgZW5jb2RlX2Jhc2U2NCh2YWws
IHZhbF9lbmNvZGVkKTsKCiAgY2VydCB0KGlkZW50LCBuYW1lLCB2YWxfZW5jb2RlZCwga2V5
KTsKICAKICAvLyBuYjogd2Ugd2FudCB0byB0aHJvdyB1c2FnZSBvbiBtaXMtdXNlICpiZWZv
cmUqIGFza2luZyBmb3IgYQogIC8vIHBhc3NwaHJhc2UuCgogIGlmIChhcmdzWzBdID09ICJm
aWxlIikKICAgIHsKICAgICAgY2FsY3VsYXRlX2NlcnQoYXBwLCB0KTsKICAgICAgYXBwLmRi
LnB1dF9maWxlX2NlcnQoZmlsZTxjZXJ0Pih0KSk7CiAgICB9CiAgZWxzZSBpZiAoYXJnc1sw
XSA9PSAibWFuaWZlc3QiKQogICAgewogICAgICBjYWxjdWxhdGVfY2VydChhcHAsIHQpOwog
ICAgICBhcHAuZGIucHV0X21hbmlmZXN0X2NlcnQobWFuaWZlc3Q8Y2VydD4odCkpOwogICAg
fQogIGVsc2UKICAgIHRocm93IHVzYWdlKHRoaXMtPm5hbWUpOwoKICBndWFyZC5jb21taXQo
KTsKfQoKCkNNRCh0YWcsICJjZXJ0aWZpY2F0ZSIsICI8aWQ+IDx0YWduYW1lPiIsIAogICAg
InB1dCBhIHN5bWJvbGljIHRhZyBjZXJ0IG9uIGEgbWFuaWZlc3QgdmVyc2lvbiIpCnsKICBp
ZiAoYXJncy5zaXplKCkgIT0gMikKICAgIHRocm93IHVzYWdlKG5hbWUpOwogIG1hbmlmZXN0
X2lkIG0oYXJnc1swXSk7CiAgcGFja2V0X2RiX3dyaXRlciBkYncoYXBwKTsKICBjZXJ0X21h
bmlmZXN0X3RhZyhtLCBhcmdzWzFdLCBhcHAsIGRidyk7Cn0KCkNNRChhcHByb3ZlLCAiY2Vy
dGlmaWNhdGUiLCAiKGZpbGV8bWFuaWZlc3QpIDxpZD4iLCAKICAgICJhcHByb3ZlIG9mIGEg
bWFuaWZlc3Qgb3IgZmlsZSB2ZXJzaW9uIikKewogIGlmIChhcmdzLnNpemUoKSAhPSAyKQog
ICAgdGhyb3cgdXNhZ2UobmFtZSk7CiAgaWYgKGFyZ3NbMF0gPT0gIm1hbmlmZXN0IikKICAg
IHsKICAgICAgbWFuaWZlc3RfaWQgbShhcmdzWzFdKTsKICAgICAgcGFja2V0X2RiX3dyaXRl
ciBkYncoYXBwKTsKICAgICAgY2VydF9tYW5pZmVzdF9hcHByb3ZhbChtLCB0cnVlLCBhcHAs
IGRidyk7CiAgICB9CiAgZWxzZSBpZiAoYXJnc1swXSA9PSAiZmlsZSIpCiAgICB7CiAgICAg
IHBhY2tldF9kYl93cml0ZXIgZGJ3KGFwcCk7CiAgICAgIGZpbGVfaWQgZihhcmdzWzFdKTsK
ICAgICAgY2VydF9maWxlX2FwcHJvdmFsKGYsIHRydWUsIGFwcCwgZGJ3KTsKICAgIH0KICBl
bHNlCiAgICB0aHJvdyB1c2FnZShuYW1lKTsKfQoKQ01EKGRpc2FwcHJvdmUsICJjZXJ0aWZp
Y2F0ZSIsICIoZmlsZXxtYW5pZmVzdCkgPGlkPiIsIAogICAgImRpc2FwcHJvdmUgb2YgYSBt
YW5pZmVzdCBvciBmaWxlIHZlcnNpb24iKQp7CiAgaWYgKGFyZ3Muc2l6ZSgpICE9IDIpCiAg
ICB0aHJvdyB1c2FnZShuYW1lKTsKICBpZiAoYXJnc1swXSA9PSAibWFuaWZlc3QiKQogICAg
ewogICAgICBtYW5pZmVzdF9pZCBtKGFyZ3NbMV0pOwogICAgICBwYWNrZXRfZGJfd3JpdGVy
IGRidyhhcHApOwogICAgICBjZXJ0X21hbmlmZXN0X2FwcHJvdmFsKG0sIGZhbHNlLCBhcHAs
IGRidyk7CiAgICB9CiAgZWxzZSBpZiAoYXJnc1swXSA9PSAiZmlsZSIpCiAgICB7CiAgICAg
IGZpbGVfaWQgZihhcmdzWzFdKTsKICAgICAgcGFja2V0X2RiX3dyaXRlciBkYncoYXBwKTsK
ICAgICAgY2VydF9maWxlX2FwcHJvdmFsKGYsIGZhbHNlLCBhcHAsIGRidyk7CiAgICB9CiAg
ZWxzZQogICAgdGhyb3cgdXNhZ2UobmFtZSk7Cn0KCgpDTUQoY29tbWVudCwgImNlcnRpZmlj
YXRlIiwgIihmaWxlfG1hbmlmZXN0KSA8aWQ+IFtjb21tZW50XSIsIAogICAgImNvbW1lbnQg
b24gYSBmaWxlIG9yIG1hbmlmZXN0IHZlcnNpb24iKQp7CiAgaWYgKGFyZ3Muc2l6ZSgpICE9
IDIgJiYgYXJncy5zaXplKCkgIT0gMykKICAgIHRocm93IHVzYWdlKG5hbWUpOwoKICBzdHJp
bmcgY29tbWVudDsKICBpZiAoYXJncy5zaXplKCkgPT0gMykKICAgIGNvbW1lbnQgPSBhcmdz
WzJdOwogIGVsc2UKICAgIE4oYXBwLmx1YS5ob29rX2VkaXRfY29tbWVudCgiIiwgY29tbWVu
dCksICJlZGl0IGNvbW1lbnQgZmFpbGVkIik7CiAgCiAgTihjb21tZW50LmZpbmRfZmlyc3Rf
bm90X29mKCIgXHJcdFxuIikgPT0gc3RyaW5nOjpucG9zLCAiZW1wdHkgY29tbWVudCIpOwoK
ICBpZiAoYXJnc1swXSA9PSAiZmlsZSIpCiAgICB7CiAgICAgIHBhY2tldF9kYl93cml0ZXIg
ZGJ3KGFwcCk7CiAgICAgIGNlcnRfZmlsZV9jb21tZW50KGZpbGVfaWQoYXJnc1sxXSksIGNv
bW1lbnQsIGFwcCwgZGJ3KTsgCiAgICB9CiAgZWxzZSBpZiAoYXJnc1swXSA9PSAibWFuaWZl
c3QiKQogICAgewogICAgICBwYWNrZXRfZGJfd3JpdGVyIGRidyhhcHApOwogICAgICBjZXJ0
X21hbmlmZXN0X2NvbW1lbnQobWFuaWZlc3RfaWQoYXJnc1sxXSksIGNvbW1lbnQsIGFwcCwg
ZGJ3KTsKICAgIH0KICBlbHNlCiAgICB0aHJvdyB1c2FnZShuYW1lKTsKfQoKCgpDTUQoYWRk
LCAid29ya2luZyBjb3B5IiwgIjxwYXRobmFtZT4gWy4uLl0iLCAiYWRkIGZpbGVzIHRvIHdv
cmtpbmcgY29weSIpCnsKICBpZiAoYXJncy5zaXplKCkgPCAxKQogICAgdGhyb3cgdXNhZ2Uo
bmFtZSk7CgogIHRyYW5zYWN0aW9uX2d1YXJkIGd1YXJkKGFwcC5kYik7CgogIG1hbmlmZXN0
X21hcCBtYW47CiAgd29ya19zZXQgd29yazsgIAogIGdldF9tYW5pZmVzdF9tYXAobWFuKTsK
ICBnZXRfd29ya19zZXQod29yayk7CiAgYm9vbCByZXdyaXRlX3dvcmsgPSBmYWxzZTsKCiAg
Zm9yICh2ZWN0b3I8c3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaSA9IGFyZ3MuYmVnaW4oKTsg
aSAhPSBhcmdzLmVuZCgpOyArK2kpCiAgICBidWlsZF9hZGRpdGlvbihmaWxlX3BhdGgoKmkp
LCBhcHAsIHdvcmssIG1hbiwgcmV3cml0ZV93b3JrKTsKICAKICBndWFyZC5jb21taXQoKTsK
ICAKICAvLyBzbWFsbCByYWNlIGhlcmUKICBpZiAocmV3cml0ZV93b3JrKQogICAgcHV0X3dv
cmtfc2V0KHdvcmspOwp9CgpDTUQoZHJvcCwgIndvcmtpbmcgY29weSIsICI8cGF0aG5hbWU+
IFsuLi5dIiwgImRyb3AgZmlsZXMgZnJvbSB3b3JraW5nIGNvcHkiKQp7CiAgaWYgKGFyZ3Mu
c2l6ZSgpIDwgMSkKICAgIHRocm93IHVzYWdlKG5hbWUpOwoKICBtYW5pZmVzdF9tYXAgbWFu
OwogIHdvcmtfc2V0IHdvcms7CiAgZ2V0X21hbmlmZXN0X21hcChtYW4pOwogIGdldF93b3Jr
X3NldCh3b3JrKTsKICBib29sIHJld3JpdGVfd29yayA9IGZhbHNlOwoKICB0cmFuc2FjdGlv
bl9ndWFyZCBndWFyZChhcHAuZGIpOwoKICBmb3IgKHZlY3RvcjxzdHJpbmc+Ojpjb25zdF9p
dGVyYXRvciBpID0gYXJncy5iZWdpbigpOyBpICE9IGFyZ3MuZW5kKCk7ICsraSkKICAgIGJ1
aWxkX2RlbGV0aW9uKGZpbGVfcGF0aCgqaSksIGFwcCwgd29yaywgbWFuLCByZXdyaXRlX3dv
cmspOwogIAogIGd1YXJkLmNvbW1pdCgpOwoKICAvLyBzbWFsbCByYWNlIGhlcmUKICBpZiAo
cmV3cml0ZV93b3JrKQogICAgcHV0X3dvcmtfc2V0KHdvcmspOwp9CgpDTUQoY29tbWl0LCAi
d29ya2luZyBjb3B5IiwgIltsb2cgbWVzc2FnZV0iLCAiY29tbWl0IHdvcmtpbmcgY29weSB0
byBkYXRhYmFzZSIpCnsKICBzdHJpbmcgbG9nX21lc3NhZ2UoIiIpOwogIG1hbmlmZXN0X21h
cCBtX29sZCwgbV9uZXc7CiAgcGF0Y2hfc2V0IHBzOwoKICBnZXRfbWFuaWZlc3RfbWFwKG1f
b2xkKTsKICBjYWxjdWxhdGVfbmV3X21hbmlmZXN0X21hcChtX29sZCwgbV9uZXcpOwogIG1h
bmlmZXN0X2lkIG9sZF9pZCwgbmV3X2lkOwogIGNhbGN1bGF0ZV9tYW5pZmVzdF9tYXBfaWRl
bnQobV9vbGQsIG9sZF9pZCk7CiAgY2FsY3VsYXRlX21hbmlmZXN0X21hcF9pZGVudChtX25l
dywgbmV3X2lkKTsKCiAgaWYgKGFyZ3Muc2l6ZSgpICE9IDAgJiYgYXJncy5zaXplKCkgIT0g
MSkKICAgIHRocm93IHVzYWdlKG5hbWUpOwogIAogIGNlcnRfdmFsdWUgYnJhbmNobmFtZTsK
ICBpZiAoYXBwLmJyYW5jaF9uYW1lICE9ICIiKQogICAgewogICAgICBicmFuY2huYW1lID0g
YXBwLmJyYW5jaF9uYW1lOwogICAgfQogIGVsc2UKICAgIHsKICAgICAgdmVjdG9yPCBtYW5p
ZmVzdDxjZXJ0PiA+IGNlcnRzOwogICAgICBjZXJ0X25hbWUgYnJhbmNoKGJyYW5jaF9jZXJ0
X25hbWUpOwogICAgICBhcHAuZGIuZ2V0X21hbmlmZXN0X2NlcnRzKG9sZF9pZCwgYnJhbmNo
LCBjZXJ0cyk7CgogICAgICBOKGNlcnRzLnNpemUoKSAhPSAwLCAKCXN0cmluZygibm8gYnJh
bmNoIGNlcnRzIGZvdW5kIGZvciBvbGQgbWFuaWZlc3QgIikKCSsgb2xkX2lkLmlubmVyKCko
KSArICIsIHBsZWFzZSBwcm92aWRlIGEgYnJhbmNoIG5hbWUiKTsKCiAgICAgIE4oY2VydHMu
c2l6ZSgpID09IDEsCglzdHJpbmcoIm11bHRpcGxlIGJyYW5jaCBjZXJ0cyBmb3VuZCBmb3Ig
b2xkIG1hbmlmZXN0ICIpCgkrIG9sZF9pZC5pbm5lcigpKCkgKyAiLCBwbGVhc2UgcHJvdmlk
ZSBhIGJyYW5jaCBuYW1lIik7CgogICAgICBkZWNvZGVfYmFzZTY0KGNlcnRzWzBdLmlubmVy
KCkudmFsdWUsIGJyYW5jaG5hbWUpOwogICAgfQogICAgCiAgTCgiY29tbWl0dGluZyAlcyB0
byBicmFuY2ggJXNcbiIsIAogICAgbmV3X2lkLmlubmVyKCkoKS5jX3N0cigpLCBicmFuY2hu
YW1lKCkuY19zdHIoKSk7CiAgYXBwLmJyYW5jaF9uYW1lID0gYnJhbmNobmFtZSgpOwoKICBt
YW5pZmVzdHNfdG9fcGF0Y2hfc2V0KG1fb2xkLCBtX25ldywgYXBwLCBwcyk7CgogIC8vIGdl
dCBsb2cgbWVzc2FnZQogIGlmIChhcmdzLnNpemUoKSA9PSAxKQogICAgbG9nX21lc3NhZ2Ug
PSBhcmdzWzBdOwogIGVsc2UKICAgIGdldF9sb2dfbWVzc2FnZShwcywgYXBwLCBsb2dfbWVz
c2FnZSk7CgogIE4obG9nX21lc3NhZ2UuZmluZF9maXJzdF9ub3Rfb2YoIiBcclx0XG4iKSAh
PSBzdHJpbmc6Om5wb3MsCiAgICAiZW1wdHkgbG9nIG1lc3NhZ2UiKTsKCiAgewogICAgdHJh
bnNhY3Rpb25fZ3VhcmQgZ3VhcmQoYXBwLmRiKTsKCiAgICAvLyBwcm9jZXNzIG1hbmlmZXN0
IGRlbHRhIG9yIG5ldyBtYW5pZmVzdAogICAgaWYgKGFwcC5kYi5tYW5pZmVzdF92ZXJzaW9u
X2V4aXN0cyhwcy5tX25ldykpCiAgICAgIHsKCUwoInNraXBwaW5nIG1hbmlmZXN0ICVzLCBh
bHJlYWR5IGluIGRhdGFiYXNlXG4iLCBwcy5tX25ldy5pbm5lcigpKCkuY19zdHIoKSk7CiAg
ICAgIH0KICAgIGVsc2UKICAgICAgewoJaWYgKGFwcC5kYi5tYW5pZmVzdF92ZXJzaW9uX2V4
aXN0cyhwcy5tX29sZCkpCgkgIHsKCSAgICBMKCJpbnNlcnRpbmcgbWFuaWZlc3QgZGVsdGEg
JXMgLT4gJXNcbiIsIAoJICAgICAgcHMubV9vbGQuaW5uZXIoKSgpLmNfc3RyKCksIHBzLm1f
bmV3LmlubmVyKCkoKS5jX3N0cigpKTsKCSAgICBtYW5pZmVzdF9kYXRhIG1fb2xkX2RhdGEs
IG1fbmV3X2RhdGE7CgkgICAgYXBwLmRiLmdldF9tYW5pZmVzdF92ZXJzaW9uKHBzLm1fb2xk
LCBtX29sZF9kYXRhKTsKCSAgICB3cml0ZV9tYW5pZmVzdF9tYXAobV9uZXcsIG1fbmV3X2Rh
dGEpOwoJICAgIGJhc2U2NDwgZ3ppcDxkZWx0YT4gPiBkZWw7CgkgICAgZGlmZihtX29sZF9k
YXRhLmlubmVyKCksIG1fbmV3X2RhdGEuaW5uZXIoKSwgZGVsKTsKCSAgICBhcHAuZGIucHV0
X21hbmlmZXN0X3ZlcnNpb24ocHMubV9vbGQsIHBzLm1fbmV3LCBtYW5pZmVzdF9kZWx0YShk
ZWwpKTsKCSAgfQoJZWxzZQoJICB7CgkgICAgTCgiaW5zZXJ0aW5nIGZ1bGwgbWFuaWZlc3Qg
JXNcbiIsIAoJICAgICAgcHMubV9uZXcuaW5uZXIoKSgpLmNfc3RyKCkpOwoJICAgIG1hbmlm
ZXN0X2RhdGEgbV9uZXdfZGF0YTsKCSAgICB3cml0ZV9tYW5pZmVzdF9tYXAobV9uZXcsIG1f
bmV3X2RhdGEpOwoJICAgIGFwcC5kYi5wdXRfbWFuaWZlc3QocHMubV9uZXcsIG1fbmV3X2Rh
dGEpOwoJICB9CiAgICAgIH0KCiAgICAvLyBwcm9jZXNzIGZpbGUgZGVsdGFzCiAgICBmb3Ig
KHNldDxwYXRjaF9kZWx0YT46OmNvbnN0X2l0ZXJhdG9yIGkgPSBwcy5mX2RlbHRhcy5iZWdp
bigpOwoJIGkgIT0gcHMuZl9kZWx0YXMuZW5kKCk7ICsraSkKICAgICAgewoJaWYgKGFwcC5k
Yi5maWxlX3ZlcnNpb25fZXhpc3RzKGktPmlkX25ldykpCgkgIHsKCSAgICBMKCJza2lwcGlu
ZyBmaWxlIGRlbHRhICVzLCBhbHJlYWR5IGluIGRhdGFiYXNlXG4iLCBpLT5pZF9uZXcuaW5u
ZXIoKSgpLmNfc3RyKCkpOwoJICB9CgllbHNlCgkgIHsKCSAgICBpZiAoYXBwLmRiLmZpbGVf
dmVyc2lvbl9leGlzdHMoaS0+aWRfb2xkKSkKCSAgICAgIHsKCQlMKCJpbnNlcnRpbmcgZGVs
dGEgJXMgLT4gJXNcbiIsIAoJCSAgaS0+aWRfb2xkLmlubmVyKCkoKS5jX3N0cigpLCBpLT5p
ZF9uZXcuaW5uZXIoKSgpLmNfc3RyKCkpOwoJCWZpbGVfZGF0YSBvbGRfZGF0YTsKCQliYXNl
NjQ8IGd6aXA8ZGF0YT4gPiBuZXdfZGF0YTsKCQlhcHAuZGIuZ2V0X2ZpbGVfdmVyc2lvbihp
LT5pZF9vbGQsIG9sZF9kYXRhKTsKCQlyZWFkX2RhdGEoaS0+cGF0aCwgbmV3X2RhdGEpOwoJ
CWJhc2U2NDwgZ3ppcDxkZWx0YT4gPiBkZWw7CgkJZGlmZihvbGRfZGF0YS5pbm5lcigpLCBu
ZXdfZGF0YSwgZGVsKTsKCQlhcHAuZGIucHV0X2ZpbGVfdmVyc2lvbihpLT5pZF9vbGQsIGkt
PmlkX25ldywgZmlsZV9kZWx0YShkZWwpKTsKCSAgICAgIH0KCSAgICBlbHNlCgkgICAgICB7
CgkJTCgiaW5zZXJ0aW5nIGZ1bGwgdmVyc2lvbiAlc1xuIiwgaS0+aWRfb2xkLmlubmVyKCko
KS5jX3N0cigpKTsKCQliYXNlNjQ8IGd6aXA8ZGF0YT4gPiBuZXdfZGF0YTsKCQlyZWFkX2Rh
dGEoaS0+cGF0aCwgbmV3X2RhdGEpOwoJCS8vIHNhbml0eSBjaGVjawoJCWhleGVuYzxpZD4g
dGlkOwoJCWNhbGN1bGF0ZV9pZGVudChuZXdfZGF0YSwgdGlkKTsKCQlJKHRpZCA9PSBpLT5p
ZF9uZXcuaW5uZXIoKSk7CgkJYXBwLmRiLnB1dF9maWxlKGktPmlkX25ldywgZmlsZV9kYXRh
KG5ld19kYXRhKSk7CgkgICAgICB9CgkgIH0KICAgICAgfQogIAogICAgLy8gcHJvY2VzcyBm
aWxlIGFkZHMKICAgIGZvciAoc2V0PHBhdGNoX2FkZGl0aW9uPjo6Y29uc3RfaXRlcmF0b3Ig
aSA9IHBzLmZfYWRkcy5iZWdpbigpOwoJIGkgIT0gcHMuZl9hZGRzLmVuZCgpOyArK2kpCiAg
ICAgIHsKCWlmIChhcHAuZGIuZmlsZV92ZXJzaW9uX2V4aXN0cyhpLT5pZGVudCkpCgkgIHsK
CSAgICBMKCJza2lwcGluZyBmaWxlICVzICVzLCBhbHJlYWR5IGluIGRhdGFiYXNlXG4iLCAK
CSAgICAgIGktPnBhdGgoKS5jX3N0cigpLCBpLT5pZGVudC5pbm5lcigpKCkuY19zdHIoKSk7
CgkgIH0KCWVsc2UKCSAgewoJICAgIC8vIGl0J3MgYSBuZXcgZmlsZQoJICAgIEwoImluc2Vy
dGluZyBuZXcgZmlsZSAlcyAlc1xuIiwgCgkgICAgICBpLT5wYXRoKCkuY19zdHIoKSwgaS0+
aWRlbnQuaW5uZXIoKSgpLmNfc3RyKCkpOwoJICAgIGJhc2U2NDwgZ3ppcDxkYXRhPiA+IG5l
d19kYXRhOwoJICAgIHJlYWRfZGF0YShpLT5wYXRoLCBuZXdfZGF0YSk7CgkgICAgYXBwLmRi
LnB1dF9maWxlKGktPmlkZW50LCBuZXdfZGF0YSk7CgkgIH0KICAgICAgfQoKICAgIHBhY2tl
dF9kYl93cml0ZXIgZGJ3KGFwcCk7CgogICAgaWYgKCEgbV9vbGQuZW1wdHkoKSkKICAgICAg
Y2VydF9tYW5pZmVzdF9hbmNlc3Rvcihwcy5tX29sZCwgcHMubV9uZXcsIGFwcCwgZGJ3KTsK
CiAgICBjZXJ0X21hbmlmZXN0X2luX2JyYW5jaChwcy5tX25ldywgYnJhbmNobmFtZSwgYXBw
LCBkYncpOyAKICAgIGNlcnRfbWFuaWZlc3RfZGF0ZV9ub3cocHMubV9uZXcsIGFwcCwgZGJ3
KTsKICAgIGNlcnRfbWFuaWZlc3RfYXV0aG9yX2RlZmF1bHQocHMubV9uZXcsIGFwcCwgZGJ3
KTsKICAgIGNlcnRfbWFuaWZlc3RfY2hhbmdlbG9nKHBzLm1fbmV3LCBsb2dfbWVzc2FnZSwg
YXBwLCBkYncpOwoKICAgIC8vIGNvbW1pdCBkb25lLCBub3cgcXVldWUgZGlmZiBmb3Igc2Vu
ZGluZwoKICAgIGlmIChhcHAuZGIubWFuaWZlc3RfdmVyc2lvbl9leGlzdHMocHMubV9uZXcp
KQogICAgICB7Cgl2ZWN0b3I8IHBhaXI8dXJsLGdyb3VwPiA+IHRhcmdldHM7CglhcHAubHVh
Lmhvb2tfZ2V0X3Bvc3RfdGFyZ2V0cyhicmFuY2huYW1lLCB0YXJnZXRzKTsKCQoJLy8gbWFr
ZSBzdXJlIHRoZSBhcHByb3ByaWF0ZSBlZGdlcyBnZXQgcXVldWVkIGZvciB0aGUgbmV0d29y
ay4KCWZvciAodmVjdG9yPCBwYWlyPHVybCxncm91cD4gPjo6Y29uc3RfaXRlcmF0b3IgdGFy
ZyA9IHRhcmdldHMuYmVnaW4oKTsKCSAgICAgdGFyZyAhPSB0YXJnZXRzLmVuZCgpOyArK3Rh
cmcpCgkgIHsKCSAgICBxdWV1ZV9lZGdlX2Zvcl90YXJnZXRfYW5jZXN0b3IgKCp0YXJnLCBw
cy5tX25ldywgbV9uZXcsIGFwcCk7CgkgIH0KCQoJLy8gdGhyb3cgaW4gYWxsIGF2YWlsYWJs
ZSBjZXJ0cyBmb3IgZ29vZCBtZWFzdXJlCglxdWV1ZWluZ19wYWNrZXRfd3JpdGVyIHFwdyhh
cHAsIHRhcmdldHMpOwoJdmVjdG9yPCBtYW5pZmVzdDxjZXJ0PiA+IGNlcnRzOwoJYXBwLmRi
LmdldF9tYW5pZmVzdF9jZXJ0cyhwcy5tX25ldywgY2VydHMpOwoJZm9yKHZlY3RvcjwgbWFu
aWZlc3Q8Y2VydD4gPjo6Y29uc3RfaXRlcmF0b3IgaSA9IGNlcnRzLmJlZ2luKCk7CgkgICAg
aSAhPSBjZXJ0cy5lbmQoKTsgKytpKQoJICBxcHcuY29uc3VtZV9tYW5pZmVzdF9jZXJ0KCpp
KTsKICAgICAgfSAKICAgIAogICAgZ3VhcmQuY29tbWl0KCk7CiAgfQogIC8vIHNtYWxsIHJh
Y2UgY29uZGl0aW9uIGhlcmUuLi4KICBsb2NhbF9wYXRoIHdfcGF0aDsKICBnZXRfd29ya19w
YXRoKHdfcGF0aCk7CiAgZGVsZXRlX2ZpbGUod19wYXRoKTsKICBwdXRfbWFuaWZlc3RfbWFw
KG1fbmV3KTsKICBQKCJjb21taXR0ZWQgJXNcbiIsIHBzLm1fbmV3LmlubmVyKCkoKS5jX3N0
cigpKTsKfQoKQ01EKHVwZGF0ZSwgIndvcmtpbmcgY29weSIsICJbc29ydCBrZXlzLi4uXSIs
ICJ1cGRhdGUgd29ya2luZyBjb3B5LCByZWxhdGl2ZSB0byBzb3J0aW5nIGtleXMiKQp7Cgog
IG1hbmlmZXN0X2RhdGEgbV9jaG9zZW5fZGF0YTsKICBtYW5pZmVzdF9tYXAgbV9vbGQsIG1f
d29ya2luZywgbV9jaG9zZW4sIG1fbmV3OwogIG1hbmlmZXN0X2lkIG1fb2xkX2lkLCBtX2No
b3Nlbl9pZDsKCiAgdHJhbnNhY3Rpb25fZ3VhcmQgZ3VhcmQoYXBwLmRiKTsKCiAgZ2V0X21h
bmlmZXN0X21hcChtX29sZCk7CiAgY2FsY3VsYXRlX21hbmlmZXN0X21hcF9pZGVudChtX29s
ZCwgbV9vbGRfaWQpOwogIGNhbGN1bGF0ZV9uZXdfbWFuaWZlc3RfbWFwKG1fb2xkLCBtX3dv
cmtpbmcpOwogIAogIHBpY2tfdXBkYXRlX3RhcmdldChtX29sZF9pZCwgYXJncywgYXBwLCBt
X2Nob3Nlbl9pZCk7CiAgUCgic2VsZWN0ZWQgdXBkYXRlIHRhcmdldCAlc1xuIiwKICAgIG1f
Y2hvc2VuX2lkLmlubmVyKCkoKS5jX3N0cigpKTsKICBhcHAuZGIuZ2V0X21hbmlmZXN0X3Zl
cnNpb24obV9jaG9zZW5faWQsIG1fY2hvc2VuX2RhdGEpOwogIHJlYWRfbWFuaWZlc3RfbWFw
KG1fY2hvc2VuX2RhdGEsIG1fY2hvc2VuKTsKCiAgdXBkYXRlX21lcmdlX3Byb3ZpZGVyIG1l
cmdlcihhcHApOwogIE4obWVyZ2UzKG1fb2xkLCBtX2Nob3NlbiwgbV93b3JraW5nLCBhcHAs
IG1lcmdlciwgbV9uZXcpLAogICAgc3RyaW5nKCJtYW5pZmVzdCBtZXJnZSBmYWlsZWQsIG5v
IHVwZGF0ZSBwZXJmb3JtZWQiKSk7CgogIFAoImNhbGN1bGF0aW5nIHBhdGNoc2V0IGZvciB1
cGRhdGVcbiIpOwogIHBhdGNoX3NldCBwczsKICBtYW5pZmVzdHNfdG9fcGF0Y2hfc2V0KG1f
d29ya2luZywgbV9uZXcsIGFwcCwgcHMpOwoKICBMKCJhcHBseWluZyAlZCBkZWxldGlvbnMg
dG8gZmlsZXMgaW4gdHJlZVxuIiwgcHMuZl9kZWxzLnNpemUoKSk7CiAgZm9yIChzZXQ8Zmls
ZV9wYXRoPjo6Y29uc3RfaXRlcmF0b3IgaSA9IHBzLmZfZGVscy5iZWdpbigpOwogICAgICAg
aSAhPSBwcy5mX2RlbHMuZW5kKCk7ICsraSkKICAgIHsKICAgICAgTCgiZGVsZXRpbmcgJXNc
biIsICgqaSkoKS5jX3N0cigpKTsKICAgICAgZGVsZXRlX2ZpbGUoKmkpOwogICAgfQoKICBM
KCJhcHBseWluZyAlZCBtb3ZlcyB0byBmaWxlcyBpbiB0cmVlXG4iLCBwcy5mX21vdmVzLnNp
emUoKSk7CiAgZm9yIChzZXQ8cGF0Y2hfbW92ZT46OmNvbnN0X2l0ZXJhdG9yIGkgPSBwcy5m
X21vdmVzLmJlZ2luKCk7CiAgICAgICBpICE9IHBzLmZfbW92ZXMuZW5kKCk7ICsraSkKICAg
IHsKICAgICAgTCgibW92aW5nICVzIC0+ICVzXG4iLCBpLT5wYXRoX29sZCgpLmNfc3RyKCks
IGktPnBhdGhfbmV3KCkuY19zdHIoKSk7CiAgICAgIG1vdmVfZmlsZShpLT5wYXRoX29sZCwg
aS0+cGF0aF9uZXcpOwogICAgfQogIAogIEwoImFwcGx5aW5nICVkIGFkZGl0aW9ucyB0byB0
cmVlXG4iLCBwcy5mX2FkZHMuc2l6ZSgpKTsKICBmb3IgKHNldDxwYXRjaF9hZGRpdGlvbj46
OmNvbnN0X2l0ZXJhdG9yIGkgPSBwcy5mX2FkZHMuYmVnaW4oKTsKICAgICAgIGkgIT0gcHMu
Zl9hZGRzLmVuZCgpOyArK2kpCiAgICB7CiAgICAgIEwoImFkZGluZyAlcyBhcyAlc1xuIiwg
aS0+aWRlbnQuaW5uZXIoKSgpLmNfc3RyKCksIGktPnBhdGgoKS5jX3N0cigpKTsKICAgICAg
ZmlsZV9kYXRhIHRtcDsKICAgICAgaWYgKGFwcC5kYi5maWxlX3ZlcnNpb25fZXhpc3RzKGkt
PmlkZW50KSkKCWFwcC5kYi5nZXRfZmlsZV92ZXJzaW9uKGktPmlkZW50LCB0bXApOwogICAg
ICBlbHNlIGlmIChtZXJnZXIudGVtcG9yYXJ5X3N0b3JlLmZpbmQoaS0+aWRlbnQpICE9IG1l
cmdlci50ZW1wb3Jhcnlfc3RvcmUuZW5kKCkpCgl0bXAgPSBtZXJnZXIudGVtcG9yYXJ5X3N0
b3JlW2ktPmlkZW50XTsKICAgICAgZWxzZQoJSShmYWxzZSk7IC8vIHRyaXAgYXNzZXJ0LiB0
aGlzIHNob3VsZCBiZSBpbXBvc3NpYmxlLgogICAgICB3cml0ZV9kYXRhKGktPnBhdGgsIHRt
cC5pbm5lcigpKTsKICAgIH0KCiAgTCgiYXBwbHlpbmcgJWQgZGVsdGFzIHRvIHRyZWVcbiIs
IHBzLmZfZGVsdGFzLnNpemUoKSk7CiAgZm9yIChzZXQ8cGF0Y2hfZGVsdGE+Ojpjb25zdF9p
dGVyYXRvciBpID0gcHMuZl9kZWx0YXMuYmVnaW4oKTsKICAgICAgIGkgIT0gcHMuZl9kZWx0
YXMuZW5kKCk7ICsraSkKICAgIHsKICAgICAgUCgidXBkYXRpbmcgZmlsZSAlczogJXMgLT4g
JXNcbiIsIAoJaS0+cGF0aCgpLmNfc3RyKCksCglpLT5pZF9vbGQuaW5uZXIoKSgpLmNfc3Ry
KCksCglpLT5pZF9uZXcuaW5uZXIoKSgpLmNfc3RyKCkpOwogICAgICAKICAgICAgLy8gc2Fu
aXR5IGNoZWNrCiAgICAgIHsKCWJhc2U2NDwgZ3ppcDxkYXRhPiA+IGR0bXA7CgloZXhlbmM8
aWQ+IGR0bXBfaWQ7CglyZWFkX2RhdGEoaS0+cGF0aCwgZHRtcCk7CgljYWxjdWxhdGVfaWRl
bnQoZHRtcCwgZHRtcF9pZCk7CglJKGR0bXBfaWQgPT0gaS0+aWRfb2xkLmlubmVyKCkpOwog
ICAgICB9CgogICAgICAvLyBvaywgcmVwbGFjZSB3aXRoIG5ldyB2ZXJzaW9uCiAgICAgIHsK
CWZpbGVfZGF0YSB0bXA7CglpZiAoYXBwLmRiLmZpbGVfdmVyc2lvbl9leGlzdHMoaS0+aWRf
bmV3KSkKCSAgYXBwLmRiLmdldF9maWxlX3ZlcnNpb24oaS0+aWRfbmV3LCB0bXApOwoJZWxz
ZSBpZiAobWVyZ2VyLnRlbXBvcmFyeV9zdG9yZS5maW5kKGktPmlkX25ldykgIT0gbWVyZ2Vy
LnRlbXBvcmFyeV9zdG9yZS5lbmQoKSkKCSAgdG1wID0gbWVyZ2VyLnRlbXBvcmFyeV9zdG9y
ZVtpLT5pZF9uZXddOwoJZWxzZQoJICBJKGZhbHNlKTsgLy8gdHJpcCBhc3NlcnQuIHRoaXMg
c2hvdWxkIGJlIGltcG9zc2libGUuCgl3cml0ZV9kYXRhKGktPnBhdGgsIHRtcC5pbm5lcigp
KTsKICAgICAgfQogICAgfQogIAogIEwoInVwZGF0ZSBzdWNjZXNzZnVsXG4iKTsKICBndWFy
ZC5jb21taXQoKTsKCiAgLy8gc21hbGwgcmFjZSBjb25kaXRpb24gaGVyZS4uLgogIC8vIG5i
OiB3ZSB3cml0ZSBvdXQgbV9jaG9zZW4sIG5vdCBtX25ldywgYmVjYXVzZSB0aGUgbWFuaWZl
c3Qtb24tZGlzawogIC8vIGlzIHRoZSBiYXNpcyBvZiB0aGUgd29ya2luZyBjb3B5LCBub3Qg
dGhlIHdvcmtpbmcgY29weSBpdHNlbGYuCiAgcHV0X21hbmlmZXN0X21hcChtX2Nob3Nlbik7
CiAgUCgidXBkYXRlZCB0byBiYXNlIHZlcnNpb24gJXNcbiIsIG1fY2hvc2VuX2lkLmlubmVy
KCkoKS5jX3N0cigpKTsKfQoKCgpDTUQoY2F0LCAidHJlZSIsICIoZmlsZXxtYW5pZmVzdCkg
PGlkPiIsICJ3cml0ZSBmaWxlIG9yIG1hbmlmZXN0IGZyb20gZGF0YWJhc2UgdG8gc3Rkb3V0
IikKewogIGlmIChhcmdzLnNpemUoKSAhPSAyKQogICAgdGhyb3cgdXNhZ2UobmFtZSk7Cgog
IHRyYW5zYWN0aW9uX2d1YXJkIGd1YXJkKGFwcC5kYik7CgogIGlmIChhcmdzWzBdID09ICJm
aWxlIikKICAgIHsKICAgICAgZmlsZV9kYXRhIGRhdDsKICAgICAgZmlsZV9pZCBpZGVudChh
cmdzWzFdKTsKCiAgICAgIE4oYXBwLmRiLmZpbGVfdmVyc2lvbl9leGlzdHMoaWRlbnQpLAoJ
KHN0cmluZygibm8gZmlsZSB2ZXJzaW9uICIpICsgaWRlbnQuaW5uZXIoKSgpICsgIiBmb3Vu
ZCBpbiBkYXRhYmFzZSIpKTsKCiAgICAgIEwoImR1bXBpbmcgZmlsZSAlc1xuIiwgaWRlbnQu
aW5uZXIoKSgpLmNfc3RyKCkpOwogICAgICBhcHAuZGIuZ2V0X2ZpbGVfdmVyc2lvbihpZGVu
dCwgZGF0KTsKICAgICAgZGF0YSB1bnBhY2tlZDsKICAgICAgdW5wYWNrKGRhdC5pbm5lcigp
LCB1bnBhY2tlZCk7CiAgICAgIGNvdXQud3JpdGUodW5wYWNrZWQoKS5kYXRhKCksIHVucGFj
a2VkKCkuc2l6ZSgpKTsKCiAgICB9CiAgZWxzZSBpZiAoYXJnc1swXSA9PSAibWFuaWZlc3Qi
KQogICAgewogICAgICBtYW5pZmVzdF9kYXRhIGRhdDsKICAgICAgbWFuaWZlc3RfaWQgaWRl
bnQoYXJnc1sxXSk7CgogICAgICBOKGFwcC5kYi5tYW5pZmVzdF92ZXJzaW9uX2V4aXN0cyhp
ZGVudCksCgkoc3RyaW5nKCJubyBmaWxlIHZlcnNpb24gIikgKyBpZGVudC5pbm5lcigpKCkg
KyAiIGZvdW5kIGluIGRhdGFiYXNlIikpOwoKICAgICAgTCgiZHVtcGluZyBtYW5pZmVzdCAl
c1xuIiwgaWRlbnQuaW5uZXIoKSgpLmNfc3RyKCkpOwogICAgICBhcHAuZGIuZ2V0X21hbmlm
ZXN0X3ZlcnNpb24oaWRlbnQsIGRhdCk7CiAgICAgIGRhdGEgdW5wYWNrZWQ7CiAgICAgIHVu
cGFjayhkYXQuaW5uZXIoKSwgdW5wYWNrZWQpOwogICAgICBjb3V0LndyaXRlKHVucGFja2Vk
KCkuZGF0YSgpLCB1bnBhY2tlZCgpLnNpemUoKSk7CiAgICB9CiAgZWxzZSAKICAgIHRocm93
IHVzYWdlKG5hbWUpOwoKICBndWFyZC5jb21taXQoKTsKfQoKCkNNRChjaGVja291dCwgInRy
ZWUiLCAiPG1hbmlmZXN0LWlkPiIsICJjaGVjayBvdXQgdHJlZSBzdGF0ZSBmcm9tIGRhdGFi
YXNlIikKewogIGlmIChhcmdzLnNpemUoKSAhPSAxKQogICAgdGhyb3cgdXNhZ2UobmFtZSk7
CgogIHRyYW5zYWN0aW9uX2d1YXJkIGd1YXJkKGFwcC5kYik7CgogIGZpbGVfZGF0YSBkYXRh
OwogIG1hbmlmZXN0X2lkIGlkZW50KGFyZ3NbMF0pOwogIG1hbmlmZXN0X21hcCBtOwoKICBO
KGFwcC5kYi5tYW5pZmVzdF92ZXJzaW9uX2V4aXN0cyhpZGVudCksCiAgICAoc3RyaW5nKCJu
byBtYW5pZmVzdCB2ZXJzaW9uICIpICsgaWRlbnQuaW5uZXIoKSgpICsgIiBmb3VuZCBpbiBk
YXRhYmFzZSIpKTsKICAKICBMKCJleHBvcnRpbmcgbWFuaWZlc3QgJXNcbiIsIGlkZW50Lmlu
bmVyKCkoKS5jX3N0cigpKTsKICBtYW5pZmVzdF9kYXRhIG1fZGF0YTsKICBhcHAuZGIuZ2V0
X21hbmlmZXN0X3ZlcnNpb24oaWRlbnQsIG1fZGF0YSk7CiAgcmVhZF9tYW5pZmVzdF9tYXAo
bV9kYXRhLCBtKTsgICAgICAKICBwdXRfbWFuaWZlc3RfbWFwKG0pOwogIAogIGZvciAobWFu
aWZlc3RfbWFwOjpjb25zdF9pdGVyYXRvciBpID0gbS5iZWdpbigpOyBpICE9IG0uZW5kKCk7
ICsraSkKICAgIHsKICAgICAgdmVjdG9yPHN0cmluZz4gYXJnczsKICAgICAgcGF0aF9pZF9w
YWlyIHBpcCgqaSk7CiAgICAgIAogICAgICBOKGFwcC5kYi5maWxlX3ZlcnNpb25fZXhpc3Rz
KHBpcC5pZGVudCgpKSwKCShzdHJpbmcoIm5vIGZpbGUgdmVyc2lvbiAiKQoJICsgcGlwLmlk
ZW50KCkuaW5uZXIoKSgpIAoJICsgIiBmb3VuZCBpbiBkYXRhYmFzZSBmb3IgIgoJICsgcGlw
LnBhdGgoKSgpLmNfc3RyKCkpKTsKICAgICAgCiAgICAgIGZpbGVfZGF0YSBkYXQ7CiAgICAg
IEwoIndyaXRpbmcgZmlsZSAlcyB0byAlc1xuIiwgCglwaXAuaWRlbnQoKS5pbm5lcigpKCku
Y19zdHIoKSwKCXBpcC5wYXRoKCkoKS5jX3N0cigpKTsKICAgICAgYXBwLmRiLmdldF9maWxl
X3ZlcnNpb24ocGlwLmlkZW50KCksIGRhdCk7CiAgICAgIHdyaXRlX2RhdGEocGlwLnBhdGgo
KSwgZGF0LmlubmVyKCkpOwogICAgfQoKICBndWFyZC5jb21taXQoKTsKfQoKQUxJQVMoY28s
IGNoZWNrb3V0LCAidHJlZSIsICI8bWFuaWZlc3QtaWQ+IiwKICAgICAgImNoZWNrIG91dCB0
cmVlIHN0YXRlIGZyb20gZGF0YWJhc2U7IGFsaWFzIGZvciBjaGVja291dCIpCgpDTUQoaGVh
ZHMsICJ0cmVlIiwgIiIsICJzaG93IHVubWVyZ2VkIGhlYWRzIG9mIGJyYW5jaCIpCnsKICB2
ZWN0b3I8bWFuaWZlc3RfaWQ+IGhlYWRzOwogIGlmIChhcmdzLnNpemUoKSAhPSAwKQogICAg
dGhyb3cgdXNhZ2UobmFtZSk7CgogIGlmIChhcHAuYnJhbmNoX25hbWUgPT0gIiIpCiAgICB7
CiAgICAgIGNvdXQgPDwgInBsZWFzZSBzcGVjaWZ5IGEgYnJhbmNoLCB3aXRoIC0tYnJhbmNo
PTxicmFuY2huYW1lPiIgPDwgZW5kbDsKICAgICAgcmV0dXJuOwogICAgfQoKICBnZXRfYnJh
bmNoX2hlYWRzKGFwcC5icmFuY2hfbmFtZSwgYXBwLCBoZWFkcyk7CgogIGlmIChoZWFkcy5z
aXplKCkgPT0gMCkKICAgIGNvdXQgPDwgImJyYW5jaCAnIiA8PCBhcHAuYnJhbmNoX25hbWUg
PDwgIicgaXMgZW1wdHkiIDw8IGVuZGw7CiAgZWxzZSBpZiAoaGVhZHMuc2l6ZSgpID09IDEp
CiAgICBjb3V0IDw8ICJicmFuY2ggJyIgPDwgYXBwLmJyYW5jaF9uYW1lIDw8ICInIGlzIGN1
cnJlbnRseSBtZXJnZWQ6IiA8PCBlbmRsOwogIGVsc2UKICAgIGNvdXQgPDwgImJyYW5jaCAn
IiA8PCBhcHAuYnJhbmNoX25hbWUgPDwgIicgaXMgY3VycmVudGx5IHVubWVyZ2VkOiIgPDwg
ZW5kbDsKCiAgZm9yICh2ZWN0b3I8bWFuaWZlc3RfaWQ+Ojpjb25zdF9pdGVyYXRvciBpID0g
aGVhZHMuYmVnaW4oKTsgCiAgICAgICBpICE9IGhlYWRzLmVuZCgpOyArK2kpCiAgICB7CiAg
ICAgIGNvdXQgPDwgaS0+aW5uZXIoKSgpIDw8IGVuZGw7CiAgICB9Cn0KCgpDTUQobWVyZ2Us
ICJ0cmVlIiwgIiIsICJtZXJnZSB1bm1lcmdlZCBoZWFkcyBvZiBicmFuY2giKQp7CgogIHZl
Y3RvcjxtYW5pZmVzdF9pZD4gaGVhZHM7CgogIGlmIChhcmdzLnNpemUoKSAhPSAwKQogICAg
dGhyb3cgdXNhZ2UobmFtZSk7CgogIGlmIChhcHAuYnJhbmNoX25hbWUgPT0gIiIpCiAgICB7
CiAgICAgIGNvdXQgPDwgInBsZWFzZSBzcGVjaWZ5IGEgYnJhbmNoLCB3aXRoIC0tYnJhbmNo
PTxicmFuY2huYW1lPiIgPDwgZW5kbDsKICAgICAgcmV0dXJuOwogICAgfQoKICBnZXRfYnJh
bmNoX2hlYWRzKGFwcC5icmFuY2hfbmFtZSwgYXBwLCBoZWFkcyk7CgogIGlmIChoZWFkcy5z
aXplKCkgPT0gMCkKICAgIHsKICAgICAgY291dCA8PCAiYnJhbmNoICIgPDwgYXJnc1swXSA8
PCAiaXMgZW1wdHkiIDw8IGVuZGw7CiAgICAgIHJldHVybjsKICAgIH0KICBlbHNlIGlmICho
ZWFkcy5zaXplKCkgPT0gMSkKICAgIHsKICAgICAgY291dCA8PCAiYnJhbmNoICIgPDwgYXJn
c1swXSA8PCAiaXMgbWVyZ2VkIiA8PCBlbmRsOwogICAgICByZXR1cm47CiAgICB9CiAgZWxz
ZQogICAgewogICAgICB2ZWN0b3I8IHBhaXI8dXJsLGdyb3VwPiA+IHRhcmdldHM7CiAgICAg
IGFwcC5sdWEuaG9va19nZXRfcG9zdF90YXJnZXRzKGFwcC5icmFuY2hfbmFtZSwgdGFyZ2V0
cyk7CgogICAgICBtYW5pZmVzdF9pZCBsZWZ0ID0gaGVhZHNbMF07CiAgICAgIG1hbmlmZXN0
X2lkIGFuY2VzdG9yOwogICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGhlYWRzLnNpemUo
KTsgKytpKQoJewoJICBtYW5pZmVzdF9pZCByaWdodCA9IGhlYWRzW2ldOwoJICBQKCJtZXJn
aW5nIHdpdGggbWFuaWZlc3QgJWQgLyAlZDogJXMgPC0+ICVzXG4iLAoJICAgIGksIGhlYWRz
LnNpemUoKSwKCSAgICBsZWZ0LmlubmVyKCkoKS5jX3N0cigpLCByaWdodC5pbm5lcigpKCku
Y19zdHIoKSk7CgoJICBtYW5pZmVzdF9pZCBtZXJnZWQ7CgkgIHRyYW5zYWN0aW9uX2d1YXJk
IGd1YXJkKGFwcC5kYik7CgkgIHRyeV9vbmVfbWVyZ2UgKGxlZnQsIHJpZ2h0LCBtZXJnZWQs
IGFwcCwgdGFyZ2V0cyk7CgkgIAkgIAoJICAvLyBtZXJnZWQgMSBlZGdlOyBub3cgd2UgY29t
bWl0IHRoaXMsIHVwZGF0ZSBtZXJnZSBzb3VyY2UgYW5kCgkgIC8vIHRyeSBuZXh0IG9uZQoK
CSAgcGFja2V0X2RiX3dyaXRlciBkYncoYXBwKTsKCSAgcXVldWVpbmdfcGFja2V0X3dyaXRl
ciBxcHcoYXBwLCB0YXJnZXRzKTsKCSAgY2VydF9tYW5pZmVzdF9pbl9icmFuY2gobWVyZ2Vk
LCBhcHAuYnJhbmNoX25hbWUsIGFwcCwgZGJ3KTsKCSAgY2VydF9tYW5pZmVzdF9pbl9icmFu
Y2gobWVyZ2VkLCBhcHAuYnJhbmNoX25hbWUsIGFwcCwgcXB3KTsKCgkgIHN0cmluZyBsb2cg
PSAibWVyZ2Ugb2YgIiArIGxlZnQuaW5uZXIoKSgpICsgIiBhbmQgIiArIHJpZ2h0LmlubmVy
KCkoKTsKCSAgY2VydF9tYW5pZmVzdF9jaGFuZ2Vsb2cobWVyZ2VkLCBsb2csIGFwcCwgZGJ3
KTsKCSAgY2VydF9tYW5pZmVzdF9jaGFuZ2Vsb2cobWVyZ2VkLCBsb2csIGFwcCwgcXB3KTsK
CSAgCgkgIGd1YXJkLmNvbW1pdCgpOwoJICBQKCJbc291cmNlXSAlc1xuW3NvdXJjZV0gJXNc
blttZXJnZWRdICVzXG4iLAoJICAgIGxlZnQuaW5uZXIoKSgpLmNfc3RyKCksCgkgICAgcmln
aHQuaW5uZXIoKSgpLmNfc3RyKCksCgkgICAgbWVyZ2VkLmlubmVyKCkoKS5jX3N0cigpKTsK
CSAgbGVmdCA9IG1lcmdlZDsKCX0KICAgIH0gIAp9CgoKQ01EKHByb3BhZ2F0ZSwgInRyZWUi
LCAiPHNyYy1icmFuY2g+IDxkc3QtYnJhbmNoPiIsIAogICAgIm1lcmdlIGZyb20gb25lIGJy
YW5jaCB0byBhbm90aGVyIGFzeW1tZXRyaWNhbGx5IikKewogIC8qICAKCiAgdGhpcyBpcyBh
IHNwZWNpYWwgbWVyZ2Ugb3BlcmF0b3IsIGJ1dCB2ZXJ5IHVzZWZ1bCBmb3IgcGVvcGxlIG1h
aW50YWluaW5nCiAgInNsaWdodGx5IGRpc3BhcmF0ZSBidXQgcmVsYXRlZCIgdHJlZXMuIGl0
IGRvZXMgYSBvbmUtd2F5IG1lcmdlOyBsZXNzCiAgcG93ZXJmdWwgdGhhbiBwdXR0aW5nIHRo
aW5ncyBpbiB0aGUgc2FtZSBicmFuY2ggYW5kIGFsc28gbW9yZSBmbGV4aWJsZS4KCiAgMS4g
Y2hlY2sgdG8gc2VlIGlmIHNyYyBhbmQgZHN0IGJyYW5jaGVzIGFyZSBtZXJnZWQsIGlmIG5v
dCBhYm9ydCwgaWYgc28KICAgICBjYWxsIGhlYWRzIE4xIGFuZCBOMiByZXNwZWN0aXZlbHku
CgogIDIuIChGSVhNRTogbm90IHlldCBwcmVzZW50KSBydW4gdGhlIGhvb2sgcHJvcGFnYXRl
ICgic3JjLWJyYW5jaCIsCiAgICAgImRzdC1icmFuY2giLCBOMSwgTjIpIHdoaWNoIGdpdmVz
IHRoZSB1c2VyIGEgY2hhbmNlIHRvIG1hc3NhZ2UgTjEgaW50bwogICAgIGEgc3RhdGUgd2hp
Y2ggaXMgbGlrZWx5IHRvICJtZXJnZSBuaWNlbHkiIHdpdGggTjIsIGVnLiBlZGl0IHBhdGhu
YW1lcywKICAgICBvbWl0IG9wdGlvbmFsIGZpbGVzIG9mIG5vIGludGVyZXN0LgoKICAzLiBk
byBhIG5vcm1hbCAyIG9yIDMtd2F5IG1lcmdlIG9uIE4xIGFuZCBOMiwgZGVwZW5kaW5nIG9u
IHRoZQogICAgIGV4aXN0ZW5jZSBvZiBjb21tb24gYW5jZXN0b3JzLgoKICA0LiBzYXZlIHRo
ZSByZXN1bHRzIGFzIHRoZSBkZWx0YSAoTjIsTSksIHRoZSBhbmNlc3RyeSBlZGdlcyAoTjEs
TSkKICAgICBhbmQgKE4yLE0pLCBhbmQgdGhlIGNlcnQgKE4yLGRzdCkuCgogIDUuIHF1ZXVl
IHRoZSByZXN1bHRpbmcgcGFja2V0cyB0byBzZW5kIHRvIHRoZSB1cmwgZm9yIGRzdC1icmFu
Y2gsIG5vdAogICAgIHNyYy1icmFuY2guCgogICovCgogIHZlY3RvcjxtYW5pZmVzdF9pZD4g
c3JjX2hlYWRzLCBkc3RfaGVhZHM7CgogIGlmIChhcmdzLnNpemUoKSAhPSAyKQogICAgdGhy
b3cgdXNhZ2UobmFtZSk7CgogIGdldF9icmFuY2hfaGVhZHMoYXJnc1swXSwgYXBwLCBzcmNf
aGVhZHMpOwogIGdldF9icmFuY2hfaGVhZHMoYXJnc1sxXSwgYXBwLCBkc3RfaGVhZHMpOwoK
ICBpZiAoc3JjX2hlYWRzLnNpemUoKSA9PSAwKQogICAgewogICAgICBjb3V0IDw8ICJicmFu
Y2ggIiA8PCBhcmdzWzBdIDw8ICJpcyBlbXB0eSIgPDwgZW5kbDsKICAgICAgcmV0dXJuOwog
ICAgfQogIGVsc2UgaWYgKHNyY19oZWFkcy5zaXplKCkgIT0gMSkKICAgIHsKICAgICAgY291
dCA8PCAiYnJhbmNoICIgPDwgYXJnc1swXSA8PCAiaXMgbm90IG1lcmdlZCIgPDwgZW5kbDsK
ICAgICAgcmV0dXJuOwogICAgfQogIGVsc2UgaWYgKGRzdF9oZWFkcy5zaXplKCkgPT0gMCkK
ICAgIHsKICAgICAgY291dCA8PCAiYnJhbmNoICIgPDwgYXJnc1sxXSA8PCAiaXMgZW1wdHki
IDw8IGVuZGw7CiAgICAgIHJldHVybjsKICAgIH0KICBlbHNlIGlmIChkc3RfaGVhZHMuc2l6
ZSgpICE9IDEpCiAgICB7CiAgICAgIGNvdXQgPDwgImJyYW5jaCAiIDw8IGFyZ3NbMV0gPDwg
ImlzIG5vdCBtZXJnZWQiIDw8IGVuZGw7CiAgICAgIHJldHVybjsKICAgIH0KICBlbHNlCiAg
ICB7CiAgICAgIHZlY3RvcjwgcGFpcjx1cmwsZ3JvdXA+ID4gdGFyZ2V0czsKICAgICAgYXBw
Lmx1YS5ob29rX2dldF9wb3N0X3RhcmdldHMoYXJnc1sxXSwgdGFyZ2V0cyk7CgogICAgICBt
YW5pZmVzdF9pZCBtZXJnZWQ7CiAgICAgIHRyYW5zYWN0aW9uX2d1YXJkIGd1YXJkKGFwcC5k
Yik7CiAgICAgIHRyeV9vbmVfbWVyZ2UgKHNyY19oZWFkc1swXSwgZHN0X2hlYWRzWzBdLCBt
ZXJnZWQsIGFwcCwgdGFyZ2V0cyk7ICAgICAgCgogICAgICBxdWV1ZWluZ19wYWNrZXRfd3Jp
dGVyIHFwdyhhcHAsIHRhcmdldHMpOwogICAgICBjZXJ0X21hbmlmZXN0X2luX2JyYW5jaCht
ZXJnZWQsIGFwcC5icmFuY2hfbmFtZSwgYXBwLCBxcHcpOwogICAgICBjZXJ0X21hbmlmZXN0
X2NoYW5nZWxvZyhtZXJnZWQsIAoJCQkgICAgICAicHJvcGFnYXRlIG9mICIgCgkJCSAgICAg
ICsgc3JjX2hlYWRzWzBdLmlubmVyKCkoKSAKCQkJICAgICAgKyAiIGFuZCAiIAoJCQkgICAg
ICArIGRzdF9oZWFkc1swXS5pbm5lcigpKCkKCQkJICAgICAgKyAiXG4iCgkJCSAgICAgICsg
ImZyb20gYnJhbmNoICIgCgkJCSAgICAgICsgYXJnc1swXSArICIgdG8gIiArIGFyZ3NbMV0g
KyAiXG4iLCAKCQkJICAgICAgYXBwLCBxcHcpOwkgIAogICAgICBndWFyZC5jb21taXQoKTsg
ICAgICAKICAgIH0KfQoKCgpDTUQoZGlmZiwgImluZm9ybWF0aXZlIiwgIiIsICJzaG93IGN1
cnJlbnQgZGlmZnMgb24gc3Rkb3V0IikKewogIG1hbmlmZXN0X21hcCBtX29sZCwgbV9uZXc7
CiAgcGF0Y2hfc2V0IHBzOwoKICB0cmFuc2FjdGlvbl9ndWFyZCBndWFyZChhcHAuZGIpOwoK
ICBpZiAoYXJncy5zaXplKCkgPiAwKQogICAgewogICAgICBtYW5pZmVzdF9kYXRhIGRhdDsK
ICAgICAgbWFuaWZlc3RfaWQgaWRlbnQoYXJnc1swXSk7CgogICAgICBOKGFwcC5kYi5tYW5p
ZmVzdF92ZXJzaW9uX2V4aXN0cyhpZGVudCksCgkoc3RyaW5nKCJubyBmaWxlIHZlcnNpb24g
IikgKyBpZGVudC5pbm5lcigpKCkgKyAiIGZvdW5kIGluIGRhdGFiYXNlIikpOwoKICAgICAg
TCgiZ2V0dGluZyBtYW5pZmVzdCAlc1xuIiwgaWRlbnQuaW5uZXIoKSgpLmNfc3RyKCkpOwog
ICAgICBhcHAuZGIuZ2V0X21hbmlmZXN0X3ZlcnNpb24oaWRlbnQsIGRhdCk7CiAgICAgIHJl
YWRfbWFuaWZlc3RfbWFwKGRhdCwgbV9vbGQpOwogICAgfQogIGVsc2UKICAgIGdldF9tYW5p
ZmVzdF9tYXAobV9vbGQpOwoKICBpZiAoYXJncy5zaXplKCkgPiAxKQogICAgewogICAgICBt
YW5pZmVzdF9kYXRhIGRhdDsKICAgICAgbWFuaWZlc3RfaWQgaWRlbnQoYXJnc1sxXSk7Cgog
ICAgICBOKGFwcC5kYi5tYW5pZmVzdF92ZXJzaW9uX2V4aXN0cyhpZGVudCksCgkoc3RyaW5n
KCJubyBmaWxlIHZlcnNpb24gIikgKyBpZGVudC5pbm5lcigpKCkgKyAiIGZvdW5kIGluIGRh
dGFiYXNlIikpOwoKICAgICAgTCgiZ2V0dGluZyBtYW5pZmVzdCAlc1xuIiwgaWRlbnQuaW5u
ZXIoKSgpLmNfc3RyKCkpOwogICAgICBhcHAuZGIuZ2V0X21hbmlmZXN0X3ZlcnNpb24oaWRl
bnQsIGRhdCk7CiAgICAgIHJlYWRfbWFuaWZlc3RfbWFwKGRhdCwgbV9uZXcpOwogICAgfQog
IGVsc2UKICAgIGNhbGN1bGF0ZV9uZXdfbWFuaWZlc3RfbWFwKG1fb2xkLCBtX25ldyk7Cgog
IG1hbmlmZXN0c190b19wYXRjaF9zZXQobV9vbGQsIG1fbmV3LCBhcHAsIHBzKTsKCiAgZm9y
IChzZXQ8cGF0Y2hfZGVsdGE+Ojpjb25zdF9pdGVyYXRvciBpID0gcHMuZl9kZWx0YXMuYmVn
aW4oKTsKICAgICAgIGkgIT0gcHMuZl9kZWx0YXMuZW5kKCk7ICsraSkKICAgIHsKICAgICAg
ZmlsZV9kYXRhIGZfb2xkLCBmX25ldzsKICAgICAgZ3ppcDxkYXRhPiBkZWNvZGVkX29sZCwg
ZGVjb2RlZF9uZXc7CiAgICAgIGRhdGEgZGVjb21wcmVzc2VkX29sZCwgZGVjb21wcmVzc2Vk
X25ldzsKICAgICAgdmVjdG9yPHN0cmluZz4gb2xkX2xpbmVzLCBuZXdfbGluZXM7CgogICAg
ICBhcHAuZGIuZ2V0X2ZpbGVfdmVyc2lvbihpLT5pZF9vbGQsIGZfb2xkKTsKICAgICAgZGVj
b2RlX2Jhc2U2NChmX29sZC5pbm5lcigpLCBkZWNvZGVkX29sZCk7CiAgICAgIGRlY29kZV9n
emlwKGRlY29kZWRfb2xkLCBkZWNvbXByZXNzZWRfb2xkKTsKCiAgICAgIGlmIChhcmdzLnNp
emUoKSA+IDEpCgl7CgkgIGFwcC5kYi5nZXRfZmlsZV92ZXJzaW9uKGktPmlkX25ldywgZl9u
ZXcpOwoJICBkZWNvZGVfYmFzZTY0KGZfbmV3LmlubmVyKCksIGRlY29kZWRfbmV3KTsKCSAg
ZGVjb2RlX2d6aXAoZGVjb2RlZF9uZXcsIGRlY29tcHJlc3NlZF9uZXcpOwoJfQogICAgICBl
bHNlCglyZWFkX2RhdGEoaS0+cGF0aCwgZGVjb21wcmVzc2VkX25ldyk7CgogICAgICBzcGxp
dF9pbnRvX2xpbmVzKGRlY29tcHJlc3NlZF9vbGQoKSwgb2xkX2xpbmVzKTsKICAgICAgc3Bs
aXRfaW50b19saW5lcyhkZWNvbXByZXNzZWRfbmV3KCksIG5ld19saW5lcyk7CgogICAgICB1
bmlkaWZmKGktPnBhdGgoKSwgaS0+cGF0aCgpLCBvbGRfbGluZXMsIG5ld19saW5lcywgY291
dCk7CiAgICB9ICAKICBndWFyZC5jb21taXQoKTsKfQoKQ01EKHN0YXR1cywgImluZm9ybWF0
aXZlIiwgIiIsICJzaG93IHN0YXR1cyBvZiB3b3JraW5nIGNvcHkiKQp7CiAgbWFuaWZlc3Rf
bWFwIG1fb2xkLCBtX25ldzsKICBwYXRjaF9zZXQgcHM7CgogIHRyYW5zYWN0aW9uX2d1YXJk
IGd1YXJkKGFwcC5kYik7CiAgZ2V0X21hbmlmZXN0X21hcChtX29sZCk7CiAgY2FsY3VsYXRl
X25ld19tYW5pZmVzdF9tYXAobV9vbGQsIG1fbmV3KTsKICBtYW5pZmVzdHNfdG9fcGF0Y2hf
c2V0KG1fb2xkLCBtX25ldywgYXBwLCBwcyk7CiAgcGF0Y2hfc2V0X3RvX3RleHRfc3VtbWFy
eShwcywgY291dCk7CiAgZ3VhcmQuY29tbWl0KCk7Cn0KCgpDTUQobWRlbHRhLCAicGFja2V0
IGkvbyIsICI8b2xkaWQ+IDxuZXdpZD4iLCAid3JpdGUgbWFuaWZlc3QgZGVsdGEgcGFja2V0
IHRvIHN0ZG91dCIpCnsKICBpZiAoYXJncy5zaXplKCkgIT0gMikKICAgIHRocm93IHVzYWdl
KG5hbWUpOwoKICB0cmFuc2FjdGlvbl9ndWFyZCBndWFyZChhcHAuZGIpOwogIHBhY2tldF93
cml0ZXIgcHcoY291dCk7CgogIG1hbmlmZXN0X2lkIG1fb2xkX2lkLCBtX25ld19pZDsgCiAg
bWFuaWZlc3RfZGF0YSBtX29sZF9kYXRhLCBtX25ld19kYXRhOwogIG1hbmlmZXN0X21hcCBt
X29sZCwgbV9uZXc7CiAgcGF0Y2hfc2V0IHBzOyAgICAgIAogIG1fb2xkX2lkID0gaGV4ZW5j
PGlkPihhcmdzWzBdKTsgCiAgbV9uZXdfaWQgPSBoZXhlbmM8aWQ+KGFyZ3NbMV0pOwogIGFw
cC5kYi5nZXRfbWFuaWZlc3RfdmVyc2lvbihtX29sZF9pZCwgbV9vbGRfZGF0YSk7CiAgYXBw
LmRiLmdldF9tYW5pZmVzdF92ZXJzaW9uKG1fbmV3X2lkLCBtX25ld19kYXRhKTsKICByZWFk
X21hbmlmZXN0X21hcChtX29sZF9kYXRhLCBtX29sZCk7CiAgcmVhZF9tYW5pZmVzdF9tYXAo
bV9uZXdfZGF0YSwgbV9uZXcpOwogIG1hbmlmZXN0c190b19wYXRjaF9zZXQobV9vbGQsIG1f
bmV3LCBhcHAsIHBzKTsKICBwYXRjaF9zZXRfdG9fcGFja2V0cyhwcywgYXBwLCBwdyk7ICAK
ICBndWFyZC5jb21taXQoKTsKfQoKQ01EKGZkZWx0YSwgInBhY2tldCBpL28iLCAiPG9sZGlk
PiA8bmV3aWQ+IiwgIndyaXRlIGZpbGUgZGVsdGEgcGFja2V0IHRvIHN0ZG91dCIpCnsKICBp
ZiAoYXJncy5zaXplKCkgIT0gMikKICAgIHRocm93IHVzYWdlKG5hbWUpOwoKICB0cmFuc2Fj
dGlvbl9ndWFyZCBndWFyZChhcHAuZGIpOwogIHBhY2tldF93cml0ZXIgcHcoY291dCk7Cgog
IGZpbGVfaWQgZl9vbGRfaWQsIGZfbmV3X2lkOwogIGZpbGVfZGF0YSBmX29sZF9kYXRhLCBm
X25ld19kYXRhOwogIGZfb2xkX2lkID0gaGV4ZW5jPGlkPihhcmdzWzBdKTsKICBmX25ld19p
ZCA9IGhleGVuYzxpZD4oYXJnc1sxXSk7ICAgICAKICBhcHAuZGIuZ2V0X2ZpbGVfdmVyc2lv
bihmX29sZF9pZCwgZl9vbGRfZGF0YSk7CiAgYXBwLmRiLmdldF9maWxlX3ZlcnNpb24oZl9u
ZXdfaWQsIGZfbmV3X2RhdGEpOwogIGJhc2U2NDwgZ3ppcDxkZWx0YT4gPiBkZWw7CiAgZGlm
ZihmX29sZF9kYXRhLmlubmVyKCksIGZfbmV3X2RhdGEuaW5uZXIoKSwgZGVsKTsKICBwdy5j
b25zdW1lX2ZpbGVfZGVsdGEoZl9vbGRfaWQsIGZfbmV3X2lkLCBmaWxlX2RlbHRhKGRlbCkp
OyAgCiAgZ3VhcmQuY29tbWl0KCk7Cn0KCkNNRChtZGF0YSwgInBhY2tldCBpL28iLCAiPGlk
PiIsICJ3cml0ZSBtYW5pZmVzdCBkYXRhIHBhY2tldCB0byBzdGRvdXQiKQp7CiAgaWYgKGFy
Z3Muc2l6ZSgpICE9IDEpCiAgICB0aHJvdyB1c2FnZShuYW1lKTsKCiAgdHJhbnNhY3Rpb25f
Z3VhcmQgZ3VhcmQoYXBwLmRiKTsKICBwYWNrZXRfd3JpdGVyIHB3KGNvdXQpOwoKICBtYW5p
ZmVzdF9pZCBtX2lkOwogIG1hbmlmZXN0X2RhdGEgbV9kYXRhOwogIG1faWQgPSBoZXhlbmM8
aWQ+KGFyZ3NbMF0pOwogIGFwcC5kYi5nZXRfbWFuaWZlc3RfdmVyc2lvbihtX2lkLCBtX2Rh
dGEpOwogIHB3LmNvbnN1bWVfbWFuaWZlc3RfZGF0YShtX2lkLCBtX2RhdGEpOyAgCiAgZ3Vh
cmQuY29tbWl0KCk7Cn0KCgpDTUQoZmRhdGEsICJwYWNrZXQgaS9vIiwgIjxpZD4iLCAid3Jp
dGUgZmlsZSBkYXRhIHBhY2tldCB0byBzdGRvdXQiKQp7CiAgaWYgKGFyZ3Muc2l6ZSgpICE9
IDEpCiAgICB0aHJvdyB1c2FnZShuYW1lKTsKCiAgdHJhbnNhY3Rpb25fZ3VhcmQgZ3VhcmQo
YXBwLmRiKTsKICBwYWNrZXRfd3JpdGVyIHB3KGNvdXQpOwoKICBmaWxlX2lkIGZfaWQ7CiAg
ZmlsZV9kYXRhIGZfZGF0YTsKICBmX2lkID0gaGV4ZW5jPGlkPihhcmdzWzBdKTsKICBhcHAu
ZGIuZ2V0X2ZpbGVfdmVyc2lvbihmX2lkLCBmX2RhdGEpOwogIHB3LmNvbnN1bWVfZmlsZV9k
YXRhKGZfaWQsIGZfZGF0YSk7ICAKICBndWFyZC5jb21taXQoKTsKfQoKQ01EKG1jZXJ0cywg
InBhY2tldCBpL28iLCAiPGlkPiIsICJ3cml0ZSBtYW5pZmVzdCBjZXJ0IHBhY2tldHMgdG8g
c3Rkb3V0IikKewogIGlmIChhcmdzLnNpemUoKSAhPSAxKQogICAgdGhyb3cgdXNhZ2UobmFt
ZSk7CgogIHRyYW5zYWN0aW9uX2d1YXJkIGd1YXJkKGFwcC5kYik7CiAgcGFja2V0X3dyaXRl
ciBwdyhjb3V0KTsKCiAgbWFuaWZlc3RfaWQgbV9pZDsKICB2ZWN0b3I8IG1hbmlmZXN0PGNl
cnQ+ID4gY2VydHM7CgogIG1faWQgPSBoZXhlbmM8aWQ+KGFyZ3NbMF0pOwogIGFwcC5kYi5n
ZXRfbWFuaWZlc3RfY2VydHMobV9pZCwgY2VydHMpOwogIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY2VydHMuc2l6ZSgpOyArK2kpCiAgICBwdy5jb25zdW1lX21hbmlmZXN0X2NlcnQoY2Vy
dHNbaV0pOwogIGd1YXJkLmNvbW1pdCgpOwp9CgpDTUQoZmNlcnRzLCAicGFja2V0IGkvbyIs
ICI8aWQ+IiwgIndyaXRlIGZpbGUgY2VydCBwYWNrZXRzIHRvIHN0ZG91dCIpCnsKICBpZiAo
YXJncy5zaXplKCkgIT0gMSkKICAgIHRocm93IHVzYWdlKG5hbWUpOwoKICB0cmFuc2FjdGlv
bl9ndWFyZCBndWFyZChhcHAuZGIpOwogIHBhY2tldF93cml0ZXIgcHcoY291dCk7CgogIGZp
bGVfaWQgZl9pZDsKICB2ZWN0b3I8IGZpbGU8Y2VydD4gPiBjZXJ0czsKCiAgZl9pZCA9IGhl
eGVuYzxpZD4oYXJnc1swXSk7CiAgYXBwLmRiLmdldF9maWxlX2NlcnRzKGZfaWQsIGNlcnRz
KTsKICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNlcnRzLnNpemUoKTsgKytpKQogICAgcHcu
Y29uc3VtZV9maWxlX2NlcnQoY2VydHNbaV0pOwogIGd1YXJkLmNvbW1pdCgpOwp9CgpDTUQo
cHVia2V5LCAicGFja2V0IGkvbyIsICI8aWQ+IiwgIndyaXRlIHB1YmxpYyBrZXkgcGFja2V0
IHRvIHN0ZG91dCIpCnsKICBpZiAoYXJncy5zaXplKCkgIT0gMSkKICAgIHRocm93IHVzYWdl
KG5hbWUpOwoKICB0cmFuc2FjdGlvbl9ndWFyZCBndWFyZChhcHAuZGIpOwogIHBhY2tldF93
cml0ZXIgcHcoY291dCk7CiAgcnNhX2tleXBhaXJfaWQgaWRlbnQoYXJnc1swXSk7CiAgYmFz
ZTY0PCByc2FfcHViX2tleSA+IGtleTsKICBhcHAuZGIuZ2V0X2tleShpZGVudCwga2V5KTsK
ICBwdy5jb25zdW1lX3B1YmxpY19rZXkoaWRlbnQsIGtleSk7CiAgZ3VhcmQuY29tbWl0KCk7
Cn0KCkNNRChwcml2a2V5LCAicGFja2V0IGkvbyIsICI8aWQ+IiwgIndyaXRlIHByaXZhdGUg
a2V5IHBhY2tldCB0byBzdGRvdXQiKQp7CiAgaWYgKGFyZ3Muc2l6ZSgpICE9IDEpCiAgICB0
aHJvdyB1c2FnZShuYW1lKTsKCiAgdHJhbnNhY3Rpb25fZ3VhcmQgZ3VhcmQoYXBwLmRiKTsK
ICBwYWNrZXRfd3JpdGVyIHB3KGNvdXQpOwogIHJzYV9rZXlwYWlyX2lkIGlkZW50KGFyZ3Nb
MF0pOwogIGJhc2U2NDwgYXJjNDxyc2FfcHJpdl9rZXk+ID4ga2V5OwogIGFwcC5kYi5nZXRf
a2V5KGlkZW50LCBrZXkpOwogIHB3LmNvbnN1bWVfcHJpdmF0ZV9rZXkoaWRlbnQsIGtleSk7
CiAgZ3VhcmQuY29tbWl0KCk7Cn0KCgpDTUQocmVhZCwgInBhY2tldCBpL28iLCAiIiwgInJl
YWQgcGFja2V0cyBmcm9tIHN0ZGluIikKewogIHRyYW5zYWN0aW9uX2d1YXJkIGd1YXJkKGFw
cC5kYik7CiAgcGFja2V0X2RiX3dyaXRlciBkYncoYXBwLCB0cnVlKTsKICBzaXplX3QgY291
bnQgPSByZWFkX3BhY2tldHMoY2luLCBkYncpOwogIE4oY291bnQgIT0gMCwgIm5vIHBhY2tl
dHMgZm91bmQgb24gc3RkaW4iKTsKICBpZiAoY291bnQgPT0gMSkKICAgIFAoInJlYWQgMSBw
YWNrZXRcbiIpOwogIGVsc2UKICAgIFAoInJlYWQgJWQgcGFja2V0c1xuIiwgY291bnQpOwog
IGd1YXJkLmNvbW1pdCgpOwp9CgoKQ01EKGFncmFwaCwgImdyYXBoIHZpc3VhbGl6YXRpb24i
LCAiIiwgImR1bXAgYW5jZXN0cnkgZ3JhcGggdG8gc3Rkb3V0IikKewogIHZlY3RvcjwgbWFu
aWZlc3Q8Y2VydD4gPiBjZXJ0czsKICB0cmFuc2FjdGlvbl9ndWFyZCBndWFyZChhcHAuZGIp
OwogIGFwcC5kYi5nZXRfbWFuaWZlc3RfY2VydHMoYW5jZXN0b3JfY2VydF9uYW1lLCBjZXJ0
cyk7CiAgc2V0PHN0cmluZz4gbm9kZXM7CiAgdmVjdG9yPCBwYWlyPHN0cmluZywgc3RyaW5n
PiA+IGVkZ2VzOwogIGZvcih2ZWN0b3I8IG1hbmlmZXN0PGNlcnQ+ID46Oml0ZXJhdG9yIGkg
PSBjZXJ0cy5iZWdpbigpOwogICAgICBpICE9IGNlcnRzLmVuZCgpOyArK2kpCiAgICB7CiAg
ICAgIGNlcnRfdmFsdWUgdHY7CiAgICAgIGRlY29kZV9iYXNlNjQoaS0+aW5uZXIoKS52YWx1
ZSwgdHYpOwogICAgICBub2Rlcy5pbnNlcnQodHYoKSk7CiAgICAgIG5vZGVzLmluc2VydChp
LT5pbm5lcigpLmlkZW50KCkpOwogICAgICBlZGdlcy5wdXNoX2JhY2sobWFrZV9wYWlyKHR2
KCksIGktPmlubmVyKCkuaWRlbnQoKSkpOwogICAgfQogIGNvdXQgPDwgImdyYXBoOiAiIDw8
IGVuZGwgPDwgInsiIDw8IGVuZGw7IC8vIG9wZW4gZ3JhcGgKICBmb3IgKHNldDxzdHJpbmc+
OjppdGVyYXRvciBpID0gbm9kZXMuYmVnaW4oKTsgaSAhPSBub2Rlcy5lbmQoKTsKICAgICAg
ICsraSkKICAgIHsKICAgICAgY291dCA8PCAibm9kZTogeyB0aXRsZSA6IFwiIiA8PCAqaSA8
PCAiXCJ9IiA8PCBlbmRsOwogICAgfQogIGZvciAodmVjdG9yPCBwYWlyPHN0cmluZyxzdHJp
bmc+ID46Oml0ZXJhdG9yIGkgPSBlZGdlcy5iZWdpbigpOyBpICE9IGVkZ2VzLmVuZCgpOwog
ICAgICAgKytpKQogICAgewogICAgICBjb3V0IDw8ICJlZGdlOiB7IHNvdXJjZW5hbWUgOiBc
IiIgPDwgaS0+Zmlyc3QgPDwgIlwiIiA8PCBlbmRsCgkgICA8PCAiICAgICAgICB0YXJnZXRu
YW1lIDogXCIiIDw8IGktPnNlY29uZCA8PCAiXCIgfSIgPDwgZW5kbDsKICAgIH0KICBjb3V0
IDw8ICJ9IiA8PCBlbmRsIDw8IGVuZGw7IC8vIGNsb3NlIGdyYXBoCiAgZ3VhcmQuY29tbWl0
KCk7Cn0KCkNNRChmZXRjaCwgIm5ldHdvcmsiLCAiW1VSTF0gW2dyb3VwbmFtZV0iLCAiZmV0
Y2ggcmVjZW50IGNoYW5nZXMgZnJvbSBuZXR3b3JrIikKewogIGlmIChhcmdzLnNpemUoKSA+
IDIpCiAgICB0aHJvdyB1c2FnZShuYW1lKTsKCiAgdmVjdG9yPCBwYWlyPHVybCxncm91cD4g
PiBzb3VyY2VzOwoKICBpZiAoYXJncy5zaXplKCkgPT0gMCkKICAgIHsKICAgICAgaWYgKGFw
cC5icmFuY2hfbmFtZSA9PSAiIikKCXsKCSAgUCgibm8gYnJhbmNoIG5hbWUgcHJvdmlkZWQs
IGZldGNoaW5nIGZyb20gYWxsIGtub3duIFVSTHNcbiIpOwoJICBhcHAuZGIuZ2V0X2FsbF9r
bm93bl9zb3VyY2VzKHNvdXJjZXMpOwoJfQogICAgICBlbHNlCgl7CgkgIE4oYXBwLmx1YS5o
b29rX2dldF9mZXRjaF9zb3VyY2VzKGFwcC5icmFuY2hfbmFtZSwgc291cmNlcyksCgkgICAg
KCJubyBVUkwgLyBncm91cCBwYWlycyBmb3VuZCBmb3IgYnJhbmNoICIgKyBhcHAuYnJhbmNo
X25hbWUpKTsgCgl9CiAgICB9CiAgZWxzZQogICAgewogICAgICBOKGFyZ3Muc2l6ZSgpID09
IDIsICJuZWVkIFVSTCBhbmQgZ3JvdXBuYW1lIik7CiAgICAgIHNvdXJjZXMucHVzaF9iYWNr
KG1ha2VfcGFpcih1cmwoYXJnc1swXSksCgkJCQkgIGdyb3VwKGFyZ3NbMV0pKSk7CiAgICB9
CiAgCiAgZmV0Y2hfcXVldWVkX2Jsb2JzX2Zyb21fbmV0d29yayhzb3VyY2VzLCBhcHApOwp9
CgpDTUQocG9zdCwgIm5ldHdvcmsiLCAiW1VSTF0gW2dyb3VwbmFtZV0iLCAicG9zdCBxdWV1
ZWQgY2hhbmdlcyB0byBuZXR3b3JrIikKewogIGlmIChhcmdzLnNpemUoKSA+IDIpCiAgICB0
aHJvdyB1c2FnZShuYW1lKTsKCiAgdmVjdG9yPCBwYWlyPHVybCxncm91cD4gPiB0YXJnZXRz
OwogIGlmIChhcmdzLnNpemUoKSA9PSAwKQogICAgewogICAgICBpZiAoYXBwLmJyYW5jaF9u
YW1lID09ICIiKQoJewoJICBQKCJubyBicmFuY2ggbmFtZSBwcm92aWRlZCwgcG9zdGluZyBh
bGwgcXVldWVkIHRhcmdldHNcbiIpOwoJICBhcHAuZGIuZ2V0X3F1ZXVlZF90YXJnZXRzKHRh
cmdldHMpOwoJfQogICAgICBlbHNlCgl7CgkgIE4oYXBwLmx1YS5ob29rX2dldF9wb3N0X3Rh
cmdldHMoYXBwLmJyYW5jaF9uYW1lLCB0YXJnZXRzKSwKCSAgICAoIm5vIFVSTCAvIGdyb3Vw
IHBhaXJzIGZvdW5kIGZvciBicmFuY2ggIiArIGFwcC5icmFuY2hfbmFtZSkpOyAKCX0KICAg
IH0gIAogIGVsc2UKICAgIHsKICAgICAgTihhcmdzLnNpemUoKSA9PSAyLCAibmVlZCBVUkwg
YW5kIGdyb3VwbmFtZSIpOwogICAgICB0YXJnZXRzLnB1c2hfYmFjayhtYWtlX3BhaXIodXJs
KGFyZ3NbMF0pLAoJCQkJICBncm91cChhcmdzWzFdKSkpOwogICAgfQoKICBwb3N0X3F1ZXVl
ZF9ibG9ic190b19uZXR3b3JrKHRhcmdldHMsIGFwcCk7Cn0KCgpDTUQocmNzX2ltcG9ydCwg
InJjcyIsICI8cmNzZmlsZT4gLi4uIiwgImltcG9ydCBhbGwgdmVyc2lvbnMgaW4gUkNTIGZp
bGVzIikKewogIGlmIChhcmdzLnNpemUoKSA8IDEpCiAgICB0aHJvdyB1c2FnZShuYW1lKTsK
ICAKICB0cmFuc2FjdGlvbl9ndWFyZCBndWFyZChhcHAuZGIpOwogIGZvciAodmVjdG9yPHN0
cmluZz46OmNvbnN0X2l0ZXJhdG9yIGkgPSBhcmdzLmJlZ2luKCk7CiAgICAgICBpICE9IGFy
Z3MuZW5kKCk7ICsraSkKICAgIHsKICAgICAgaW1wb3J0X3Jjc19maWxlKGZzOjpwYXRoKCpp
KSwgYXBwLmRiKTsKICAgIH0KICBndWFyZC5jb21taXQoKTsKfQoKCkNNRChjdnNfaW1wb3J0
LCAicmNzIiwgIjxjdnNyb290PiIsICJpbXBvcnQgYWxsIHZlcnNpb25zIGluIENWUyByZXBv
c2l0b3J5IikKewogIGlmIChhcmdzLnNpemUoKSAhPSAxKQogICAgdGhyb3cgdXNhZ2UobmFt
ZSk7CgogIGltcG9ydF9jdnNfcmVwbyhmczo6cGF0aChhcmdzLmF0KDApKSwgYXBwKTsKfQoK
Cn07IC8vIG5hbWVzcGFjZSBjb21tYW5kcwo=
_ATEOF


# decode first file and commit to db
$at_traceoff
echo "$at_srcdir/t_unidiff2.at:1687: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o firstfile firstfile.b64
else
  \$UNB64_COMMAND <firstfile.b64 >firstfile
fi
"
echo t_unidiff2.at:1687 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o firstfile firstfile.b64
else
  $UNB64_COMMAND <firstfile.b64 >firstfile
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o firstfile firstfile.b64
else
  $UNB64_COMMAND <firstfile.b64 >firstfile
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff2.at:1687: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff2.at:1688: cp firstfile testfile"
echo t_unidiff2.at:1688 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp firstfile testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp firstfile testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff2.at:1688: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff2.at:1689: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_unidiff2.at:1689 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff2.at:1689: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff2.at:1690: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah"
echo t_unidiff2.at:1690 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff2.at:1690: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff2.at:1691: mv testfile firstfile"
echo t_unidiff2.at:1691 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv testfile firstfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv testfile firstfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff2.at:1691: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# decode second file
$at_traceoff
echo "$at_srcdir/t_unidiff2.at:1694: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o secondfile secondfile.b64
else
  \$UNB64_COMMAND <secondfile.b64 >secondfile
fi
"
echo t_unidiff2.at:1694 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o secondfile secondfile.b64
else
  $UNB64_COMMAND <secondfile.b64 >secondfile
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o secondfile secondfile.b64
else
  $UNB64_COMMAND <secondfile.b64 >secondfile
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff2.at:1694: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# calculate diff to second file using monotone
$at_traceoff
echo "$at_srcdir/t_unidiff2.at:1697: cp secondfile testfile"
echo t_unidiff2.at:1697 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp secondfile testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp secondfile testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff2.at:1697: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff2.at:1698: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff"
echo t_unidiff2.at:1698 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff2.at:1698: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff2.at:1699: mv stdout monodiff"
echo t_unidiff2.at:1699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout monodiff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout monodiff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff2.at:1699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# look for a meaningless change
$at_traceoff
echo "$at_srcdir/t_unidiff2.at:1702: grep ^-\$ monodiff"
echo t_unidiff2.at:1702 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep ^-$ monodiff" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep ^-$ monodiff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep ^-$ monodiff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_unidiff2.at:1702: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  16 ) # 16. t_cwork.at:3: delete work file on checkout
    at_setup_line='t_cwork.at:3'
    at_desc='delete work file on checkout'
    $at_quiet $ECHO_N " 16: delete work file on checkout                 $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "16. t_cwork.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_cwork.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_cwork.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cwork.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cwork.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_cwork.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cwork.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cwork.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_cwork.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cwork.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cwork.at:5: rm test_keys"
echo t_cwork.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cwork.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile0 <<'_ATEOF'
version 0 of first test file
_ATEOF

cat >testfile1 <<'_ATEOF'
version 1 of second test file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_cwork.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile0"
echo t_cwork.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cwork.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cwork.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah'"
echo t_cwork.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cwork.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

V1=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_cwork.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile1"
echo t_cwork.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cwork.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cwork.at:16: test -e _MTN/work"
echo t_cwork.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e _MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e _MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cwork.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cwork.at:17: rm -rf _MTN"
echo t_cwork.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cwork.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cwork.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$V1 ."
echo t_cwork.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$V1 ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$V1 . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$V1 . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cwork.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cwork.at:19: test ! -e _MTN/work"
echo t_cwork.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e _MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e _MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cwork.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  17 ) # 17. t_revert.at:3: revert file to base version
    at_setup_line='t_revert.at:3'
    at_desc='revert file to base version'
    $at_quiet $ECHO_N " 17: revert file to base version                  $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "17. t_revert.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_revert.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_revert.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_revert.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_revert.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:5: rm test_keys"
echo t_revert.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile0 <<'_ATEOF'
version 0 of first test file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_revert.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile0"
echo t_revert.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

V1=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile0`
$at_traceoff
echo "$at_srcdir/t_revert.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah'"
echo t_revert.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check reverting a single file by name

cat >testfile0 <<'_ATEOF'
squirrils monkeys dingos
_ATEOF


$at_traceoff
echo "$at_srcdir/t_revert.at:19: grep squirrils testfile0"
echo t_revert.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep squirrils testfile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep squirrils testfile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert testfile0"
echo t_revert.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert testfile0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert testfile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert testfile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:21: grep squirrils testfile0"
echo t_revert.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep squirrils testfile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep squirrils testfile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_revert.at:21: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

V2=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile0`
$at_traceoff
echo "$at_srcdir/t_revert.at:23: test \$V1 = \$V2"
echo t_revert.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $V1 = $V2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $V1 = $V2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $V1 = $V2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# check reverting the whole tree

cat >testfile0 <<'_ATEOF'
squirrils monkeys dingos
_ATEOF

$at_traceoff
echo "$at_srcdir/t_revert.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:31: grep testfile0 stdout"
echo t_revert.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile0 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile0 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert ."
echo t_revert.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:33: test ! -e _MTN/work"
echo t_revert.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e _MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e _MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:35: grep testfile0 stdout"
echo t_revert.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile0 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile0 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_revert.at:35: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# check reverting a delete

$at_traceoff
echo "$at_srcdir/t_revert.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop testfile0"
echo t_revert.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:41: grep testfile0 _MTN/work"
echo t_revert.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile0 _MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile0 _MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:43: grep testfile0 stdout"
echo t_revert.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile0 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile0 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:44: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert ."
echo t_revert.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:45: test ! -e _MTN/work"
echo t_revert.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e _MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e _MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:46: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:47: grep testfile0 stdout"
echo t_revert.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile0 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile0 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_revert.at:47: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# check reverting a change and a delete

$at_traceoff
echo "$at_srcdir/t_revert.at:52: echo 'liver and maude' >> testfile0"
echo t_revert.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo 'liver and maude' >> testfile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo 'liver and maude' >> testfile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:53: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop testfile0"
echo t_revert.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:54: grep testfile0 _MTN/work"
echo t_revert.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile0 _MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile0 _MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:55: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:56: grep testfile0 stdout"
echo t_revert.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile0 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile0 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:57: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert testfile0"
echo t_revert.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert testfile0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert testfile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert testfile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:58: test ! -e _MTN/work"
echo t_revert.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e _MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e _MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:59: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:60: grep testfile0 stdout"
echo t_revert.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile0 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile0 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_revert.at:60: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

V3=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile0`
$at_traceoff
echo "$at_srcdir/t_revert.at:62: test \$V1 = \$V3"
echo t_revert.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $V1 = $V3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $V1 = $V3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $V1 = $V3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check reverting an add

cat >testfile1 <<'_ATEOF'
squirrils monkeys dingos
_ATEOF

$at_traceoff
echo "$at_srcdir/t_revert.at:68: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile1"
echo t_revert.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:69: grep testfile1 _MTN/work"
echo t_revert.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile1 _MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile1 _MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:70: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:71: grep testfile1 stdout"
echo t_revert.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile1 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile1 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:72: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert ."
echo t_revert.at:72 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:72: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:73: test ! -e _MTN/work"
echo t_revert.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e _MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e _MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:73: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:74: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:75: grep testfile1 stdout"
echo t_revert.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile1 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile1 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_revert.at:75: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check reverting a directory

$at_traceoff
echo "$at_srcdir/t_revert.at:79: mkdir sub"
echo t_revert.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir sub ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir sub ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >sub/testfile2 <<'_ATEOF'
maude
_ATEOF

$at_traceoff
echo "$at_srcdir/t_revert.at:82: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add sub/testfile2"
echo t_revert.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add sub/testfile2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add sub/testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add sub/testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:83: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message='new file'"
echo t_revert.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message='new file'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message='new file' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message='new file' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >sub/testfile2 <<'_ATEOF'
liver
_ATEOF

$at_traceoff
echo "$at_srcdir/t_revert.at:86: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert.at:86 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:86: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:87: grep sub stdout"
echo t_revert.at:87 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep sub stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep sub stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:87: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:88: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert sub"
echo t_revert.at:88 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert sub" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert sub ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert sub ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:88: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:89: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:89: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:90: grep sub stdout"
echo t_revert.at:90 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep sub stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep sub stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_revert.at:90: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# it also shouldn't matter how we spell the subdirectory name
cat >sub/testfile2 <<'_ATEOF'
liver
_ATEOF

$at_traceoff
echo "$at_srcdir/t_revert.at:95: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert.at:95 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:95: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:96: grep sub stdout"
echo t_revert.at:96 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep sub stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep sub stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:96: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:97: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert sub/"
echo t_revert.at:97 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert sub/" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert sub/ ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert sub/ ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:97: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:98: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert.at:98 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:98: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:99: grep sub stdout"
echo t_revert.at:99 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep sub stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep sub stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_revert.at:99: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check reverting a missing file
$at_traceoff
echo "$at_srcdir/t_revert.at:102: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert ."
echo t_revert.at:102 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:102: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:103: rm testfile0"
echo t_revert.at:103 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm testfile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm testfile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:103: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:104: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert.at:104 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_revert.at:104: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:105: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert testfile0"
echo t_revert.at:105 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert testfile0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert testfile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert testfile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:105: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:106: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert.at:106 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:106: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check reverting some changes and leaving others

$at_traceoff
echo "$at_srcdir/t_revert.at:110: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert ."
echo t_revert.at:110 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:110: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:111: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert.at:111 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:111: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_revert.at:113: cp testfile0 foofile0"
echo t_revert.at:113 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp testfile0 foofile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp testfile0 foofile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:113: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:114: cp sub/testfile2 sub/foofile2"
echo t_revert.at:114 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp sub/testfile2 sub/foofile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp sub/testfile2 sub/foofile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:114: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_revert.at:116: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename testfile0 foofile0"
echo t_revert.at:116 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename testfile0 foofile0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename testfile0 foofile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename testfile0 foofile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:116: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:117: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename sub/testfile2 sub/foofile2"
echo t_revert.at:117 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename sub/testfile2 sub/foofile2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename sub/testfile2 sub/foofile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename sub/testfile2 sub/foofile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:117: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_revert.at:119: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert.at:119 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:119: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:120: grep foofile0 stdout"
echo t_revert.at:120 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foofile0 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foofile0 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:120: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:121: grep foofile2 stdout"
echo t_revert.at:121 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foofile2 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foofile2 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:121: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:122: test -e _MTN/work"
echo t_revert.at:122 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e _MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e _MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:122: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_revert.at:124: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert sub/foofile2"
echo t_revert.at:124 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert sub/foofile2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert sub/foofile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert sub/foofile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:124: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:125: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert.at:125 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:125: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:126: grep foofile0 stdout"
echo t_revert.at:126 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foofile0 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foofile0 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:126: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:127: grep foofile2 stdout"
echo t_revert.at:127 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foofile2 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foofile2 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_revert.at:127: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:128: test -e _MTN/work"
echo t_revert.at:128 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e _MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e _MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:128: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_revert.at:130: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert foofile0"
echo t_revert.at:130 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert foofile0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert foofile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert foofile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:130: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:131: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert.at:131 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:131: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:132: grep foofile0 stdout"
echo t_revert.at:132 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foofile0 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foofile0 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_revert.at:132: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:133: grep foofile2 stdout"
echo t_revert.at:133 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foofile2 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foofile2 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_revert.at:133: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert.at:134: test ! -e _MTN/work"
echo t_revert.at:134 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e _MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e _MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:134: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check that "revert" by itself just prints usage.
$at_traceoff
echo "$at_srcdir/t_revert.at:137: echo blah > foofile0"
echo t_revert.at:137 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo blah > foofile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo blah > foofile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:137: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

V1=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify foofile0`
$at_traceoff
echo "$at_srcdir/t_revert.at:139: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert"
echo t_revert.at:139 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_revert.at:139: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

V2=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify foofile0`
$at_traceoff
echo "$at_srcdir/t_revert.at:141: test \$V1 = \$V2"
echo t_revert.at:141 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $V1 = $V2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $V1 = $V2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $V1 = $V2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert.at:141: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  18 ) # 18. t_add.at:3: addition of files and directories
    at_setup_line='t_add.at:3'
    at_desc='addition of files and directories'
    $at_quiet $ECHO_N " 18: addition of files and directories            $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "18. t_add.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_add.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_add.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_add.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_add.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:5: rm test_keys"
echo t_add.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_add.at:7: mkdir dir"
echo t_add.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >file0 <<'_ATEOF'
file 0
_ATEOF

cat >dir/file1 <<'_ATEOF'
file 1
_ATEOF

cat >dir/file2 <<'_ATEOF'
file 2
_ATEOF


# adding a non-existent file should fail

$at_traceoff
echo "$at_srcdir/t_add.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foobar"
echo t_add.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foobar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foobar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foobar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_add.at:17: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# newly added files should appear as such

$at_traceoff
echo "$at_srcdir/t_add.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file0"
echo t_add.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:22: grep 'adding file0' stderr"
echo t_add.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'adding file0' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'adding file0' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add dir"
echo t_add.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:25: grep 'adding dir/file1' stderr"
echo t_add.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'adding dir/file1' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'adding dir/file1' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:26: grep 'adding dir/file2' stderr"
echo t_add.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'adding dir/file2' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'adding dir/file2' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_add.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:29: grep file0 stdout"
echo t_add.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file0 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file0 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:30: grep file1 stdout"
echo t_add.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file1 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file1 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:31: grep file2 stdout"
echo t_add.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file2 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file2 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'add files'"
echo t_add.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'add files'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'add files' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'add files' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# redundant additions should not appear
# (i.e. they should be ignored)

$at_traceoff
echo "$at_srcdir/t_add.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file0"
echo t_add.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:39: grep 'skipping file0' stderr"
echo t_add.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'skipping file0' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'skipping file0' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add dir"
echo t_add.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:42: grep 'skipping dir/file1' stderr"
echo t_add.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'skipping dir/file1' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'skipping dir/file1' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:43: grep 'skipping dir/file2' stderr"
echo t_add.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'skipping dir/file2' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'skipping dir/file2' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add.at:45: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_add.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:46: grep file0 stdout"
echo t_add.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file0 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file0 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_add.at:46: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:47: grep file1 stdout"
echo t_add.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file1 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file1 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_add.at:47: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:48: grep file2 stdout"
echo t_add.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file2 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file2 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_add.at:48: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# add --unknown should add any files that ls unknown shows you and not ignored

cat >file3 <<'_ATEOF'
file 3
_ATEOF

#AT_DATA(file4.ignore, [file 4 ignore
#])
cat >dir/file5 <<'_ATEOF'
file 5
_ATEOF

cat >dir/file6.ignore <<'_ATEOF'
file 6
_ATEOF

$at_traceoff
echo "$at_srcdir/t_add.at:60: mkdir dir2"
echo t_add.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir dir2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir dir2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >dir2/file7 <<'_ATEOF'
file 7
_ATEOF

#AT_DATA(.mtn-ignore, [.*\.ignore$
#])

#AT_CHECK(RAW_MTN ls unkown, [], [stdout], [ignore])

$at_traceoff
echo "$at_srcdir/t_add.at:68: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add --unknown"
echo t_add.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add --unknown" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add --unknown ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add --unknown ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:69: grep 'adding file3' stderr"
echo t_add.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'adding file3' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'adding file3' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

#AT_CHECK(grep 'adding file4.ignore' stderr, [1], [ignore])
$at_traceoff
echo "$at_srcdir/t_add.at:71: grep 'adding dir/file5' stderr"
echo t_add.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'adding dir/file5' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'adding dir/file5' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

#AT_CHECK(grep 'adding dir/file6.ignore' stderr, [1], [ignore])
$at_traceoff
echo "$at_srcdir/t_add.at:73: grep 'adding dir2' stderr"
echo t_add.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'adding dir2' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'adding dir2' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:73: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:74: grep 'adding dir2/file7' stderr"
echo t_add.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'adding dir2/file7' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'adding dir2/file7' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:75: grep 'skipping dir2/file7' stderr"
echo t_add.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'skipping dir2/file7' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'skipping dir2/file7' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_add.at:75: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:76: grep 'adding test_hooks.lua' stderr"
echo t_add.at:76 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'adding test_hooks.lua' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'adding test_hooks.lua' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_add.at:76: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add.at:78: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_add.at:78 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:78: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:79: grep file0 stdout"
echo t_add.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file0 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file0 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_add.at:79: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:80: grep file1 stdout"
echo t_add.at:80 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file1 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file1 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_add.at:80: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:81: grep file2 stdout"
echo t_add.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file2 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file2 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_add.at:81: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:82: grep file3 stdout"
echo t_add.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file3 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file3 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

#AT_CHECK(grep file4 stdout, [1], [ignore])
$at_traceoff
echo "$at_srcdir/t_add.at:84: grep file5 stdout"
echo t_add.at:84 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file5 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file5 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:84: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

#AT_CHECK(grep file6 stdout, [1], [ignore])

$at_traceoff
echo "$at_srcdir/t_add.at:87: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'add second set of files'"
echo t_add.at:87 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'add second set of files'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'add second set of files' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'add second set of files' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:87: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add.at:89: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_add.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add.at:89: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:90: grep file0 stdout"
echo t_add.at:90 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file0 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file0 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_add.at:90: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:91: grep file1 stdout"
echo t_add.at:91 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file1 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file1 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_add.at:91: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:92: grep file2 stdout"
echo t_add.at:92 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file2 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file2 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_add.at:92: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add.at:93: grep file3 stdout"
echo t_add.at:93 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file3 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file3 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_add.at:93: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

#AT_CHECK(grep file4 stdout, [1], [ignore])
$at_traceoff
echo "$at_srcdir/t_add.at:95: grep file5 stdout"
echo t_add.at:95 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file5 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file5 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_add.at:95: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

#AT_CHECK(grep file6 stdout, [1], [ignore])

      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  19 ) # 19. t_drop.at:3: add and then drop file does nothing
    at_setup_line='t_drop.at:3'
    at_desc='add and then drop file does nothing'
    $at_quiet $ECHO_N " 19: add and then drop file does nothing          $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "19. t_drop.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_drop.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_drop.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_drop.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_drop.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop.at:5: rm test_keys"
echo t_drop.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >maude <<'_ATEOF'
the file maude
_ATEOF


cat >liver <<'_ATEOF'
the file liver
_ATEOF


$at_traceoff
echo "$at_srcdir/t_drop.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add maude"
echo t_drop.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add maude" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add maude ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add maude ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop maude"
echo t_drop.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop maude" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop maude ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop maude ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_drop.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop.at:16: grep -v '_file' stdout"
echo t_drop.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep -v '_file' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep -v '_file' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_drop.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add liver"
echo t_drop.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add liver" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add liver ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add liver ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop liver"
echo t_drop.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop liver" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop liver ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop liver ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_drop.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop.at:21: grep -v '_file' stdout"
echo t_drop.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep -v '_file' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep -v '_file' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  20 ) # 20. t_drop_missing.at:3: drop missing and unknown files
    at_setup_line='t_drop_missing.at:3'
    at_desc='drop missing and unknown files'
    $at_quiet $ECHO_N " 20: drop missing and unknown files               $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "20. t_drop_missing.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_drop_missing.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_drop_missing.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_missing.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_missing.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_drop_missing.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_missing.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_missing.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_drop_missing.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_missing.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_missing.at:5: rm test_keys"
echo t_drop_missing.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_missing.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >maude <<'_ATEOF'
the file maude
_ATEOF

cat >harold <<'_ATEOF'
the file harold
_ATEOF

$at_traceoff
echo "$at_srcdir/t_drop_missing.at:11: mkdir places"
echo t_drop_missing.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir places ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir places ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_missing.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >places/cemetery <<'_ATEOF'
the place file cemetery
_ATEOF


$at_traceoff
echo "$at_srcdir/t_drop_missing.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add maude"
echo t_drop_missing.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add maude" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add maude ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add maude ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_missing.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_missing.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add harold"
echo t_drop_missing.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add harold" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add harold ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add harold ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_missing.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_missing.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add places/cemetery"
echo t_drop_missing.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add places/cemetery" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add places/cemetery ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add places/cemetery ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_missing.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_missing.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'committed'"
echo t_drop_missing.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'committed'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'committed' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'committed' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_missing.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_drop_missing.at:20: rm maude"
echo t_drop_missing.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm maude ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm maude ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_missing.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_drop_missing.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop maude"
echo t_drop_missing.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop maude" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop maude ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop maude ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_missing.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_missing.at:23: grep 'dropping maude from workspace manifest' stderr"
echo t_drop_missing.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'dropping maude from workspace manifest' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'dropping maude from workspace manifest' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_missing.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_drop_missing.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_drop_missing.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_missing.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_missing.at:26: grep maude stdout"
echo t_drop_missing.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep maude stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep maude stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_missing.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_missing.at:27: grep harold stdout"
echo t_drop_missing.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep harold stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep harold stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_drop_missing.at:27: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_missing.at:28: grep places/cemetery stdout"
echo t_drop_missing.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep places/cemetery stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep places/cemetery stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_drop_missing.at:28: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_drop_missing.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop foobar"
echo t_drop_missing.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop foobar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop foobar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop foobar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_missing.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_missing.at:31: grep 'skipping foobar' stderr"
echo t_drop_missing.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'skipping foobar' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'skipping foobar' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_missing.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_drop_missing.at:33: rm harold"
echo t_drop_missing.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm harold ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm harold ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_missing.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_missing.at:34: rm places/cemetery"
echo t_drop_missing.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm places/cemetery ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm places/cemetery ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_missing.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_drop_missing.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop --missing"
echo t_drop_missing.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop --missing" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop --missing ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop --missing ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_missing.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_missing.at:37: grep 'dropping harold from workspace manifest' stderr"
echo t_drop_missing.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'dropping harold from workspace manifest' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'dropping harold from workspace manifest' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_missing.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_missing.at:38: grep 'dropping places/cemetery from workspace manifest' stderr"
echo t_drop_missing.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'dropping places/cemetery from workspace manifest' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'dropping places/cemetery from workspace manifest' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_missing.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_drop_missing.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_drop_missing.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_missing.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_missing.at:41: grep maude stdout"
echo t_drop_missing.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep maude stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep maude stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_missing.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_missing.at:42: grep harold stdout"
echo t_drop_missing.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep harold stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep harold stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_missing.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_missing.at:43: grep places/cemetery stdout"
echo t_drop_missing.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep places/cemetery stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep places/cemetery stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_missing.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  21 ) # 21. t_cross.at:3: creating a bad criss-cross merge
    at_setup_line='t_cross.at:3'
    at_desc='creating a bad criss-cross merge'
    $at_quiet $ECHO_N " 21: creating a bad criss-cross merge             $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "21. t_cross.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_cross.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_cross.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cross.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_cross.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cross.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_cross.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cross.at:5: rm test_keys"
echo t_cross.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# this test demonstrates a tricky case in which two parties, bob and
# alice, merge a fork, left and right, differently. bob chooses the
# changes in the left node, alice chooses the changes in the right
# node.
#
# the result of merging their merges incorrectly succeeds, considering
# the LCA(bob,alice) as either foo or bar, and thereby seeing one of
# the edges (left->bob or right->alice) as having "no changes", and
# letting the edge "with changes" (right->bob, or left->alice) clobber
# it.
#
# this should be fixed so the merge-of-merges conflicts.

cat >shared.anc <<'_ATEOF'
base version data
_ATEOF

cat >shared.left <<'_ATEOF'
conflicting data on left side
_ATEOF

cat >shared.right <<'_ATEOF'
conflicting data on right side
_ATEOF

cat >specific.left <<'_ATEOF'
non-conflicting mergeable data on left side
_ATEOF

cat >specific.right <<'_ATEOF'
non-conflicting mergeable data on right side
_ATEOF

cat >specific.alice <<'_ATEOF'
non-conflicting mergeable data in bob
_ATEOF

cat >specific.bob <<'_ATEOF'
non-conflicting mergeable data in alice
_ATEOF


# this case is somewhat tricky to set up too... we use two different
# keys (bob and alice) that don't trust each other so that they can
# produce two different merge results

cat >bob.lua <<'_ATEOF'

function merge3(anc_path, left_path, right_path, merged_path, ancestor, left, right)
   return left
end

function get_passphrase(key) return "bob" end

function get_author(branch) return "bob" end

function get_revision_cert_trust(signers, id, name, val)
   for k,v in pairs(signers) do
        if (v ~= "alice") then return true end
   end
   return false
end
_ATEOF


cat >alice.lua <<'_ATEOF'

function merge3(anc_path, left_path, right_path, merged_path, ancestor, left, right)
   return right
end

function get_passphrase(key) return "alice" end

function get_author(branch) return "alice" end

function get_revision_cert_trust(signers, id, name, val)
   for k,v in pairs(signers) do
        if (v ~= "bob") then return true end
   end
   return false
end
_ATEOF





$at_traceoff
echo "$at_srcdir/t_cross.at:76: (echo \"bob\"; echo \"bob\") | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=test_hooks.lua --rcfile=bob.lua --nostd --norc --db=test.db --key=bob --keydir=keys genkey bob"
echo t_cross.at:76 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo \"bob\"; echo \"bob\") | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=test_hooks.lua --rcfile=bob.lua --nostd --norc --db=test.db --key=bob --keydir=keys genkey bob" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo "bob"; echo "bob") | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=test_hooks.lua --rcfile=bob.lua --nostd --norc --db=test.db --key=bob --keydir=keys genkey bob ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo "bob"; echo "bob") | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=test_hooks.lua --rcfile=bob.lua --nostd --norc --db=test.db --key=bob --keydir=keys genkey bob ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:76: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cross.at:77: (echo \"alice\"; echo \"alice\") | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=test_hooks.lua --rcfile=alice.lua --nostd --norc --db=test.db --key=alice --keydir=keys genkey alice"
echo t_cross.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo \"alice\"; echo \"alice\") | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=test_hooks.lua --rcfile=alice.lua --nostd --norc --db=test.db --key=alice --keydir=keys genkey alice" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo "alice"; echo "alice") | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=test_hooks.lua --rcfile=alice.lua --nostd --norc --db=test.db --key=alice --keydir=keys genkey alice ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo "alice"; echo "alice") | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=test_hooks.lua --rcfile=alice.lua --nostd --norc --db=test.db --key=alice --keydir=keys genkey alice ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# construct ancestor
$at_traceoff
echo "$at_srcdir/t_cross.at:80: cp shared.anc shared"
echo t_cross.at:80 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp shared.anc shared ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp shared.anc shared ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:80: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cross.at:81: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add shared"
echo t_cross.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add shared" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add shared ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add shared ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:81: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cross.at:82: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=ancestor"
echo t_cross.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=ancestor" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=ancestor ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=ancestor ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

ROOT_R_SHA=`cat _MTN/revision`
ROOT_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify shared`

# construct left node
$at_traceoff
echo "$at_srcdir/t_cross.at:87: cp shared.left shared"
echo t_cross.at:87 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp shared.left shared ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp shared.left shared ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:87: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cross.at:88: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add specific.left"
echo t_cross.at:88 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add specific.left" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add specific.left ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add specific.left ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:88: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cross.at:89: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=left"
echo t_cross.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=left" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=left ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=left ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:89: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

LEFT_R_SHA=`cat _MTN/revision`
LEFT_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify shared`
$at_traceoff
echo "$at_srcdir/t_cross.at:92: test \$LEFT_R_SHA != \$ROOT_R_SHA"
echo t_cross.at:92 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $LEFT_R_SHA != $ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $LEFT_R_SHA != $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $LEFT_R_SHA != $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:92: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cross.at:93: test \$LEFT_F_SHA != \$ROOT_F_SHA"
echo t_cross.at:93 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $LEFT_F_SHA != $ROOT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $LEFT_F_SHA != $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $LEFT_F_SHA != $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:93: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# revert to root

$at_traceoff
echo "$at_srcdir/t_cross.at:96: rm -rf _MTN.old"
echo t_cross.at:96 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:96: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cross.at:96: mv  _MTN _MTN.old"
echo t_cross.at:96 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:96: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cross.at:96: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$ROOT_R_SHA ."
echo t_cross.at:96 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:96: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_cross.at:96: test \$PROBE_R_SHA = \$ROOT_R_SHA"
echo t_cross.at:96 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:96: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# construct right node
$at_traceoff
echo "$at_srcdir/t_cross.at:99: cp shared.right shared"
echo t_cross.at:99 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp shared.right shared ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp shared.right shared ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:99: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cross.at:100: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add specific.right"
echo t_cross.at:100 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add specific.right" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add specific.right ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add specific.right ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:100: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cross.at:101: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=right"
echo t_cross.at:101 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=right" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=right ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=right ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:101: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

RIGHT_R_SHA=`cat _MTN/revision`
RIGHT_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify shared`
$at_traceoff
echo "$at_srcdir/t_cross.at:104: test \$RIGHT_R_SHA != \$ROOT_R_SHA"
echo t_cross.at:104 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $RIGHT_R_SHA != $ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $RIGHT_R_SHA != $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $RIGHT_R_SHA != $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:104: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cross.at:105: test \$RIGHT_F_SHA != \$ROOT_F_SHA"
echo t_cross.at:105 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $RIGHT_F_SHA != $ROOT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $RIGHT_F_SHA != $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $RIGHT_F_SHA != $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:105: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cross.at:106: test \$RIGHT_R_SHA != \$LEFT_R_SHA"
echo t_cross.at:106 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $RIGHT_R_SHA != $LEFT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $RIGHT_R_SHA != $LEFT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $RIGHT_R_SHA != $LEFT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:106: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cross.at:107: test \$RIGHT_F_SHA != \$LEFT_F_SHA"
echo t_cross.at:107 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $RIGHT_F_SHA != $LEFT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $RIGHT_F_SHA != $LEFT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $RIGHT_F_SHA != $LEFT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:107: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# construct alice, a merge choosing the right side to win
$at_traceoff
echo "$at_srcdir/t_cross.at:110: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=test_hooks.lua --rcfile=alice.lua --nostd --norc --db=test.db --key=alice --keydir=keys merge"
echo t_cross.at:110 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=test_hooks.lua --rcfile=alice.lua --nostd --norc --db=test.db --key=alice --keydir=keys merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=test_hooks.lua --rcfile=alice.lua --nostd --norc --db=test.db --key=alice --keydir=keys merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=test_hooks.lua --rcfile=alice.lua --nostd --norc --db=test.db --key=alice --keydir=keys merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:110: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# construct bob, a merge choosing the left side to win
$at_traceoff
echo "$at_srcdir/t_cross.at:113: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=test_hooks.lua --rcfile=bob.lua --nostd --norc --db=test.db --key=bob --keydir=keys merge"
echo t_cross.at:113 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=test_hooks.lua --rcfile=bob.lua --nostd --norc --db=test.db --key=bob --keydir=keys merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=test_hooks.lua --rcfile=bob.lua --nostd --norc --db=test.db --key=bob --keydir=keys merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=test_hooks.lua --rcfile=bob.lua --nostd --norc --db=test.db --key=bob --keydir=keys merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cross.at:113: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# now merge the merges. this *should* fail.
# because there are conflicting changes and
# we have no merge3 hook to fall back on

$at_traceoff
echo "$at_srcdir/t_cross.at:119: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge"
echo t_cross.at:119 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_cross.at:119: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  22 ) # 22. t_rename.at:3: renaming a file
    at_setup_line='t_rename.at:3'
    at_desc='renaming a file'
    $at_quiet $ECHO_N " 22: renaming a file                              $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "22. t_rename.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_rename.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_rename.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_rename.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_rename.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:5: rm test_keys"
echo t_rename.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo <<'_ATEOF'
foo file
_ATEOF

cat >bleh <<'_ATEOF'
bleh file
_ATEOF


# produce root
$at_traceoff
echo "$at_srcdir/t_rename.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_rename.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah"
echo t_rename.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

ROOT_R_SHA=`cat _MTN/revision`
ROOT_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify foo`

# produce move edge
$at_traceoff
echo "$at_srcdir/t_rename.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename foo bar"
echo t_rename.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:20: cp foo bar"
echo t_rename.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foo bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foo bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah"
echo t_rename.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# revert to root

$at_traceoff
echo "$at_srcdir/t_rename.at:24: rm -rf _MTN.old"
echo t_rename.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:24: mv  _MTN _MTN.old"
echo t_rename.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:24: rm foo"
echo t_rename.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$ROOT_R_SHA ."
echo t_rename.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:24: mv _MTN.old/options _MTN"
echo t_rename.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
PROBE_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify foo`
$at_traceoff
echo "$at_srcdir/t_rename.at:24: test \$PROBE_R_SHA = \$ROOT_R_SHA"
echo t_rename.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:24: test \$PROBE_F_SHA = \$ROOT_F_SHA"
echo t_rename.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_F_SHA = $ROOT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_F_SHA = $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_F_SHA = $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename.at:25: rm bar"
echo t_rename.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# make a simple add edge
$at_traceoff
echo "$at_srcdir/t_rename.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add bleh"
echo t_rename.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bleh" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bleh ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bleh ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah"
echo t_rename.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# merge the add and the rename
$at_traceoff
echo "$at_srcdir/t_rename.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge"
echo t_rename.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_rename.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of"
echo t_rename.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   *);;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:35: mv stdout manifest"
echo t_rename.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:36: grep bar manifest"
echo t_rename.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep bar manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep bar manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:37: grep bleh manifest"
echo t_rename.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep bleh manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep bleh manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# rename a rename target
$at_traceoff
echo "$at_srcdir/t_rename.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename bleh blah"
echo t_rename.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename bleh blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename bleh blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename bleh blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:41: grep bleh _MTN/work"
echo t_rename.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep bleh _MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep bleh _MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:42: grep blah _MTN/work"
echo t_rename.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep blah _MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep blah _MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename blah blyh"
echo t_rename.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename blah blyh" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename blah blyh ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename blah blyh ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:44: grep bleh _MTN/work"
echo t_rename.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep bleh _MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep bleh _MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:45: grep blah _MTN/work"
echo t_rename.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep blah _MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep blah _MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_rename.at:45: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:46: grep blyh _MTN/work"
echo t_rename.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep blyh _MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep blyh _MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# undo a rename
$at_traceoff
echo "$at_srcdir/t_rename.at:49: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename blyh bleh"
echo t_rename.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename blyh bleh" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename blyh bleh ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename blyh bleh ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:50: test -f _MTN/work"
echo t_rename.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f _MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f _MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_rename.at:50: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# move file before renaming it
$at_traceoff
echo "$at_srcdir/t_rename.at:53: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_rename.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:54: mv bar barfoo"
echo t_rename.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv bar barfoo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv bar barfoo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:55: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename bar barfoo"
echo t_rename.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename bar barfoo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename bar barfoo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename bar barfoo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:56: grep 'renaming bar to barfoo in workspace manifest' stderr"
echo t_rename.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'renaming bar to barfoo in workspace manifest' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'renaming bar to barfoo in workspace manifest' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:57: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_rename.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# move file to wrong place before renaming it
$at_traceoff
echo "$at_srcdir/t_rename.at:60: mv barfoo bar"
echo t_rename.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv barfoo bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv barfoo bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:61: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert ."
echo t_rename.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:62: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_rename.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:63: mv bar barfoofoo"
echo t_rename.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv bar barfoofoo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv bar barfoofoo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:64: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename bar barfoo"
echo t_rename.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename bar barfoo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename bar barfoo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename bar barfoo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:64: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:65: grep 'renaming bar to barfoo in workspace manifest' stderr"
echo t_rename.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'renaming bar to barfoo in workspace manifest' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'renaming bar to barfoo in workspace manifest' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename.at:66: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_rename.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_rename.at:66: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  23 ) # 23. t_renamed.at:3: renaming a directory
    at_setup_line='t_renamed.at:3'
    at_desc='renaming a directory'
    $at_quiet $ECHO_N " 23: renaming a directory                         $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "23. t_renamed.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_renamed.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_renamed.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_renamed.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_renamed.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_renamed.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_renamed.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_renamed.at:5: rm test_keys"
echo t_renamed.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_renamed.at:7: mkdir foo"
echo t_renamed.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >foo/foo <<'_ATEOF'
foo file
_ATEOF

cat >bleh <<'_ATEOF'
bleh file
_ATEOF


# produce root
$at_traceoff
echo "$at_srcdir/t_renamed.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_renamed.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_renamed.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah"
echo t_renamed.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

ROOT_R_SHA=`cat _MTN/revision`
ROOT_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify foo/foo`

# produce move edge
$at_traceoff
echo "$at_srcdir/t_renamed.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename foo bar"
echo t_renamed.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_renamed.at:22: cp -pr foo bar"
echo t_renamed.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -pr foo bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -pr foo bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_renamed.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah"
echo t_renamed.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# revert to root

$at_traceoff
echo "$at_srcdir/t_renamed.at:26: rm -rf _MTN.old"
echo t_renamed.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_renamed.at:26: mv  _MTN _MTN.old"
echo t_renamed.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_renamed.at:26: rm foo/foo"
echo t_renamed.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm foo/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm foo/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_renamed.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$ROOT_R_SHA ."
echo t_renamed.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_renamed.at:26: mv _MTN.old/options _MTN"
echo t_renamed.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
PROBE_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify foo/foo`
$at_traceoff
echo "$at_srcdir/t_renamed.at:26: test \$PROBE_R_SHA = \$ROOT_R_SHA"
echo t_renamed.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_renamed.at:26: test \$PROBE_F_SHA = \$ROOT_F_SHA"
echo t_renamed.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_F_SHA = $ROOT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_F_SHA = $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_F_SHA = $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_renamed.at:27: rm -Rf bar"
echo t_renamed.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -Rf bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -Rf bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# make an add *into the directory*
cat >foo/bar <<'_ATEOF'
bar file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_renamed.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo/bar"
echo t_renamed.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_renamed.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah"
echo t_renamed.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# merge the add and the rename
$at_traceoff
echo "$at_srcdir/t_renamed.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge"
echo t_renamed.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_renamed.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_renamed.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_renamed.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of"
echo t_renamed.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   *);;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_renamed.at:39: mv stdout manifest"
echo t_renamed.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_renamed.at:40: grep bar/bar manifest"
echo t_renamed.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep bar/bar manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep bar/bar manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_renamed.at:41: grep bar/foo manifest"
echo t_renamed.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep bar/foo manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep bar/foo manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_renamed.at:42: grep foo/bar manifest"
echo t_renamed.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foo/bar manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foo/bar manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_renamed.at:42: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_renamed.at:43: grep foo/foo manifest"
echo t_renamed.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foo/foo manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foo/foo manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_renamed.at:43: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_renamed.at:44: test -e bar/bar"
echo t_renamed.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e bar/bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e bar/bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_renamed.at:45: test -e bar/foo"
echo t_renamed.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e bar/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e bar/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_renamed.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  24 ) # 24. t_erename.at:3: renaming and editing a file
    at_setup_line='t_erename.at:3'
    at_desc='renaming and editing a file'
    $at_quiet $ECHO_N " 24: renaming and editing a file                  $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "24. t_erename.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_erename.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_erename.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_erename.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_erename.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_erename.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_erename.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_erename.at:5: rm test_keys"
echo t_erename.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo1 <<'_ATEOF'
foo file 1
_ATEOF

cat >foo2 <<'_ATEOF'
foo file 2
_ATEOF

cat >bar1 <<'_ATEOF'
bar file 1
_ATEOF

cat >bar2 <<'_ATEOF'
bar file 2
_ATEOF

cat >bleh <<'_ATEOF'
bleh file
_ATEOF


# produce root
$at_traceoff
echo "$at_srcdir/t_erename.at:19: cp foo1 foo"
echo t_erename.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foo1 foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foo1 foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_erename.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_erename.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_erename.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=root"
echo t_erename.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=root" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=root ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=root ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

ROOT_R_SHA=`cat _MTN/revision`
ROOT_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify foo`

# produce 4-step path with move in the middle
$at_traceoff
echo "$at_srcdir/t_erename.at:26: cp foo2 foo"
echo t_erename.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foo2 foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foo2 foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_erename.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=edit-foo"
echo t_erename.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=edit-foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=edit-foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=edit-foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_erename.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename foo bar"
echo t_erename.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_erename.at:29: cp bar1 bar"
echo t_erename.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp bar1 bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp bar1 bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_erename.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=rename-to-bar"
echo t_erename.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=rename-to-bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=rename-to-bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=rename-to-bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_erename.at:31: cp bar2 bar"
echo t_erename.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp bar2 bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp bar2 bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_erename.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=edit-bar"
echo t_erename.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=edit-bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=edit-bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=edit-bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# revert to root

$at_traceoff
echo "$at_srcdir/t_erename.at:35: rm -rf _MTN.old"
echo t_erename.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_erename.at:35: mv  _MTN _MTN.old"
echo t_erename.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_erename.at:35: rm foo"
echo t_erename.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_erename.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$ROOT_R_SHA ."
echo t_erename.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_erename.at:35: mv _MTN.old/options _MTN"
echo t_erename.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
PROBE_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify foo`
$at_traceoff
echo "$at_srcdir/t_erename.at:35: test \$PROBE_R_SHA = \$ROOT_R_SHA"
echo t_erename.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_erename.at:35: test \$PROBE_F_SHA = \$ROOT_F_SHA"
echo t_erename.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_F_SHA = $ROOT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_F_SHA = $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_F_SHA = $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_erename.at:36: rm bar"
echo t_erename.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# make a simple add edge
$at_traceoff
echo "$at_srcdir/t_erename.at:39: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add bleh"
echo t_erename.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bleh" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bleh ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bleh ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_erename.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah"
echo t_erename.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# merge the add and the rename
$at_traceoff
echo "$at_srcdir/t_erename.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge"
echo t_erename.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_erename.at:44: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_erename.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_erename.at:45: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of"
echo t_erename.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   *);;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_erename.at:46: mv stdout manifest"
echo t_erename.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_erename.at:47: grep bar manifest"
echo t_erename.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep bar manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep bar manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_erename.at:48: grep bleh manifest"
echo t_erename.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep bleh manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep bleh manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_erename.at:49: grep foo manifest"
echo t_erename.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foo manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foo manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_erename.at:49: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# now the moment of truth: do we *think* there was a rename?
$at_traceoff
echo "$at_srcdir/t_erename.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff --revision \$ROOT_R_SHA"
echo t_erename.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision $ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_erename.at:53: grep rename stdout"
echo t_erename.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep rename stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep rename stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_erename.at:55: rm bar"
echo t_erename.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_erename.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  25 ) # 25. t_cvsimport.at:3: importing CVS files
    at_setup_line='t_cvsimport.at:3'
    at_desc='importing CVS files'
    $at_quiet $ECHO_N " 25: importing CVS files                          $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "25. t_cvsimport.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_cvsimport.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_cvsimport.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_cvsimport.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_cvsimport.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport.at:5: rm test_keys"
echo t_cvsimport.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >importme.0 <<'_ATEOF'
version 0 of test file
_ATEOF


cat >importme.1 <<'_ATEOF'
version 1 of test file
_ATEOF


cat >importme.2 <<'_ATEOF'
version 2 of test file
_ATEOF


cat >importme.3 <<'_ATEOF'
version 3 of test file
_ATEOF


TSHA0=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify importme.0`
TSHA1=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify importme.1`
TSHA2=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify importme.2`
TSHA3=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify importme.3`

# build the cvs repository

CVSROOT=`pwd`/cvs-repository
$at_traceoff
echo "$at_srcdir/t_cvsimport.at:27: cvs -q -d \$CVSROOT init"
echo t_cvsimport.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -q -d $CVSROOT init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -q -d $CVSROOT init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -q -d $CVSROOT init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport.at:28: test -e \$CVSROOT"
echo t_cvsimport.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test -e $CVSROOT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e $CVSROOT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e $CVSROOT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport.at:29: test -e \$CVSROOT/CVSROOT"
echo t_cvsimport.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test -e $CVSROOT/CVSROOT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e $CVSROOT/CVSROOT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e $CVSROOT/CVSROOT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport.at:30: test -e \$CVSROOT/CVSROOT/modules"
echo t_cvsimport.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test -e $CVSROOT/CVSROOT/modules" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e $CVSROOT/CVSROOT/modules ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e $CVSROOT/CVSROOT/modules ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check out the workspace and make some commits

$at_traceoff
echo "$at_srcdir/t_cvsimport.at:34: cvs -d \$CVSROOT co ."
echo t_cvsimport.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT co ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT co . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT co . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport.at:35: mkdir testdir"
echo t_cvsimport.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir testdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir testdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport.at:36: cp importme.0 testdir/importme"
echo t_cvsimport.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp importme.0 testdir/importme ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp importme.0 testdir/importme ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport.at:37: cvs -d \$CVSROOT add testdir"
echo t_cvsimport.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT add testdir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT add testdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT add testdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport.at:38: cvs -d \$CVSROOT add testdir/importme"
echo t_cvsimport.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT add testdir/importme" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT add testdir/importme ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT add testdir/importme ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport.at:39: cvs -d \$CVSROOT commit -m 'commit 0' testdir/importme"
echo t_cvsimport.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT commit -m 'commit 0' testdir/importme" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT commit -m 'commit 0' testdir/importme ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT commit -m 'commit 0' testdir/importme ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport.at:40: cp importme.1 testdir/importme"
echo t_cvsimport.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp importme.1 testdir/importme ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp importme.1 testdir/importme ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport.at:41: cvs -d \$CVSROOT commit -m 'commit 1' testdir/importme"
echo t_cvsimport.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT commit -m 'commit 1' testdir/importme" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT commit -m 'commit 1' testdir/importme ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT commit -m 'commit 1' testdir/importme ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport.at:42: cp importme.2 testdir/importme"
echo t_cvsimport.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp importme.2 testdir/importme ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp importme.2 testdir/importme ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport.at:43: cvs -d \$CVSROOT commit -m 'commit 2' testdir/importme"
echo t_cvsimport.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT commit -m 'commit 2' testdir/importme" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT commit -m 'commit 2' testdir/importme ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT commit -m 'commit 2' testdir/importme ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport.at:44: cp importme.3 testdir/importme"
echo t_cvsimport.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp importme.3 testdir/importme ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp importme.3 testdir/importme ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport.at:45: cvs -d \$CVSROOT commit -m 'commit 3' testdir/importme"
echo t_cvsimport.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT commit -m 'commit 3' testdir/importme" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT commit -m 'commit 3' testdir/importme ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT commit -m 'commit 3' testdir/importme ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# import into monotone and check presence of files

# safety check -- we stop people from accidentally feeding their whole
# repo to cvs_import instead of just a module.
$at_traceoff
echo "$at_srcdir/t_cvsimport.at:51: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch cvs_import \$CVSROOT"
echo t_cvsimport.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch cvs_import $CVSROOT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch cvs_import $CVSROOT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch cvs_import $CVSROOT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_cvsimport.at:51: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch cvs_import \$CVSROOT/testdir"
echo t_cvsimport.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch cvs_import $CVSROOT/testdir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch cvs_import $CVSROOT/testdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch cvs_import $CVSROOT/testdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport.at:53: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_file \$TSHA0"
echo t_cvsimport.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport.at:54: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_file \$TSHA1"
echo t_cvsimport.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport.at:55: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_file \$TSHA2"
echo t_cvsimport.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport.at:56: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_file \$TSHA3"
echo t_cvsimport.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# also check that history is okay -- has a unique head, and it's the
# right one.

$at_traceoff
echo "$at_srcdir/t_cvsimport.at:61: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch mtcodir"
echo t_cvsimport.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch mtcodir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch mtcodir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch mtcodir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport.at:62: cmp importme.3 mtcodir/importme"
echo t_cvsimport.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp importme.3 mtcodir/importme ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp importme.3 mtcodir/importme ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  26 ) # 26. t_i18n_file.at:3: importing files with non-english names
    at_setup_line='t_i18n_file.at:3'
    at_desc='importing files with non-english names'
    $at_quiet $ECHO_N " 26: importing files with non-english names       $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "26. t_i18n_file.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_i18n_file.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_i18n_file.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_i18n_file.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_i18n_file.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:5: rm test_keys"
echo t_i18n_file.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



EUROPEAN_UTF8=`printf "\xC3\xB6\xC3\xA4\xC3\xBc\xC3\x9F"`
EUROPEAN_8859_1=`printf "\xF6\xE4\xFC\xDF"`

JAPANESE_UTF8=`printf "\xE3\x81\xA6\xE3\x81\x99\xE3\x81\xA8"`
JAPANESE_EUC_JP=`printf "\xA4\xC6\xA4\xB9\xA4\xC8"`

if test "$OSTYPE" = "msys"; then
  FUNNY_FILENAME="file+name-with_funny@symbols%etc"
else
  FUNNY_FILENAME="file+name-with_funny@symbols%etc:"
fi

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:19: mkdir weird utf8 8859-1 euc"
echo t_i18n_file.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir weird utf8 8859-1 euc ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir weird utf8 8859-1 euc ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:20: touch \"weird/file name with spaces\""
echo t_i18n_file.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; touch "weird/file name with spaces" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; touch "weird/file name with spaces" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:21: touch \"weird/\$FUNNY_FILENAME\""
echo t_i18n_file.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "touch \"weird/$FUNNY_FILENAME\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; touch "weird/$FUNNY_FILENAME" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; touch "weird/$FUNNY_FILENAME" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:22: touch \"utf8/\$EUROPEAN_UTF8\""
echo t_i18n_file.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "touch \"utf8/$EUROPEAN_UTF8\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; touch "utf8/$EUROPEAN_UTF8" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; touch "utf8/$EUROPEAN_UTF8" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:23: touch \"utf8/\$JAPANESE_UTF8\""
echo t_i18n_file.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "touch \"utf8/$JAPANESE_UTF8\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; touch "utf8/$JAPANESE_UTF8" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; touch "utf8/$JAPANESE_UTF8" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


if test `uname` != "Darwin"; then
	$at_traceoff
echo "$at_srcdir/t_i18n_file.at:26: touch \"8859-1/\$EUROPEAN_8859_1\""
echo t_i18n_file.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "touch \"8859-1/$EUROPEAN_8859_1\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; touch "8859-1/$EUROPEAN_8859_1" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; touch "8859-1/$EUROPEAN_8859_1" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

	$at_traceoff
echo "$at_srcdir/t_i18n_file.at:27: touch \"euc/\$JAPANESE_EUC_JP\""
echo t_i18n_file.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "touch \"euc/$JAPANESE_EUC_JP\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; touch "euc/$JAPANESE_EUC_JP" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; touch "euc/$JAPANESE_EUC_JP" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

fi

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add \"weird/file name with spaces\""
echo t_i18n_file.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add \"weird/file name with spaces\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add "weird/file name with spaces" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add "weird/file name with spaces" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add \"weird/\$FUNNY_FILENAME\""
echo t_i18n_file.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add \"weird/$FUNNY_FILENAME\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add "weird/$FUNNY_FILENAME" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add "weird/$FUNNY_FILENAME" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# add some files with UTF8 names
export LANG=en_US.utf-8
export CHARSET=UTF-8
$at_traceoff
echo "$at_srcdir/t_i18n_file.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add \"utf8/\$EUROPEAN_UTF8\""
echo t_i18n_file.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add \"utf8/$EUROPEAN_UTF8\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add "utf8/$EUROPEAN_UTF8" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add "utf8/$EUROPEAN_UTF8" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add \"utf8/\$JAPANESE_UTF8\""
echo t_i18n_file.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add \"utf8/$JAPANESE_UTF8\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add "utf8/$JAPANESE_UTF8" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add "utf8/$JAPANESE_UTF8" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_i18n_file.at:39: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'adding european and japanese names in UTF-8'"
echo t_i18n_file.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'adding european and japanese names in UTF-8'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'adding european and japanese names in UTF-8' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'adding european and japanese names in UTF-8' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check the names showed up in our manifest

export LANG=en_US.UTF-8
export CHARSET=UTF-8

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:46: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of"
echo t_i18n_file.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:47: mv stdout manifest"
echo t_i18n_file.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:48: grep funny manifest"
echo t_i18n_file.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep funny manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep funny manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:49: grep spaces manifest"
echo t_i18n_file.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep spaces manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep spaces manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:50: grep \$JAPANESE_UTF8 manifest"
echo t_i18n_file.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $JAPANESE_UTF8 manifest" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $JAPANESE_UTF8 manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $JAPANESE_UTF8 manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:51: grep \$EUROPEAN_UTF8 manifest"
echo t_i18n_file.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $EUROPEAN_UTF8 manifest" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $EUROPEAN_UTF8 manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $EUROPEAN_UTF8 manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# okay, now we try in two different locales.  monotone is happy to
# have arbirary utf8 filenames in it, but these locales don't support
# arbitrary utf8 -- you have to use a utf8 locale if you want to put
# filenames on your disk in utf8.  if we keep all the utf8 files in
# the tree, then, monotone will attempt to convert them to the current
# locale, and fail miserably.  so get rid of them first.

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:60: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop \"utf8/\$EUROPEAN_UTF8\" \"utf8/\$JAPANESE_UTF8\""
echo t_i18n_file.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop \"utf8/$EUROPEAN_UTF8\" \"utf8/$JAPANESE_UTF8\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop "utf8/$EUROPEAN_UTF8" "utf8/$JAPANESE_UTF8" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop "utf8/$EUROPEAN_UTF8" "utf8/$JAPANESE_UTF8" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:61: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'cleaning up utf8 files'"
echo t_i18n_file.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'cleaning up utf8 files'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'cleaning up utf8 files' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'cleaning up utf8 files' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# OS X expects data passed to the OS to be utf8, so these tests don't make
# sense.
if test `uname` != "Darwin"; then
	# now try iso-8859-1

	export LANG=de_DE.iso-8859-1
	export CHARSET=iso-8859-1
	$at_traceoff
echo "$at_srcdir/t_i18n_file.at:70: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add \"8859-1/\$EUROPEAN_8859_1\""
echo t_i18n_file.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add \"8859-1/$EUROPEAN_8859_1\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add "8859-1/$EUROPEAN_8859_1" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add "8859-1/$EUROPEAN_8859_1" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


	$at_traceoff
echo "$at_srcdir/t_i18n_file.at:72: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'adding european name in ISO 8859-1'"
echo t_i18n_file.at:72 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'adding european name in ISO 8859-1'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'adding european name in ISO 8859-1' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'adding european name in ISO 8859-1' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:72: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

fi

# check the names showed up in our manifest

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:77: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of"
echo t_i18n_file.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:78: mv stdout manifest"
echo t_i18n_file.at:78 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:78: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:79: grep funny manifest"
echo t_i18n_file.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep funny manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep funny manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:80: grep spaces manifest"
echo t_i18n_file.at:80 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep spaces manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep spaces manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:80: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

if test `uname` != "Darwin"; then
  $at_traceoff
echo "$at_srcdir/t_i18n_file.at:82: grep \"8859-1/\$EUROPEAN_UTF8\" manifest"
echo t_i18n_file.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"8859-1/$EUROPEAN_UTF8\" manifest" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "8859-1/$EUROPEAN_UTF8" manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "8859-1/$EUROPEAN_UTF8" manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

fi

# okay, clean up again

if test `uname` != "Darwin"; then
	$at_traceoff
echo "$at_srcdir/t_i18n_file.at:88: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop \"8859-1/\$EUROPEAN_8859_1\""
echo t_i18n_file.at:88 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop \"8859-1/$EUROPEAN_8859_1\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop "8859-1/$EUROPEAN_8859_1" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop "8859-1/$EUROPEAN_8859_1" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:88: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

	$at_traceoff
echo "$at_srcdir/t_i18n_file.at:89: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'cleaning up 8859-1 files'"
echo t_i18n_file.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'cleaning up 8859-1 files'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'cleaning up 8859-1 files' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'cleaning up 8859-1 files' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:89: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

fi

# now try euc

if test `uname` != "Darwin"; then
	export LANG=ja_JP.euc-jp
	export CHARSET=euc-jp
	$at_traceoff
echo "$at_srcdir/t_i18n_file.at:97: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add \"euc/\$JAPANESE_EUC_JP\""
echo t_i18n_file.at:97 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add \"euc/$JAPANESE_EUC_JP\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add "euc/$JAPANESE_EUC_JP" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add "euc/$JAPANESE_EUC_JP" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:97: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


	$at_traceoff
echo "$at_srcdir/t_i18n_file.at:99: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'adding japanese name in EUC-JP'"
echo t_i18n_file.at:99 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'adding japanese name in EUC-JP'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'adding japanese name in EUC-JP' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'adding japanese name in EUC-JP' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:99: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

fi

# check the names showed up in our manifest

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:104: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of"
echo t_i18n_file.at:104 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:104: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:105: mv stdout manifest"
echo t_i18n_file.at:105 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:105: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:106: grep funny manifest"
echo t_i18n_file.at:106 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep funny manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep funny manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:106: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file.at:107: grep spaces manifest"
echo t_i18n_file.at:107 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep spaces manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep spaces manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:107: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

if test `uname` != "Darwin"; then
	$at_traceoff
echo "$at_srcdir/t_i18n_file.at:109: grep \"euc/\$JAPANESE_UTF8\" manifest"
echo t_i18n_file.at:109 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"euc/$JAPANESE_UTF8\" manifest" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "euc/$JAPANESE_UTF8" manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "euc/$JAPANESE_UTF8" manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file.at:109: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

fi

      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  27 ) # 27. t_fmerge.at:3: external unit test of the line merger
    at_setup_line='t_fmerge.at:3'
    at_desc='external unit test of the line merger'
    $at_quiet $ECHO_N " 27: external unit test of the line merger        $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "27. t_fmerge.at:3: testing ..."
      $at_traceon


DIFF3=`which diff3 2>/dev/null`
if test -z "$DIFF3" ; then
  exit 77
fi



if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_fmerge.at:10: echo \$UNB64_COMMAND"
echo t_fmerge.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test -n "`command -v gunzip`" 2>/dev/null; then
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  UNGZ_COMMAND="gunzip -c"
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_fmerge.at:10: echo \$UNGZ_COMMAND"
echo t_fmerge.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNGZ_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon






# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_fmerge.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_fmerge.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fmerge.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_fmerge.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fmerge.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_fmerge.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fmerge.at:12: rm test_keys"
echo t_fmerge.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >left.gz.enc <<'_ATEOF'
H4sICOXi9D8CA2xlZnQA7Vr7c9vGEf5Z/CvO9MQGbQp+xM1MLVmNLCuOJoqlMeWkHceDAYEj
iQrEsXhIYhz3b++3ew8c+LCVtJ3pD/XYJnC3t7e3t/vtg7ybFUnepFLsZ6qqSxnPD3p33RhG
smLqj8zjxUHPe69lOcfKcOYTNUVW1Wl3TLOiMW9wrLDpo2oWlzKNFnUZzhYd9v2kXC5qtVg8
isvkWTjrb5oax5X8ZtvkTN5smeGHPBtvmVZVSeJunIPAW2bKimf8KVVUdVzUUFFnyaVcrg7l
TbwyUpdxUU1UOV8lreIiq5c82Hv0SCRqsSyz6awWwdFAPH38+OmQ/v9aTMt4mapCzBRULPbN
67cLNVY3YaJw2Vgd57ng1ZUoZSXLK5mGNJ5niSwqmYpaiXomxaIZY0g0RSpLHqDLr4Sa8Mvr
N+/E6/NTERy8EE8HtL6SkmcmWS7F0dn5307evBY4jUhlHWd5xaKDAJJdZ5BhUapxPM6XRCOv
sMdYinEzrURWgCyrmFEosvp+JTC9pOUwHZZvKmt9hqFYqLJmNnGRQoakKWW+DEWlyhJjY9XU
4BbXYa/XVDBJUcRzWS3iBDLyNZ6f763NwJz3LD0b7fPnrdViBldcQzVXKktFqiKy1mAkk5fL
Wr7MVXIp7onFrIShDns7OwJ/VifjZa7idND72BPiNPgu6JdNUdBuxIo0k8gKqi7EV6kYYyGr
PY3r+JeiPxBfWQZhlf0qg8FgD2wO3x49E/GzQG8cEnEwGBo5fML4WXiuNxixkwaWmVuyyvxT
98SADSgirirNO4AhRzOlLiucDM90Zj40vCOC3S/irIywjF0DJBjKUke0UW1aMRpDiGWkh6F5
IWAF1zBOAqKa7a2pyD4VxMrjG20BcBZBhjaE8kQSJzNWrWhlFkE20bzAYWm5ZfUA76VqpjPm
nGcTSYqP6UbgTHOBawq1cc5kvqjE9UwWms9SNfdh2fP4Uu81i/PJbqp+lYVIZAlfS5tSz8AP
aTM4xlyWU2xQag6VmsuaJA3xDqvLSawK0GpOL14IhgxoOurOROoyGOztscr4mmC/z58Du/e7
VzA0Kj0waq5oCf5mExGs7HXPXkUVTrIiDfjSBuLOCzcsMToY9OgOP/L/7sJAIRzde175Yc+Q
GHM8rKpsWgSlzAqgyqKUdZTEVb1Ptm4M5cEBmbIxSm3IvhWzgcm6KQv9Bhs1J3FKAkj4Zqrt
zjOnFelxBWxKuNyx1FdV5WrMuEL8jC1qU6ONBdlBu8HtTqgPx+fECVth2oMayPCmOsf+hP9l
brb7KFrhvzv564/Hz8k5GF7TUi2EvEFMaREERp2VoiMu8Y4gUDOpfsWtPXv852+sehNAHk28
58kP7H1mL0ZVHSboQAqIT0jfVHfW5GFvwd8H1/HygShUsWsQW4pYO/Achl/Uod2VeO/vi74k
xfk+SzvgEsXJK/G+TyR8o8GAHkX/g3gu+nsek3CSN9UscNZiPnAfIsmKaJLiuI/3WtNtklqY
/EYgrtRRFSM0WoI6gTnFdV0GevFQ3Ksda0MLhrUbCpMon+TxVNx7If55fPT9WcupWuF0cTQ6
fHP2s2FpyRC+ejsfeztfXgESTIQQMM8KGeC6hvpCh+L+L8V9TfG7PA+rB4wWuSz4heTa4Ws1
WOlwlmEXqKOAjPN4OZYhEa5DyqC3o71tx/eTKsyQc5R1AOCUEeGU8VONJXpvfQAy/Z1P9hqT
uE5mIgjDcGC0NJdzqEmf/rFRgF75Wf3pqzNaNLYHbMv1SkSDazx9WjFOTaDHtux7i8t2W+vD
fYKN9mo5X+RxTbn2ciEpJREXB53wew21ywhJWXCBgHkV58PVIIq70RF0xQspZmmAe3BdqmL6
IBQnyF+K+zUnb4W6Jqd+dfx2VxaJQuIJG1Ei1oz8PWAaioAG940PgM01YoRoFiKX8RXhZBlf
s6tq5EFCN0fWqRLNqZRTWEtFNnItKWgWqgbcJZdI28bQLyEYUmjIYixKzDGJPeqZZnBIvOJa
lT9j6Ah7Fs1i/+LgLwLxWIlLnKMKQ1gYZgg2sps7bTYBvUX6dOza8LJOENAp0SgrLpkSGeBl
4C1x9wq1h1DUMQ8HltRN24HwR6RZ8VQeU7B0WCOTW7qht3M3PvgTK0GR00lcL/j4yWN7q6mf
SG5lRBbv+5ivJALiwASOjFEUH/sbeO2Jhw8z+Kc38z77gBX3f3l837mI9jG76e9lbtW9gT87
VI+dZioLWcKtKBvSMLOatYr2D6WFimM+S2Pi5Y4Brm15LSUXeiWyxfmiJmvjhGITD13Fcn6G
OovYHVD2i0cgzHCNjusCTV1mV5qcF9AbVjh3t9F/gYox4RyY3MylyamSFbl7nl1iBOVmquac
4GBdEtPMNLuSLjPGHGX7OfCuRjqx3E2xHzJavTDkmMqZain/0UhA/ZjQAQePUE3jGiZxTlm7
Dgd3XGKGJKBDyfmrNbG72QQV50S8PD07+gElZPQW/w5/Ojw5PXx5eix8oxFKLaqgXyhhuQkQ
i/gK5aZOMHAyyjg606X8u0xqmfZh6XddJiW2nQGJgSTCIuWSQRsp1VtNrUZSwuTesjbOWQ8I
WZv4sFN1UNrUh3TluM0h3yQeiM4zCgJS+8y127oZMIV5M/k8Ls/aO/OlT2IWkD7gJ1T3UrED
0rejw+NRdHZ4fB6Nvj+MXknd2yh5XQDJh7QSWQCfoA09NO2E5rkNVeGQfcKEf6KxtbI7vF1P
UvsHgd5NArCeQFNW2pYImkMHHXfsoAdoq1rRvQ0QrevguHA6aMa8werZm7G9N33y9o5uLzcv
X0v6KS/SM2uyw4Woc0O9DHGtyksJ1WqvteWIakrq6DQ5qk2gUAJySbWlRsZIQ0ngq3nYAsje
ZkJ9rKFFJibjCGNVmSLK7HLUanVqmxR6TTDwD7NlcWDMEiHWN1nLyUjps/pkkJ0TRwqmMZQg
/yis/9uY/lmgtuzYa8wCk4/YqVrRGYZdbsSnmsVP2vMR6LsXjfobdkwlx0ILCR3gSaVR9MZZ
22hx8mGzSD963Zf/h5j/coj5QxHm32uOObswqAhWgb7X/73+2G06Xa5fuw98H40Oo/MfjkZP
rp78iUF+BB+SJflmxU/cCtvcdAvuGJIQpVm9hBmJ3377UiuOJLydBJr53uY2nLGbe/esmLob
Z1pxTq62FaeHhJt7z723TsvIrxM0zuwyXpD2HZZvhOAukuvE248YOinwwMena0Hn1sWP44ON
OwHe7Wxn1xqDX85FWKyVfKQj5sZWjNZak+WpAUfS9gSxwamu9aN1JXbV4ITecXUnQnjCCyp+
CroLbIN+E5sho4hm1hrBrUxQN1eCQl6L7VSBE4ol/rS1DaNhMyvoeyy46JWMJsBKCs19etDf
L5kTOBVhX8F5Rp+ul+Xpu++HMqQlZQlA9ZqBfS2E7elt6jZZ71hrMFF3iefaWre3cgP1fBGY
iMx6tQka6Ujr47ssh+3qUZ0nP9BMXS7HtK6dELSBlBpaDPA2HcJJ0ybxsiEX4Y3dtGt9S19J
19ZyBX/LoZc1cO7EWJfMZHJ5u+TJJqifSZQsyaba1mVAGDCVuqtyVzIhSlunsNpa3rSV8GcS
IrtuJS1CxJA38TwrpEmp/wNR4ydZZpNMx40r8/zZyOGIbh87bhE6WjEs/y+Gj1YQP4B44rUh
xA4Kb357GPGLVXxuCQzerROVA+Bu7gkqTmncl0V24LbfF6Fe8yKFfl0JDVuAtt3KfQvqRlYA
1g+fNhA4nVFd4BVEK9WQz69tJbb6vu2993a2orWl6eJ19xuQTWjZmsImvHRCdiDTczHnfKZ/
0XVSBjATsbkP0LEORzb06QbWpr0xd52+8e4ejCyDU1lM65k1ZFMWmwpBy8uIZ37NcFM/BG8R
T+OMDIgGderLd8uUfk4UfJXarGOwhtAu+dJA6uT8SmwSn89mb0pHEvFAXE1gAm/enZ46YbkP
8fAh11Jc0yOdFwvFTsBt9et4SUl2hhjMv1PQP4IgdBPVPC5rzcetgHVRAUb1FuLqVKmUu+pD
0VC4rhtITz+e6JmUx/dzFo6Mrit28MBZhrPnye7BOWr1LzhrVy/Oabeqi6qiz/SkyVKuJtxr
ziX2uZps7C/j44To9jZF/E7kMXHf0BpborO9lvUpjvOWOy2BjqZUUnJF+e7k9FX07s3JRXRx
PLoYeb/haYqsBufK/DSo85WOM5wIxVUBAcpswbSBjmVtXMbTnh4I4zRFdE/1hP52wQ7TUn8c
f1+enY0uoqPvj49+OD87eXPhmjBk4gzecPWqP7ANSC/GU4rdH6vxk6dff0uc6ZdEmnBTpNfB
1pvd3BLx+p0be/NDYftOfntUh8f1s5AC+acHeUxGd1Nr+ewPEuxo0Cf57TD8idatHWU1wcAj
Uaw3mqyMWrZhuw+b8XbNO2hx3LQMHmWwITVbVUl3N7udOdy4VJeyiBwR/SLDPT8UfQEPIt9H
wZ1nsr/3eUGpw/EZYe98WdpVeZzQto9HdksGwC4SsAVXTUY/kxD8qT3hJNAvfLv0tHuAhYEW
hlwuOjocHQf3tnqU2VI3Wwgc11z2X17k0u0kKQAA
_ATEOF


cat >right.gz.enc <<'_ATEOF'
H4sICOXi9D8CA3JpZ2h0AO1a+3PbxhH+WfwrzvRYAmUKfsTNTCVZjSwrjiaKpTHlpB3HgwGB
I4kIBFg8RDGO+7f3270HDnzIStLO9Id6bBO429vb28e3e0s+TLIorWMpDpO8rAoZTo86D+0Y
RpJs7I5Mw9lRx3mvZDHFSn/iEtVZUlZxe0yxojFncJhj0yflJCxkHMyqwp/MWuy7UbGYVfls
9iQsohf+pLtuahiW8utNkxN5u2GGH9JkuGE6LwsSd+0cBN4wU5Q8407lWVmFWQUVtZZcy8Xy
UFqHSyNVEWblKC+my6RlmCXVggc7T56IKJ8timQ8qYR30hPPnz593qf/vxLjIlzEeSYmOVQs
DvXrN7N8mN/6UQ5jY3WYpoJXl6KQpSxuZOzTeJpEMitlLKpcVBMpZvUQQ6LOYlnwABm/FPmI
X968fS/eXJ4L7+ileN6j9aWUPDNKUilOLi7/cfb2jcBpRCyrMElLFh0EkGyeQIZZkQ/DYbog
GnmDPYZSDOtxKZIMZEnJjHyRVDulwPSClsN1WL6xrNQZ+mKWFxWzCbMYMkR1IdOFL8q8KDA2
zOsK3MLK73TqEi4psnAqy1kYQUY24+XlwcoM3PnA0LPT7u83XosZmLiCam7yJBZxHpC3egMZ
vVpU8lWaR9diW8wmBRy139naEvizPBku0jyMe51PHSHOvW+9blFnGe1GrEgzkSyh6kw8isUQ
C1ntcViFP2fdnnhkGPhl8qv0er0DsDl+d/JChC88tbFPxF6vr+VwCcMX/qXaYMBB6hlmdsky
88/tEwM2oIiwLBVvD44cTPL8usTJ8Exn5kMjOgL4/SxMigDLODRAgqEktkRr1aYUozCEWAZq
GJoXAl4wh3MSEFXsb3VJ/plDrDS8VR6AYBHkaH0oT0RhNGHVikZm4SUjxQscFoZbUvXwXuT1
eMKc02QkSfEhWQTBNBUwk6+ccyLTWSnmE5kpPou83oFnT8NrtdckTEd7cf6rzEQkC8RaXBdq
BnFImyEwprIYY4NCcSjzqaxIUh/v8LqUxCoBrfr04qVgyICmg/ZMkF97vYMDVhmbCf67vw/s
PmyboK9VeqTVXNIS/E1Gwlvaa9uYovRHSRZ7bLSeePDSDkuM9nodsuEn/t8aDBTC0n3glR8P
NIl2x+OyTMaZV8gkA6rMClkFUVhWh+Tr2lF2j8iVtVMqR3a9mB1MVnWRqTf4qD6JVRJAwnVT
5XeOOy1JDxOwK8G4Q6lMVab5kHGF+GlfVK5GGwvyg2aD+51QHY7PiRM2wjQH1ZDhTLWO/Rn/
y1Rv90k0wn979vcfTvcpOBhe4yKfCXmLnNIgCJw6KURLXOIdQKB6VP4Kq714+tevjXojQB5N
fODJjxx9ei9GVZUm6EA5EJ+Qvi4frMjD0YK/u/NwsSuyPNvTiC1FqAJ4CsfPKt/sSrwPD0VX
kuLcmKUdYERx9lp86BIJW9Tr0aPofhT7onvgMPFHaV1OPOst+gP2EFGSBaMYx3160LhuHVVC
1zcCeaUKyhCp0RBUEdwprKrCU4v7YruyrDUtGFZ2yI+CdJSGY7H9Uvzr9OS7i4ZTucTp6mRw
/PbiJ83SkCF9dbY+dba+vAIkmPAhYJpk0oO5+sqgfbHzc7ajKH5X5GF1j9EilRm/kFxbbFaN
lRZnGXaBOjmQcRouhtInwlVI6XW2VLRtuXFS+glqjqLyAJwyIJzScaqwRO2tDkCuv/XZmDEK
q2giPN/3e1pLUzmFmtTpn2oFqJV36k+ZTmtR+x6wLVUrkQ3mePq85JyKQI1t2PcexrZbq8N9
ho92KjmdpWFFtfZiJqkkEVdHrfQ7h9plgKLMu0LCvAnT/nIShW1UBl2KQspZCuB250WejXd9
cYb6JdupuHjL8jkF9evTd3syi3IUnvCRXISKkbsHXCMnoIG98QGwmSNHiHomUhneEE4W4ZxD
VSEPCropqs48UpwKOYa3lOQjc0lJM8srwF10jbJtCP0SgqGEhizao8QUk9ijmigGx8QrrPLi
JwydYM+snh1eHf1NIB/n4hrnKH0fHoYZgo3k9kFTTUBvgTodhzairJUEVEk0SLJrpkQFeO05
S6xdoXYfijrlYc+Q2mkz4P+AMiscy1NKlhZrZHTPMHR2bucHd2IpKXI5CfOCj1s8NlaN3UJy
IyPyeDfGXCUREHs6cSSMovg4XMPrQDx+nCA+nZkPyUes2Pn56Y4NERVjZtPfy9yoew1/DqgO
B81YZrJAWFE1pGBmuWoVzR8qC3PO+SyNzpdbGrg21bVUXKiVqBans4q8jQuKdTzULZbrM9yz
iN0RVb94BML0V+j4XqCoi+RGkfMCesMKG+4m+89wY4y4BqYws2VynMuSwj1NrjGC62acT7nA
wboopJlxciNtZYw5qvZT4F2FcmKxF2M/VLRqoc85lSvVQv6zloD6IaEDDh7gNg0zjMKUqnaV
Dh7YwgxFQIuS61fjYg+TEW6cI/Hq/OLke1whg3f4d/zj8dn58avzU+E6jcjzWel1s1wYbgLE
IrzBdVMVGDgZVRyt6UL+IqNKxl14+kNbSYlNZ0BhIIkwi/nKoJyU7lt1lQ+khMu9Y21csh6Q
stbx4aBqobS+H5LJYc0+WxIPROc4BQGpeea726obMIV+0/U8jGf8nfnSJzHzSB+IE7r30mUH
pO8Gx6eD4OL49DIYfHccvJaqt1HwOg+S94VtaezvgwkKAj5Mk4WI0srPc2suiH0OD10JEI25
Nls9mPV0APdMMIGuBVZraSpQm9uC4tACyi0z6GDbsoJUmwNEq+o4zaw66iFvsHz2emhMqE7e
mOv+cvPylfqfSiQ1syI7oomaONTWEPO8uJZQrQpgczPJ64KaO3WKiycAKQK5pGumAslAoYrn
qrnfYMnBekJ1rL4BKSbjZGNUGSPh7HECa3Rq+hVqjddzD7Nhsac9FNnW9V7DSUvpsvqsQZ5r
SMqrIZQg/yjC/2l4vxOzDTuOGr1AlyZmqsrpDP02N+JTTsJnzfkI/+2LSgBrdowlp0WDDi0M
iqVW9NpZ03Ox8mGzQD06jZj/Z5v/crb5Q8nmz/XJrF9oVAQrT9n1f69Vdp+ml23dHgLfB4Pj
4PL7k8Gzm2d/YZAfIIZkQbFZ8hN3xdb337wHmsTHLa1awI3Eb799qStHEt5PAsX8YH1HTvvN
9rYRUzXmdFfOytV05dSQsHMfuA3X6h65VwaFM3uMF6R9i+VrIbiN5KoGdzOGKgoc8HHpGtC5
9z3I8sHGrQRvdzazKz3CL9ciLNZSPdISc21XRmmtTtJYgyNpe4TcYFXXxNGqEttqsEJv2Sso
UnjEC0p+8toLTK9+HZs+o4hi1jjBvVxQ9Vm8TM7FZirPCsUSf97YkVGwmWT0lRZC9EYGI2Al
peYuPaivmvQJrIqwr+A6o0vmZXm69quiBGVJUQBQnb5gVwlh2nvrGk8mOlZ6TdRo4rnm2ttZ
skA1nXk6I7NeTYFGOlL6+DZJ4btqVJXMu4qpreWY1nYWvCaRUm+LAd6UQzhpXEdONWQzvPab
Zq3r6Uvl2kqt4G7Zd6oGrp0Y66KJjK7vVzyZAvWOQsmQrLvm2goIA/rSbi+8S5UQla1jeG0l
b5tL8R0FkVm3VBYhY8jbcJpkUpfU/4Gs8aMsklGi8saNfr4zc1ii++eOe6SORgzD/4vpoxHE
TSCOeE0KMYPCmd+cRtx7Kz43JAbH6kRlAbhde4KKSxr7vZEZuO9XR7ivOZlCvS6lhg1A22xl
vxC1I0sA66ZPkwiszuhe4FyIlm5DLr+mq9jo+75272xtRGtD08br9pch69CycYV1eGmFbEGm
E2I2+HQrox2kDGA6Y3MfoOUdlqzv0vWMTztj1pyu8+4dDQyDc5mNq4lxZH0t1jcEJS8jnv5h
w231GLxFOA4TciAaVKUv25Yp3ZrIexSbqqO3gtC2+FJAauV8JNaJz2czllKZROyKmxFc4O37
83MrLPchHj/muxTf6VHOi1nOQcAd9nm4oCI7QQ7mnyyo30MQuolyGhaV4mNXwLvoAkb3LeTV
cZ7H3GDvi5rSdVVDevodRUeXPG6cs3DkdG2xvV3rGdafR3tHl7irfyFY23qxQbtRXXQruqM9
TZ5yM+K2cyqxz81obasZH2dEd7Au47cyj877mlb7Ep3tjazOcZx33GnxVDalKyXfKN+fnb8O
3r89uwquTgdXA+fnPHWWVOBc6l8Jtb7dsY4T4HKVQYAimTGtp3JZk5fxdKAG/DCOkd1jNaG+
aDDDtNQdx99XFxeDq+Dku9OT7y8vzt5e2SYMuTiDN0K97PZML9LJ8VRid4f58Nnzr74hzvSj
IkW4LtOrZOvMrm+JOK3PtW36vjB9J7dTqtLj6llIgfwrhDQkp7utlHzmtwlm1OuS/GYY8UTr
Vo6yXGDgkShWG01GRiVbv9mH3Xiz5i20WG5KBofSW1OaLaukvZvZTh9uWOTXMgssEf04wz4/
Fl2BCKLYx4U7TWT34G5BqcNxh7APviztsjxWaNPHI78lB+AQ8diDyzqhX0wI/lSRcOapF7Yu
Pe0dYaGnhKGQC06OB6fe9saI0luqZguB40rI/hs1S4vULykAAA==
_ATEOF


cat >ancestor.gz.enc <<'_ATEOF'
H4sICOXi9D8CA2FuY2VzdG9yAO1a+3PbxhH+WfwrzvTEBm0KfsTNTC1ZjSwrjiaKpTHlpB3H
gzkCRxIViGPxkMQ47t/eb/ceAPiwlWQ60x/qkUXgbm9vbx/f7h51N83jrE6U2E91WRVKzg96
d/0YRtJ82h6Zy8VBr/VeqWKOleGsTVTnaVkl3THDisZag2ONTR+VM1moJFpURThbdNj342K5
qPRi8UgW8bNw1t80NZal+mbb5EzdbJnhhywdb5nWZUHibpyDwFtmipJn2lM6LyuZV1BRZ8ml
Wq4OZbVcGakKmZcTXcxXSUuZp9WSB3uPHolYL5ZFOp1VIjgaiKePHz8d0u+vxbSQy0TnYqah
YrFvX79d6LG+CWMNY2O1zDLBq0tRqFIVVyoJaTxLY5WXKhGVFtVMiUU9xpCo80QVPEDGL4We
8MvrN+/E6/NTERy8EE8HtL5UimcmaabE0dn5P07evBY4jUhUJdOsZNFBAMmuU8iwKPRYjrMl
0agr7DFWYlxPS5HmIEtLZhSKtLpfCkwvaTlch+WbqsqcYSgWuqiYjcwTyBDXhcqWoSh1UWBs
rOsK3GQV9np1CZcUuZyrciFjyMhmPD/fW5uBO+85enba588br8UMTFxBNVc6TUSiI/LWYKTi
l8tKvcx0fCnuicWsgKMOezs7Av9WJ+Uy0zIZ9D72hDgNvgv6RZ3ntBuxIs3EqoSqc/FVIsZY
yGpPZCV/yfsD8ZVjEJbpryoYDPbA5vDt0TMhnwVm45CIg8HQytEmlM/Cc7PBiIM0cMz8klXm
n7onBmxAEbIsDe8AjhzNtL4scTI805n50IiOCH6/kGkRYRmHBkgwlCaeaKPajGIMhhDLyAxD
80LAC67hnAREFftbXZJ/aoiVyRvjAQgWQY42hPJELOMZq1Y0MosgnRhe4LB03NJqgPdC19MZ
c87SiSLFS7IIgmkuYKbQOOdMZYtSXM9UbvgsdX0fnj2Xl2avmcwmu4n+VeUiVgViLakLM4M4
pM0QGHNVTLFBYTiUeq4qkjTEO7wuI7FKQKs9vXghGDKg6ag7E+nLYLC3xypjM8F/nz8Hdu93
TTC0Kj2wai5pCX7SiQhW9rrnTFGGkzRPAjbaQNx54YcVRgeDHtnwI//2BgOF8HTveeWHPUti
3fGwLNNpHhQqzYEqi0JVUSzLap983TrKgwNyZeuUxpHbXswOpqq6yM0bfNSexCsJINF2U+N3
LXdakR4mYFeCccfKmKrM9JhxhfhZXzSuRhsL8oNmg9ud0ByOz4kTNsI0B7WQ0ZrqHPsTfqvM
bvdRNMJ/d/L3H4+fU3AwvCaFXgh1g5zSIAicOi1ER1ziHUGgelL+Cqs9e/zXb5x6Y0AeTbzn
yQ8cfXYvRlWTJuhAGohPSF+Xd9bk4WjBz4NruXwgcp3vWsRWQpoAnsPx8yp0uxLv/X3RV6S4
dszSDjCiOHkl3veJhC0aDOhR9D+I56K/12ISTrK6nAXeW+wH7CHiNI8mCY77eK9x3TquhK1v
BPJKFZUSqdERVDHcSVZVEZjFQ3Gv8qwtLRhWfiiMo2ySyam490L8+/jo+7OGU7nC6eJodPjm
7GfL0pEhffV2PvZ2vrwCJJgIIWCW5iqAuYbGoENx/5f8vqH4XZGH1QNGi0zl/EJy7bBZLVZ6
nGXYBepoIONcLscqJMJ1SBn0dky07bTjpAxT1BxFFQA4VUQ4ZePUYInZ2xyAXH/nkzNjLKt4
JoIwDAdWS3M1h5rM6R9bBZiVn9WfMZ3VovU9YFtmViIbXOPp04pzGgIztmXfWxjbb20O9wk+
2qvUfJHJimrt5UJRSSIuDjrp9xpqVxGKsuACCfNKZsPVJArbmAy6EoWUswzAPbgudD59EIoT
1C/5/YqLt1xfU1C/On67q/JYo/CEj2ghDaP2HnANTUADe+MDYHONHCHqhciUvCKcLOQ1h6pB
HhR0c1SdOjacCjWFt5TkI9eKkmauK8BdfImybQz9EoKhhIYs1qPEHJPYo5oZBofES1a6+BlD
R9gzrxf7Fwd/E8jHWlziHGUYwsMwQ7CR3txpqgnoLTKn49BGlHWSgCmJRml+yZSoAC+D1hJv
V6g9hKKOeThwpH7aDYQ/osySU3VMydJjjYpvGYatnbv5oT2xkhS5nIR5waddPDZWTdqF5FZG
5PHtGGsriYA4sIkjZRTFx/4GXnvi4cMU8dmaeZ9+wIr7vzy+70PExJjb9Pcyd+rewJ8DqsdB
M1W5KhBWVA0ZmFmtWkXzj8pCzTmfpbH5cscC17a6looLsxLV4nxRkbdxQbGJh+liuT5Dn0Xs
Dqj6xSMQZrhGx32BoS7SK0POC+gNK3y4u+y/QMcYcw1MYebL5ESrksI9Sy8xgnYz0XMucLAu
ljQzTa+Ur4wxR9V+BryrUE4sdxPsh4rWLAw5p3KlWqh/1QpQPyZ0wMEjdNMww0RmVLWbdHDH
F2YoAjqUXL86F7ubTtBxTsTL07OjH9BCRm/x//Cnw5PTw5enx6LtNELrRRn0cy0cNwFiIa/Q
bpoCAyejiqMzXah/qrhSSR+eftdXUmLbGVAYKCLME24ZjJNSv1VXeqQUXO4ta+Oc9YCUtYkP
B1UHpW1/SCaHNYdsSTwQXcspCEjdM/du627AFPbN1vMwnvN35kufxCwgfSBOqO+lZgekb0eH
x6Po7PD4PBp9fxi9UuZuo+B1ASQf0kpUAXyCJvXQtBea5zZ0hUOOCZv+icb1yv7wbj1J3T4I
9G4LgPUCmqrSpkUwHDrouOMGW4C2qhVztwGidR0c514H9Zg3WD17PXZ2MydvbHR7uXn5WtFP
dZGZWZMdIUQ3N3SXIa51camgWhO1rh3RdUE3OnWGbhMoFINcUW9pkDEyUBK01TxsAGRvM6E5
1tAhE5NxhnGqTJBldjlrNTp1lxRmTTBoH2bL4sC6JVJs22UdJytlm9Uni+xcOFIylVCC+qOw
/qcx/bNA7dhx1NgFth5xU5WmMwy73IhPOZNPmvMR6PsXg/obdkwU50IHCR3gSZRV9MZZd9Hi
5cNmkXls3b78P8X8l1PMH8owf+5yzPuFRUWwCoxd//fux25z0+Xva/eB76PRYXT+w9HoydWT
vzDIjxBDqqDYLPmJr8I2X7oFdyxJiNasWsKNxG+/fekqjiS8nQSG+d7mazjrN/fuOTHNbZy9
ivNyNVdxZkj4ufd899a5Mmr3CQZndhkvSPseyzdCcBfJTeHdzhimKGiBT5uuAZ1bNz+eDzbu
JHi/s5tduxj8ci3CYq3UIx0xVy+OjMLqNEssLpKiJ0gLXmtNCK3rr6uBFXlt14kEHvOakp+C
7hp3Pb+J05AxpOkwvRfcygd7O0GursV2isDLNGguqDZe8TiXXLvVoSsdnmsazN7Kwav5IrBp
kI/jqiKSzcjxXZrBYcyoKU4fGKa+gGJa38MHTfaiWyQ2patBAFlJHbdKEJ9WrcWatW1zrdRI
awm6veWwlaq5YGGAiWcqvmwt2NQK+oIBA7ax9U3hSuFAVd4UNq7UTdM4fqZ+cOtWqggArLqR
8zRXtgJdaUTwyRV8N+Bb4hHFhjYHFJymaMa/3Pb+H/V3K/LNa8sWW8Km2cZ/o+VH1sKlG9VX
qkgnqa3vWoXtSlXb5sVcNoXOT46XY9qKIpesncq9MazWu0ZjV7SAt24ETzZs0w1cRmmNee1R
8nBShSO3/lTl02rmMoltKmx9ZcRl17XfBd9UD8FayKlMyVw0aLyGNcqU7YwSfJU4zB40x+VL
vS2K9vnMhImX/Sux8UhbLOOsYKBDPBBXE+Dim3enp/5Q3O09fMgVK3dOKJrEQrNr8uXltVxS
KZPGM/NtsPmqmSoPUc5lURk+fgUgl8pcqmqzpZhqnfAxh6LO4VZVjQPRV9Q9e8ffTsosHGFY
V+zAGau5f5zsHpyjIfpCBHU15SNpkwIdLIvPXPyRP11N+EIvU9jnarLxEg8fJ0S3twnhO3hl
cd7SWpejs71W1SmO85bb2cCgJ9XtXLa/Ozl9Fb17c3IRXRyPLkatP5So87QC59L+/UXn3ty7
UoQKNocARbpg2sAgYNM54mnPDIQySYDmiZkwV7humJa2x/Hz8uxsdBEdfX989MP52cmbC9/p
UiQwiiIVlv2Bu+VpdZxUx/THevzk6dffEmf6cw1DuCk/GIhuzW7uO1uXShsvQPlyZ+0OyqDT
+llIgfz9bibJ6W4qI5/71teNBn2S3w0jnGjd2lFW0xIeiWK9m3cyGtmGzT7sxts17xHIczMy
tCiD1VTsFdHdw21ijzQu9KXKI09EX3b754eiLxA3jGsSkKL6e58Xj5rHz4h4Z5uMq1J4Ud3F
CPkoGZvDIWBvLeuUvncW/Gm8/iQwL2xJeto9wMLAiEDhFR0djo6De1ujx25pulfCwbXw/A+k
HA4KdSYAAA==
_ATEOF



$at_traceoff
echo "$at_srcdir/t_fmerge.at:210: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o left.gz left.gz.enc
else
  \$UNB64_COMMAND <left.gz.enc >left.gz
fi
"
echo t_fmerge.at:210 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o left.gz left.gz.enc
else
  $UNB64_COMMAND <left.gz.enc >left.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o left.gz left.gz.enc
else
  $UNB64_COMMAND <left.gz.enc >left.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge.at:210: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fmerge.at:210: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"left.gz\" != \"left.gz\"; then
    mv left.gz left.gz
  fi
  gunzip left.gz
else
  \$UNGZ_COMMAND <left.gz >left
fi
"
echo t_fmerge.at:210 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "left.gz" != "left.gz"; then
    mv left.gz left.gz
  fi
  gunzip left.gz
else
  $UNGZ_COMMAND <left.gz >left
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "left.gz" != "left.gz"; then
    mv left.gz left.gz
  fi
  gunzip left.gz
else
  $UNGZ_COMMAND <left.gz >left
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge.at:210: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_fmerge.at:211: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o right.gz right.gz.enc
else
  \$UNB64_COMMAND <right.gz.enc >right.gz
fi
"
echo t_fmerge.at:211 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o right.gz right.gz.enc
else
  $UNB64_COMMAND <right.gz.enc >right.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o right.gz right.gz.enc
else
  $UNB64_COMMAND <right.gz.enc >right.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge.at:211: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fmerge.at:211: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"right.gz\" != \"right.gz\"; then
    mv right.gz right.gz
  fi
  gunzip right.gz
else
  \$UNGZ_COMMAND <right.gz >right
fi
"
echo t_fmerge.at:211 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "right.gz" != "right.gz"; then
    mv right.gz right.gz
  fi
  gunzip right.gz
else
  $UNGZ_COMMAND <right.gz >right
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "right.gz" != "right.gz"; then
    mv right.gz right.gz
  fi
  gunzip right.gz
else
  $UNGZ_COMMAND <right.gz >right
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge.at:211: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_fmerge.at:212: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o ancestor.gz ancestor.gz.enc
else
  \$UNB64_COMMAND <ancestor.gz.enc >ancestor.gz
fi
"
echo t_fmerge.at:212 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o ancestor.gz ancestor.gz.enc
else
  $UNB64_COMMAND <ancestor.gz.enc >ancestor.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o ancestor.gz ancestor.gz.enc
else
  $UNB64_COMMAND <ancestor.gz.enc >ancestor.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge.at:212: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fmerge.at:212: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"ancestor.gz\" != \"ancestor.gz\"; then
    mv ancestor.gz ancestor.gz
  fi
  gunzip ancestor.gz
else
  \$UNGZ_COMMAND <ancestor.gz >ancestor
fi
"
echo t_fmerge.at:212 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "ancestor.gz" != "ancestor.gz"; then
    mv ancestor.gz ancestor.gz
  fi
  gunzip ancestor.gz
else
  $UNGZ_COMMAND <ancestor.gz >ancestor
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "ancestor.gz" != "ancestor.gz"; then
    mv ancestor.gz ancestor.gz
  fi
  gunzip ancestor.gz
else
  $UNGZ_COMMAND <ancestor.gz >ancestor
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge.at:212: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



ANC=cec9ec2e479b700ea267e70feb5a4eb15155190d
LEFT=52f65363d555fecd3d2e887a207c3add0a949638
RIGHT=3ea0b30aa5c7b20329ce9170ff4d379522c8bcda

AVER=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify ancestor`
LVER=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify left`
RVER=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify right`

$at_traceoff
echo "$at_srcdir/t_fmerge.at:222: test \$AVER = \$ANC"
echo t_fmerge.at:222 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $AVER = $ANC" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $AVER = $ANC ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $AVER = $ANC ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge.at:222: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fmerge.at:223: test \$LVER = \$LEFT"
echo t_fmerge.at:223 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $LVER = $LEFT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $LVER = $LEFT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $LVER = $LEFT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge.at:223: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fmerge.at:224: test \$RVER = \$RIGHT"
echo t_fmerge.at:224 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $RVER = $RIGHT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $RVER = $RIGHT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $RVER = $RIGHT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge.at:224: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_fmerge.at:226: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net fload <ancestor"
echo t_fmerge.at:226 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <ancestor" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <ancestor ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <ancestor ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge.at:226: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fmerge.at:227: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net fload <left"
echo t_fmerge.at:227 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <left" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <left ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <left ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge.at:227: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fmerge.at:228: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net fload <right"
echo t_fmerge.at:228 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <right" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <right ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <right ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge.at:228: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_fmerge.at:230: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net fmerge \$ANC \$LEFT \$RIGHT"
echo t_fmerge.at:230 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fmerge $ANC $LEFT $RIGHT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fmerge $ANC $LEFT $RIGHT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fmerge $ANC $LEFT $RIGHT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge.at:230: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fmerge.at:231:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_fmerge.at:231 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge.at:231: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fmerge.at:232: mv stdout merge.monotone"
echo t_fmerge.at:232 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout merge.monotone ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout merge.monotone ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge.at:232: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# we expect the output to be the same as the right file in this case
$at_traceoff
echo "$at_srcdir/t_fmerge.at:235: cmp merge.monotone right"
echo t_fmerge.at:235 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp merge.monotone right ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp merge.monotone right ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge.at:235: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  28 ) # 28. t_netsync.at:3: exchanging work via netsync
    at_setup_line='t_netsync.at:3'
    at_desc='exchanging work via netsync'
    $at_quiet $ECHO_N " 28: exchanging work via netsync                  $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "28. t_netsync.at:3: testing ..."
      $at_traceon





# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_netsync.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_netsync.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_netsync.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_netsync.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync.at:6: rm test_keys"
echo t_netsync.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_netsync.at:7: cp test.db test2.db"
echo t_netsync.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync.at:7: cp -r keys/ keys2"
echo t_netsync.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync.at:7: cp test.db test3.db"
echo t_netsync.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync.at:7: cp -r keys/ keys3"
echo t_netsync.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT



cat >testfile <<'_ATEOF'
version 0 of test file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_netsync.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_netsync.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

F_VER0=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
VER0=`cat _MTN/revision`

cat >testfile <<'_ATEOF'
version 1 of test file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message blah-blah"
echo t_netsync.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

F_VER1=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
VER1=`cat _MTN/revision`




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4



$at_traceoff
echo "$at_srcdir/t_netsync.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_netsync.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null




$at_traceoff
echo "$at_srcdir/t_netsync.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs \$VER0"
echo t_netsync.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync.at:25: mv stdout certs"
echo t_netsync.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync.at:26: grep date certs"
echo t_netsync.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep date certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep date certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync.at:27: grep author certs"
echo t_netsync.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep author certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep author certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync.at:28: grep branch certs"
echo t_netsync.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep branch certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep branch certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync.at:29: grep changelog certs"
echo t_netsync.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep changelog certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep changelog certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync.at:30: grep bad certs"
echo t_netsync.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep bad certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep bad certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync.at:30: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs \$VER1"
echo t_netsync.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync.at:33: mv stdout certs"
echo t_netsync.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync.at:34: grep date certs"
echo t_netsync.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep date certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep date certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync.at:35: grep author certs"
echo t_netsync.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep author certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep author certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync.at:36: grep branch certs"
echo t_netsync.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep branch certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep branch certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync.at:37: grep changelog certs"
echo t_netsync.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep changelog certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep changelog certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync.at:38: grep bad certs"
echo t_netsync.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep bad certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep bad certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync.at:38: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$VER0"
echo t_netsync.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $VER0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $VER0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $VER0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync.at:41:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_netsync.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

CHK=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify stdout`
$at_traceoff
echo "$at_srcdir/t_netsync.at:43: test \$CHK = \$VER0"
echo t_netsync.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $CHK = $VER0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $CHK = $VER0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $CHK = $VER0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync.at:45: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$VER1"
echo t_netsync.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $VER1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $VER1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $VER1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync.at:46:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_netsync.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

CHK=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify stdout`
$at_traceoff
echo "$at_srcdir/t_netsync.at:48: test \$CHK = \$VER1"
echo t_netsync.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $CHK = $VER1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $CHK = $VER1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $CHK = $VER1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync.at:50: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_file \$F_VER0"
echo t_netsync.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_file $F_VER0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_file $F_VER0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_file $F_VER0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync.at:51:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_netsync.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

CHK=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify stdout`
$at_traceoff
echo "$at_srcdir/t_netsync.at:53: test \$CHK = \$F_VER0"
echo t_netsync.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $CHK = $F_VER0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $CHK = $F_VER0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $CHK = $F_VER0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync.at:55: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_file \$F_VER1"
echo t_netsync.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_file $F_VER1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_file $F_VER1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_file $F_VER1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync.at:56:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_netsync.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

CHK=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify stdout`
$at_traceoff
echo "$at_srcdir/t_netsync.at:58: test \$CHK = \$F_VER1"
echo t_netsync.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $CHK = $F_VER1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $CHK = $F_VER1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $CHK = $F_VER1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync.at:60: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db info"
echo t_netsync.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db info" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db info ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db info ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync.at:61:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_netsync.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

INFO1=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify stdout`
$at_traceoff
echo "$at_srcdir/t_netsync.at:63: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 db info"
echo t_netsync.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 db info" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 db info ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 db info ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync.at:64:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_netsync.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:64: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

INFO2=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify stdout`
$at_traceoff
echo "$at_srcdir/t_netsync.at:66: test \$INFO1 = \$INFO2"
echo t_netsync.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $INFO1 = $INFO2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $INFO1 = $INFO2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $INFO1 = $INFO2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync.at:66: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  29 ) # 29. t_netsync_single.at:3: single manifest netsync
    at_setup_line='t_netsync_single.at:3'
    at_desc='single manifest netsync'
    $at_quiet $ECHO_N " 29: single manifest netsync                      $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "29. t_netsync_single.at:3: testing ..."
      $at_traceon





# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_netsync_single.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_netsync_single.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_single.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_netsync_single.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_single.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_netsync_single.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_single.at:6: rm test_keys"
echo t_netsync_single.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_netsync_single.at:7: cp test.db test2.db"
echo t_netsync_single.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_single.at:7: cp -r keys/ keys2"
echo t_netsync_single.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_single.at:7: cp test.db test3.db"
echo t_netsync_single.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_single.at:7: cp -r keys/ keys3"
echo t_netsync_single.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT



cat >testfile <<'_ATEOF'
version 0 of test file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_single.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_netsync_single.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync_single.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_netsync_single.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


F_VER0=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
VER0=`cat _MTN/revision`




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4



$at_traceoff
echo "$at_srcdir/t_netsync_single.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_netsync_single.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null




$at_traceoff
echo "$at_srcdir/t_netsync_single.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs \$VER0"
echo t_netsync_single.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_single.at:19: mv stdout certs"
echo t_netsync_single.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_single.at:20: grep date certs"
echo t_netsync_single.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep date certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep date certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_single.at:21: grep author certs"
echo t_netsync_single.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep author certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep author certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_single.at:22: grep branch certs"
echo t_netsync_single.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep branch certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep branch certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_single.at:23: grep changelog certs"
echo t_netsync_single.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep changelog certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep changelog certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_single.at:24: grep bad certs"
echo t_netsync_single.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep bad certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep bad certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_single.at:24: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync_single.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$VER0"
echo t_netsync_single.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $VER0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $VER0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $VER0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_single.at:27:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_netsync_single.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

CHK=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify stdout`
$at_traceoff
echo "$at_srcdir/t_netsync_single.at:29: test \$CHK = \$VER0"
echo t_netsync_single.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $CHK = $VER0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $CHK = $VER0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $CHK = $VER0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync_single.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_file \$F_VER0"
echo t_netsync_single.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_file $F_VER0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_file $F_VER0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_file $F_VER0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_single.at:32:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_netsync_single.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

CHK=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify stdout`
$at_traceoff
echo "$at_srcdir/t_netsync_single.at:34: test \$CHK = \$F_VER0"
echo t_netsync_single.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $CHK = $F_VER0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $CHK = $F_VER0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $CHK = $F_VER0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync_single.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db info"
echo t_netsync_single.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db info" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db info ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db info ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

INFO1=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify stdout`
$at_traceoff
echo "$at_srcdir/t_netsync_single.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 db info"
echo t_netsync_single.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 db info" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 db info ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 db info ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

INFO2=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify stdout`
$at_traceoff
echo "$at_srcdir/t_netsync_single.at:40: test \$INFO1 = \$INFO2"
echo t_netsync_single.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $INFO1 = $INFO2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $INFO1 = $INFO2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $INFO1 = $INFO2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_single.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  30 ) # 30. t_netsync_pubkey.at:1: netsync transfers public keys
    at_setup_line='t_netsync_pubkey.at:1'
    at_desc='netsync transfers public keys'
    $at_quiet $ECHO_N " 30: netsync transfers public keys                $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "30. t_netsync_pubkey.at:1: testing ..."
      $at_traceon





# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_netsync_pubkey.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_netsync_pubkey.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pubkey.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pubkey.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_netsync_pubkey.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pubkey.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pubkey.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_netsync_pubkey.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pubkey.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pubkey.at:4: rm test_keys"
echo t_netsync_pubkey.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pubkey.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_netsync_pubkey.at:5: cp test.db test2.db"
echo t_netsync_pubkey.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pubkey.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pubkey.at:5: cp -r keys/ keys2"
echo t_netsync_pubkey.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pubkey.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pubkey.at:5: cp test.db test3.db"
echo t_netsync_pubkey.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pubkey.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pubkey.at:5: cp -r keys/ keys3"
echo t_netsync_pubkey.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pubkey.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT



PUBKEY=52f32ec62128ea3541ebdd9d17400e268cfcd3fe
PRIVKEY=06b040c37796863b53f10dc23fcccf379cc2e259
cat >newkeys.txt <<'_ATEOF'
[keypair foo@test.example.com]
MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQC+6X7+HI715//0pWHWGcN/tw439uUUahtD
wV8ckNKFTCKnWU0U4mzanMoKJCeSRttR7uRkmWPQX3e9pq8Klcpocws1/XpJr31NhDqvWmTb
ABduS/GJeSZugrU6MYBLX12eLUCynWXoSXRGtX+9Xrjt2pAMAq3LkSDcRUUgYOCS+wIBEQ==#
MIICwTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIyZNAO/PyGHECAggAAgEYMBQG
CCqGSIb3DQMHBAhy4+o+3DMQTQSCAnhpZiO9ILoVB8+Hw4FsbckY1rIE7UnDLJqxVJO0+Ghg
rBKtLqMH/mfakbkPVCACYte/wxC1a4lsuf6oEIMryW93V5RplIVIPgFpzLT7zj1ih1YXAh0X
aSMdDbtAgAVTppRTZfgQPJ8nJ+tD7Y4ckVAbbyv5Sbr1is5qzv4bqiwvpL2heNcbiaHOyxzO
Df93tlK36o9Qd2uoGXZ+uaZs5LrFe8xZuuV1++iSWMnClIMICS67i7tCha5juwcCAouy8oyg
jLGsQhwTfAwLHCC0TvZeHTG6EM+jkqAKDvL6ud+5gN6f0HFIV9DPUJSJ01vaqFBWWFQ28ilz
0l6fINeac2E/UBYRrJUY5tQ6fKEurPcDWNynsVFDKv/CG0ePZko9b715cYdfLwCIiBm+4z9/
bpGc6zy2RfZqYk9Ui8hviaI9UShZWB3iglKq3NRVwBY0xX6HysYp2T+Lb5cHb9lCPP1INPfx
VdgMlYMcd+3HmAdEF05K6UkqECc7ZIvz7KrWXEvDoBV1cVQZ5QvoDOvQFMCKjvetnIpE7wCO
HxhHt6FiCVLJyvvOhystmJtuzg1/R1SIE00XEXgLLQS2We1wuZesjwB7u10NYArl1zqD/XJb
/q1EM4YFSXnvCL0KitZ244NP3CteSydVChYTgHkSDRnaZ2sx3tTLJLaekYCRUFKKs+xF750f
nVBgfV13p+heGn94EcJfVJVszAYiTKolmtgkqXij0mInJGxwRAEQq4La1va9WwNHndK2R8vj
+nAB7jJFgpAwiotl7g+7LW65ZR6Z2lLZhIJG7HlOwlDFq6oAjgWOZFu2s+dqu9MgMF2C9d3d
+rhboyouJg==

[end]
_ATEOF


$at_traceoff
echo "$at_srcdir/t_netsync_pubkey.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <newkeys.txt"
echo t_netsync_pubkey.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <newkeys.txt" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <newkeys.txt ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <newkeys.txt ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pubkey.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pubkey.at:32: rm -f newkeys.txt"
echo t_netsync_pubkey.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f newkeys.txt ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f newkeys.txt ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pubkey.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# First commit a version that doesn't use the new key, and make sure
# that it doesn't get transferred.

cat >testfile <<'_ATEOF'
version 0 of test file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_pubkey.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_netsync_pubkey.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pubkey.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_pubkey.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_netsync_pubkey.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pubkey.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon






# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4



$at_traceoff
echo "$at_srcdir/t_netsync_pubkey.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_netsync_pubkey.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pubkey.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null




$at_traceoff
echo "$at_srcdir/t_netsync_pubkey.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls keys"
echo t_netsync_pubkey.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pubkey.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pubkey.at:43: grep \$PUBKEY stdout >/dev/null"
echo t_netsync_pubkey.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $PUBKEY stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $PUBKEY stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $PUBKEY stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_pubkey.at:43: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pubkey.at:44: grep \$PRIVKEY stdout >/dev/null"
echo t_netsync_pubkey.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $PRIVKEY stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $PRIVKEY stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $PRIVKEY stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_pubkey.at:44: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Now check that --key-to-push works.


# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4

$at_traceoff
echo "$at_srcdir/t_netsync_pubkey.at:48: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua push localhost:\$_PORT testbranch --key-to-push=foo@test.example.com"
echo t_netsync_pubkey.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua push localhost:$_PORT testbranch --key-to-push=foo@test.example.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua push localhost:$_PORT testbranch --key-to-push=foo@test.example.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua push localhost:$_PORT testbranch --key-to-push=foo@test.example.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pubkey.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null


$at_traceoff
echo "$at_srcdir/t_netsync_pubkey.at:50: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 dropkey foo@test.example.com"
echo t_netsync_pubkey.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 dropkey foo@test.example.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 dropkey foo@test.example.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 dropkey foo@test.example.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pubkey.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Now commit a version that does use the new key, and make sure that
# now it does get transferred.

cat >testfile <<'_ATEOF'
version 1 of test file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_netsync_pubkey.at:56: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah --key=foo@test.example.com"
echo t_netsync_pubkey.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah --key=foo@test.example.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah --key=foo@test.example.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah --key=foo@test.example.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pubkey.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4



$at_traceoff
echo "$at_srcdir/t_netsync_pubkey.at:58: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_netsync_pubkey.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pubkey.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null




$at_traceoff
echo "$at_srcdir/t_netsync_pubkey.at:60: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls keys"
echo t_netsync_pubkey.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pubkey.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pubkey.at:61: grep \$PUBKEY stdout >/dev/null"
echo t_netsync_pubkey.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $PUBKEY stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $PUBKEY stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $PUBKEY stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pubkey.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pubkey.at:62: grep \$PRIVKEY stdout >/dev/null"
echo t_netsync_pubkey.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $PRIVKEY stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $PRIVKEY stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $PRIVKEY stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_pubkey.at:62: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  31 ) # 31. t_netsync_repeated.at:1: repeatedly exchanging work via netsync
    at_setup_line='t_netsync_repeated.at:1'
    at_desc='repeatedly exchanging work via netsync'
    $at_quiet $ECHO_N " 31: repeatedly exchanging work via netsync       $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "31. t_netsync_repeated.at:1: testing ..."
      $at_traceon





# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_netsync_repeated.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_netsync_repeated.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_netsync_repeated.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:4: rm test_keys"
echo t_netsync_repeated.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:5: cp test.db test2.db"
echo t_netsync_repeated.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:5: cp -r keys/ keys2"
echo t_netsync_repeated.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:5: cp test.db test3.db"
echo t_netsync_repeated.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:5: cp -r keys/ keys3"
echo t_netsync_repeated.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT




cat >testfile <<'_ATEOF'
version 0 data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_netsync_repeated.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_netsync_repeated.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


VER0=`cat _MTN/revision`




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4



$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_netsync_repeated.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null





cat >testfile2 <<'_ATEOF'
some data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile2"
echo t_netsync_repeated.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_netsync_repeated.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


VER1=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:19: rm -rf _MTN.old"
echo t_netsync_repeated.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:19: mv  _MTN _MTN.old"
echo t_netsync_repeated.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$VER0 ."
echo t_netsync_repeated.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$VER0 ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$VER0 . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$VER0 . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:19: test \$PROBE_R_SHA = \$VER0"
echo t_netsync_repeated.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $VER0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $VER0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $VER0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
version 1 data
_ATEOF



$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_netsync_repeated.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


VER2=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge"
echo t_netsync_repeated.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_netsync_repeated.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

VER3=`cat _MTN/revision`




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4



$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_netsync_repeated.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null





$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate graph"
echo t_netsync_repeated.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate graph" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate graph ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate graph ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:32: mv stdout expout"
echo t_netsync_repeated.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate graph"
echo t_netsync_repeated.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate graph" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate graph ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate graph ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls certs \$VER1"
echo t_netsync_repeated.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $VER1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $VER1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $VER1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:34: mv stdout expout"
echo t_netsync_repeated.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs \$VER1"
echo t_netsync_repeated.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls certs \$VER2"
echo t_netsync_repeated.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $VER2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $VER2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $VER2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:35: mv stdout expout"
echo t_netsync_repeated.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs \$VER2"
echo t_netsync_repeated.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls certs \$VER3"
echo t_netsync_repeated.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $VER3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $VER3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $VER3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:36: mv stdout expout"
echo t_netsync_repeated.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_repeated.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs \$VER3"
echo t_netsync_repeated.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_repeated.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  32 ) # 32. t_netsync_unrelated.at:1: (normal) netsync on partially unrelated revisions
    at_setup_line='t_netsync_unrelated.at:1'
    at_desc='(normal) netsync on partially unrelated revisions'
    $at_quiet $ECHO_N " 32: (normal) netsync on partially unrelated revisions$ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "32. t_netsync_unrelated.at:1: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_netsync_unrelated.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_netsync_unrelated.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_netsync_unrelated.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:3: rm test_keys"
echo t_netsync_unrelated.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This test relies on file-suturing


# This tests netsync'ing
#
#   A   B
#    \ /
#     C
#
# where A starts out shared, but B and C do not.

# For analysis and discussion of solutions, see:
#   http://lists.gnu.org/archive/html/monotone-devel/2004-11/msg00043.html
# There are other strategies that might be good besides the one
# mentioned there; doing sideways deltas between heads, all sorts of
# possibilities for maybe-efficient algorithms.



$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:22: cp test.db test2.db"
echo t_netsync_unrelated.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:22: cp -r keys/ keys2"
echo t_netsync_unrelated.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:22: cp test.db test3.db"
echo t_netsync_unrelated.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:22: cp -r keys/ keys3"
echo t_netsync_unrelated.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT




cat >testfile1 <<'_ATEOF'
This is test file 1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile1"
echo t_netsync_unrelated.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_netsync_unrelated.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


BASE=`cat _MTN/revision`




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4



$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_netsync_unrelated.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null





$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate graph"
echo t_netsync_unrelated.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate graph" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate graph ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate graph ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:31: mv stdout expout"
echo t_netsync_unrelated.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate graph"
echo t_netsync_unrelated.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate graph" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate graph ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate graph ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls certs \$BASE"
echo t_netsync_unrelated.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $BASE" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $BASE ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $BASE ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:32: mv stdout expout"
echo t_netsync_unrelated.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls certs \$BASE"
echo t_netsync_unrelated.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $BASE" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $BASE ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $BASE ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:34: rm -rf _MTN"
echo t_netsync_unrelated.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_netsync_unrelated.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile2 <<'_ATEOF'
This is test file 2
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile2"
echo t_netsync_unrelated.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:39: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_netsync_unrelated.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


UNRELATED=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge"
echo t_netsync_unrelated.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_netsync_unrelated.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

MERGE=`cat _MTN/revision`




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4



$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:46: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_netsync_unrelated.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null





$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:48: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate graph"
echo t_netsync_unrelated.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate graph" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate graph ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate graph ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:48: mv stdout expout"
echo t_netsync_unrelated.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:48: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate graph"
echo t_netsync_unrelated.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate graph" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate graph ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate graph ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:49: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls certs \$BASE"
echo t_netsync_unrelated.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $BASE" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $BASE ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $BASE ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:49: mv stdout expout"
echo t_netsync_unrelated.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:49: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls certs \$BASE"
echo t_netsync_unrelated.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $BASE" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $BASE ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $BASE ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:50: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls certs \$UNRELATED"
echo t_netsync_unrelated.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $UNRELATED" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $UNRELATED ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $UNRELATED ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:50: mv stdout expout"
echo t_netsync_unrelated.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:50: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls certs \$UNRELATED"
echo t_netsync_unrelated.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $UNRELATED" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $UNRELATED ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $UNRELATED ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:51: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls certs \$MERGE"
echo t_netsync_unrelated.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $MERGE" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $MERGE ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $MERGE ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:51: mv stdout expout"
echo t_netsync_unrelated.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_unrelated.at:51: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls certs \$MERGE"
echo t_netsync_unrelated.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $MERGE" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $MERGE ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $MERGE ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_unrelated.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  33 ) # 33. t_disapprove.at:3: disapproving of a revision
    at_setup_line='t_disapprove.at:3'
    at_desc='disapproving of a revision'
    $at_quiet $ECHO_N " 33: disapproving of a revision                   $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "33. t_disapprove.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_disapprove.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_disapprove.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_disapprove.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_disapprove.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_disapprove.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_disapprove.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_disapprove.at:5: rm test_keys"
echo t_disapprove.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
first line of the file
second line of the file
third line of the file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_disapprove.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_disapprove.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_disapprove.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_disapprove.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

ROOT_R_SHA=`cat _MTN/revision`
ROOT_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`

cat >testfile <<'_ATEOF'
first line of the file
an insertion between first and second
second line of the file
third line of the file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_disapprove.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message \"left good version\""
echo t_disapprove.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message \"left good version\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message "left good version" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message "left good version" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

LEFT_GOOD_R_SHA=`cat _MTN/revision`
LEFT_GOOD_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
$at_traceoff
echo "$at_srcdir/t_disapprove.at:25: test \$LEFT_GOOD_R_SHA != \$ROOT_R_SHA"
echo t_disapprove.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $LEFT_GOOD_R_SHA != $ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $LEFT_GOOD_R_SHA != $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $LEFT_GOOD_R_SHA != $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_disapprove.at:26: test \$LEFT_GOOD_F_SHA != \$ROOT_F_SHA"
echo t_disapprove.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $LEFT_GOOD_F_SHA != $ROOT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $LEFT_GOOD_F_SHA != $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $LEFT_GOOD_F_SHA != $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >testfile <<'_ATEOF'
first line of the file
an insertion between first and second
second line of the file
third line of the file
an evil line which should never be seen
_ATEOF


$at_traceoff
echo "$at_srcdir/t_disapprove.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message \"left bad version\""
echo t_disapprove.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message \"left bad version\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message "left bad version" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message "left bad version" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

LEFT_BAD_R_SHA=`cat _MTN/revision`
LEFT_BAD_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
$at_traceoff
echo "$at_srcdir/t_disapprove.at:38: test \$LEFT_BAD_R_SHA != \$LEFT_GOOD_R_SHA"
echo t_disapprove.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $LEFT_BAD_R_SHA != $LEFT_GOOD_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $LEFT_BAD_R_SHA != $LEFT_GOOD_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $LEFT_BAD_R_SHA != $LEFT_GOOD_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_disapprove.at:39: test \$LEFT_BAD_F_SHA != \$LEFT_GOOD_F_SHA"
echo t_disapprove.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $LEFT_BAD_F_SHA != $LEFT_GOOD_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $LEFT_BAD_F_SHA != $LEFT_GOOD_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $LEFT_BAD_F_SHA != $LEFT_GOOD_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_disapprove.at:41: rm -rf _MTN.old"
echo t_disapprove.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_disapprove.at:41: mv  _MTN _MTN.old"
echo t_disapprove.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_disapprove.at:41: rm testfile"
echo t_disapprove.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_disapprove.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$ROOT_R_SHA ."
echo t_disapprove.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_disapprove.at:41: mv _MTN.old/options _MTN"
echo t_disapprove.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
PROBE_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
$at_traceoff
echo "$at_srcdir/t_disapprove.at:41: test \$PROBE_R_SHA = \$ROOT_R_SHA"
echo t_disapprove.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_disapprove.at:41: test \$PROBE_F_SHA = \$ROOT_F_SHA"
echo t_disapprove.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_F_SHA = $ROOT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_F_SHA = $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_F_SHA = $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
first line of the file
second line of the file
an insertion between second and third
third line of the file
_ATEOF



$at_traceoff
echo "$at_srcdir/t_disapprove.at:50: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net disapprove \$LEFT_BAD_R_SHA"
echo t_disapprove.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net disapprove $LEFT_BAD_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net disapprove $LEFT_BAD_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net disapprove $LEFT_BAD_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_disapprove.at:51: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_disapprove.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# files should now be merged

cat >probe <<'_ATEOF'
first line of the file
an insertion between first and second
second line of the file
an insertion between second and third
third line of the file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_disapprove.at:62: cmp testfile probe"
echo t_disapprove.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile probe ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile probe ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  34 ) # 34. t_testresult.at:3: creating a good and bad test result
    at_setup_line='t_testresult.at:3'
    at_desc='creating a good and bad test result'
    $at_quiet $ECHO_N " 34: creating a good and bad test result          $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "34. t_testresult.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_testresult.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_testresult.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_testresult.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_testresult.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_testresult.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_testresult.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_testresult.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_testresult.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_testresult.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_testresult.at:5: rm test_keys"
echo t_testresult.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_testresult.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
first line of the file
second line of the file
third line of the file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_testresult.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_testresult.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_testresult.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_testresult.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah"
echo t_testresult.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_testresult.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

ROOT_R_SHA=`cat _MTN/revision`
ROOT_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`

cat >testfile <<'_ATEOF'
first line of the file
an insertion between first and second
second line of the file
third line of the file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_testresult.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah"
echo t_testresult.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_testresult.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

LEFT_GOOD_R_SHA=`cat _MTN/revision`
LEFT_GOOD_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
$at_traceoff
echo "$at_srcdir/t_testresult.at:25: test \$LEFT_GOOD_R_SHA != \$ROOT_R_SHA"
echo t_testresult.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $LEFT_GOOD_R_SHA != $ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $LEFT_GOOD_R_SHA != $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $LEFT_GOOD_R_SHA != $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_testresult.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_testresult.at:26: test \$LEFT_GOOD_F_SHA != \$ROOT_F_SHA"
echo t_testresult.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $LEFT_GOOD_F_SHA != $ROOT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $LEFT_GOOD_F_SHA != $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $LEFT_GOOD_F_SHA != $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_testresult.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >testfile <<'_ATEOF'
first line of the file
an insertion between first and second
second line of the file
third line of the file
an evil line which should never be seen
_ATEOF


$at_traceoff
echo "$at_srcdir/t_testresult.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah"
echo t_testresult.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_testresult.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

LEFT_BAD_R_SHA=`cat _MTN/revision`
LEFT_BAD_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
$at_traceoff
echo "$at_srcdir/t_testresult.at:38: test \$LEFT_BAD_R_SHA != \$LEFT_GOOD_R_SHA"
echo t_testresult.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $LEFT_BAD_R_SHA != $LEFT_GOOD_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $LEFT_BAD_R_SHA != $LEFT_GOOD_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $LEFT_BAD_R_SHA != $LEFT_GOOD_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_testresult.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_testresult.at:39: test \$LEFT_BAD_F_SHA != \$LEFT_GOOD_F_SHA"
echo t_testresult.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $LEFT_BAD_F_SHA != $LEFT_GOOD_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $LEFT_BAD_F_SHA != $LEFT_GOOD_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $LEFT_BAD_F_SHA != $LEFT_GOOD_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_testresult.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_testresult.at:41: rm -rf _MTN.old"
echo t_testresult.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_testresult.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_testresult.at:41: mv  _MTN _MTN.old"
echo t_testresult.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_testresult.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_testresult.at:41: rm testfile"
echo t_testresult.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_testresult.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_testresult.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$ROOT_R_SHA ."
echo t_testresult.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_testresult.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_testresult.at:41: mv _MTN.old/options _MTN"
echo t_testresult.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_testresult.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
PROBE_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
$at_traceoff
echo "$at_srcdir/t_testresult.at:41: test \$PROBE_R_SHA = \$ROOT_R_SHA"
echo t_testresult.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_testresult.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_testresult.at:41: test \$PROBE_F_SHA = \$ROOT_F_SHA"
echo t_testresult.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_F_SHA = $ROOT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_F_SHA = $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_F_SHA = $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_testresult.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
first line of the file
second line of the file
an insertion between second and third
third line of the file
_ATEOF



$at_traceoff
echo "$at_srcdir/t_testresult.at:50: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net testresult \$ROOT_R_SHA 1"
echo t_testresult.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net testresult $ROOT_R_SHA 1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net testresult $ROOT_R_SHA 1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net testresult $ROOT_R_SHA 1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_testresult.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_testresult.at:51: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net testresult \$LEFT_GOOD_R_SHA 1"
echo t_testresult.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net testresult $LEFT_GOOD_R_SHA 1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net testresult $LEFT_GOOD_R_SHA 1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net testresult $LEFT_GOOD_R_SHA 1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_testresult.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_testresult.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net testresult \$LEFT_BAD_R_SHA 0"
echo t_testresult.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net testresult $LEFT_BAD_R_SHA 0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net testresult $LEFT_BAD_R_SHA 0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net testresult $LEFT_BAD_R_SHA 0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_testresult.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_testresult.at:53: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_testresult.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_testresult.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# files should now be merged

cat >probe <<'_ATEOF'
first line of the file
an insertion between first and second
second line of the file
an insertion between second and third
third line of the file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_testresult.at:64: cmp testfile probe"
echo t_testresult.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile probe ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile probe ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_testresult.at:64: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  35 ) # 35. t_singlecvs.at:3: importing a CVS file with one version
    at_setup_line='t_singlecvs.at:3'
    at_desc='importing a CVS file with one version'
    $at_quiet $ECHO_N " 35: importing a CVS file with one version        $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "35. t_singlecvs.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_singlecvs.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_singlecvs.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_singlecvs.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_singlecvs.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_singlecvs.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_singlecvs.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_singlecvs.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_singlecvs.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_singlecvs.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_singlecvs.at:5: rm test_keys"
echo t_singlecvs.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_singlecvs.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >importme.0 <<'_ATEOF'
version 0 of test file
_ATEOF


TSHA0=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify importme.0`

# build the cvs repository

CVSROOT=`pwd`/cvs-repository
$at_traceoff
echo "$at_srcdir/t_singlecvs.at:15: cvs -q -d \$CVSROOT init"
echo t_singlecvs.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -q -d $CVSROOT init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -q -d $CVSROOT init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -q -d $CVSROOT init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_singlecvs.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_singlecvs.at:16: test -e \$CVSROOT"
echo t_singlecvs.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test -e $CVSROOT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e $CVSROOT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e $CVSROOT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_singlecvs.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_singlecvs.at:17: test -e \$CVSROOT/CVSROOT"
echo t_singlecvs.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test -e $CVSROOT/CVSROOT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e $CVSROOT/CVSROOT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e $CVSROOT/CVSROOT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_singlecvs.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_singlecvs.at:18: test -e \$CVSROOT/CVSROOT/modules"
echo t_singlecvs.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test -e $CVSROOT/CVSROOT/modules" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e $CVSROOT/CVSROOT/modules ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e $CVSROOT/CVSROOT/modules ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_singlecvs.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check out the workspace and make a commit

$at_traceoff
echo "$at_srcdir/t_singlecvs.at:22: cvs -d \$CVSROOT co ."
echo t_singlecvs.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT co ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT co . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT co . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_singlecvs.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_singlecvs.at:23: mkdir testdir"
echo t_singlecvs.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir testdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir testdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_singlecvs.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_singlecvs.at:24: cp importme.0 testdir/importme"
echo t_singlecvs.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp importme.0 testdir/importme ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp importme.0 testdir/importme ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_singlecvs.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_singlecvs.at:25: cvs -d \$CVSROOT add testdir"
echo t_singlecvs.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT add testdir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT add testdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT add testdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_singlecvs.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_singlecvs.at:26: cvs -d \$CVSROOT add testdir/importme"
echo t_singlecvs.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT add testdir/importme" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT add testdir/importme ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT add testdir/importme ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_singlecvs.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_singlecvs.at:27: cvs -d \$CVSROOT commit -m 'commit 0' testdir/importme"
echo t_singlecvs.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT commit -m 'commit 0' testdir/importme" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT commit -m 'commit 0' testdir/importme ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT commit -m 'commit 0' testdir/importme ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_singlecvs.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# import into monotone and check presence of file

$at_traceoff
echo "$at_srcdir/t_singlecvs.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch cvs_import \$CVSROOT/testdir"
echo t_singlecvs.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch cvs_import $CVSROOT/testdir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch cvs_import $CVSROOT/testdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch cvs_import $CVSROOT/testdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_singlecvs.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_singlecvs.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_file \$TSHA0"
echo t_singlecvs.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_singlecvs.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  36 ) # 36. t_ls_missing.at:3: list missing files
    at_setup_line='t_ls_missing.at:3'
    at_desc='list missing files'
    $at_quiet $ECHO_N " 36: list missing files                           $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "36. t_ls_missing.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_ls_missing.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_ls_missing.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_missing.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_missing.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_ls_missing.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_missing.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_missing.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_ls_missing.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_missing.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_missing.at:5: rm test_keys"
echo t_ls_missing.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_missing.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo <<'_ATEOF'
the foo file
_ATEOF


cat >bar <<'_ATEOF'
the bar file
_ATEOF


cat >missingfoo <<'_ATEOF'
foo
_ATEOF


cat >missingbar <<'_ATEOF'
bar
_ATEOF


$at_traceoff
echo "$at_srcdir/t_ls_missing.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls missing"
echo t_ls_missing.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_missing.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_missing.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo bar"
echo t_ls_missing.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_missing.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_missing.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls missing"
echo t_ls_missing.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_missing.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_missing.at:24: rm foo"
echo t_ls_missing.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_missing.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_missing.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls missing"
echo t_ls_missing.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_missing.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_missing.at:26:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_ls_missing.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_missing.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_missing.at:27: cmp stdout missingfoo"
echo t_ls_missing.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout missingfoo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout missingfoo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_missing.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_missing.at:29: touch foo"
echo t_ls_missing.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; touch foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; touch foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_missing.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_missing.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop foo"
echo t_ls_missing.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_missing.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_missing.at:31: rm foo"
echo t_ls_missing.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_missing.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_missing.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls missing"
echo t_ls_missing.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_missing.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_missing.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='committed'"
echo t_ls_missing.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='committed'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='committed' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='committed' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_missing.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_missing.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls missing"
echo t_ls_missing.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_missing.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_missing.at:37: rm bar"
echo t_ls_missing.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_missing.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_missing.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls missing"
echo t_ls_missing.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_missing.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_missing.at:39:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_ls_missing.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_missing.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_missing.at:40: cmp stdout missingbar"
echo t_ls_missing.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout missingbar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout missingbar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_missing.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_missing.at:42: touch bar"
echo t_ls_missing.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; touch bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; touch bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_missing.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_missing.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop bar"
echo t_ls_missing.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_missing.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_missing.at:44: rm bar"
echo t_ls_missing.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_missing.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_missing.at:45: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls missing"
echo t_ls_missing.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_missing.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  37 ) # 37. t_attributes.at:3: attr set/get commands
    at_setup_line='t_attributes.at:3'
    at_desc='attr set/get commands'
    $at_quiet $ECHO_N " 37: attr set/get commands                        $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "37. t_attributes.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_attributes.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_attributes.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attributes.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attributes.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_attributes.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attributes.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attributes.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_attributes.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attributes.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attributes.at:5: rm test_keys"
echo t_attributes.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attributes.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo <<'_ATEOF'
some data
_ATEOF

# Check a single character filename too, because those have had bugs.
cat >a <<'_ATEOF'
some data
_ATEOF


$at_traceoff
echo "$at_srcdir/t_attributes.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_attributes.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attributes.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attributes.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add a"
echo t_attributes.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add a" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attributes.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attributes.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr set foo test:test_attr true"
echo t_attributes.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set foo test:test_attr true" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set foo test:test_attr true ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set foo test:test_attr true ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attributes.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attributes.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr set a test:test_attr 1"
echo t_attributes.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set a test:test_attr 1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set a test:test_attr 1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set a test:test_attr 1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attributes.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attributes.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah"
echo t_attributes.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attributes.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

CO_R_SHA1=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_attributes.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr drop foo test:test_attr"
echo t_attributes.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr drop foo test:test_attr" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr drop foo test:test_attr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr drop foo test:test_attr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attributes.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attributes.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr set a test:test_attr 2"
echo t_attributes.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set a test:test_attr 2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set a test:test_attr 2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set a test:test_attr 2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attributes.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attributes.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah"
echo t_attributes.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attributes.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

UPDATE_R_SHA1=`cat _MTN/revision`

# Check checkouts.
$at_traceoff
echo "$at_srcdir/t_attributes.at:26: rm -rf co-dir"
echo t_attributes.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf co-dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf co-dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attributes.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attributes.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$CO_R_SHA1 co-dir"
echo t_attributes.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$CO_R_SHA1 co-dir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$CO_R_SHA1 co-dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$CO_R_SHA1 co-dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attributes.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attributes.at:28: grep \"test:test_attr:foo:true\" stdout"
echo t_attributes.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "test:test_attr:foo:true" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "test:test_attr:foo:true" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attributes.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attributes.at:29: grep \"test:test_attr:a:1\" stdout"
echo t_attributes.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "test:test_attr:a:1" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "test:test_attr:a:1" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attributes.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Check updates.
$at_traceoff
echo "$at_srcdir/t_attributes.at:32: rm -rf co-dir"
echo t_attributes.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf co-dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf co-dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attributes.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attributes.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$UPDATE_R_SHA1 co-dir"
echo t_attributes.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$UPDATE_R_SHA1 co-dir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$UPDATE_R_SHA1 co-dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$UPDATE_R_SHA1 co-dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attributes.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attributes.at:34: grep \"test:test_attr:foo\" stdout"
echo t_attributes.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "test:test_attr:foo" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "test:test_attr:foo" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_attributes.at:34: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attributes.at:35: grep \"test:test_attr:a:2\" stdout"
echo t_attributes.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "test:test_attr:a:2" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "test:test_attr:a:2" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attributes.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check that files must exist to have attributes set
$at_traceoff
echo "$at_srcdir/t_attributes.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr set missing mtn:execute"
echo t_attributes.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set missing mtn:execute" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set missing mtn:execute ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set missing mtn:execute ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_attributes.at:38: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  38 ) # 38. t_single_char_filenames.at:6: single character filename support
    at_setup_line='t_single_char_filenames.at:6'
    at_desc='single character filename support'
    $at_quiet $ECHO_N " 38: single character filename support            $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "38. t_single_char_filenames.at:6: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_single_char_filenames.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_single_char_filenames.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_single_char_filenames.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_single_char_filenames.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_single_char_filenames.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_single_char_filenames.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_single_char_filenames.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_single_char_filenames.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_single_char_filenames.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_single_char_filenames.at:8: rm test_keys"
echo t_single_char_filenames.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_single_char_filenames.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >a <<'_ATEOF'
some data
_ATEOF


$at_traceoff
echo "$at_srcdir/t_single_char_filenames.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add a"
echo t_single_char_filenames.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add a" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_single_char_filenames.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_single_char_filenames.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah"
echo t_single_char_filenames.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_single_char_filenames.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

A_R_SHA1=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_single_char_filenames.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename a b"
echo t_single_char_filenames.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename a b" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename a b ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename a b ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_single_char_filenames.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_single_char_filenames.at:18: mv a b"
echo t_single_char_filenames.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv a b ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv a b ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_single_char_filenames.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_single_char_filenames.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah"
echo t_single_char_filenames.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_single_char_filenames.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

B_R_SHA1=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_single_char_filenames.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop b"
echo t_single_char_filenames.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop b" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop b ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop b ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_single_char_filenames.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_single_char_filenames.at:23: rm -f b"
echo t_single_char_filenames.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f b ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f b ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_single_char_filenames.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_single_char_filenames.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah"
echo t_single_char_filenames.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_single_char_filenames.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

NULL_R_SHA1=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_single_char_filenames.at:27: rm -rf _MTN"
echo t_single_char_filenames.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_single_char_filenames.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_single_char_filenames.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$A_R_SHA1 a-dir"
echo t_single_char_filenames.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A_R_SHA1 a-dir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A_R_SHA1 a-dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A_R_SHA1 a-dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_single_char_filenames.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_single_char_filenames.at:29: test -e a-dir/a"
echo t_single_char_filenames.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e a-dir/a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e a-dir/a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_single_char_filenames.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_single_char_filenames.at:30: test ! -e a-dir/b"
echo t_single_char_filenames.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e a-dir/b ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e a-dir/b ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_single_char_filenames.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_single_char_filenames.at:32: rm -rf _MTN"
echo t_single_char_filenames.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_single_char_filenames.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_single_char_filenames.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$B_R_SHA1 b-dir"
echo t_single_char_filenames.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$B_R_SHA1 b-dir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$B_R_SHA1 b-dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$B_R_SHA1 b-dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_single_char_filenames.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_single_char_filenames.at:34: test ! -e b-dir/a"
echo t_single_char_filenames.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e b-dir/a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e b-dir/a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_single_char_filenames.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_single_char_filenames.at:35: test -e b-dir/b"
echo t_single_char_filenames.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e b-dir/b ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e b-dir/b ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_single_char_filenames.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_single_char_filenames.at:37: rm -rf _MTN"
echo t_single_char_filenames.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_single_char_filenames.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_single_char_filenames.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$NULL_R_SHA1 null-dir"
echo t_single_char_filenames.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$NULL_R_SHA1 null-dir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$NULL_R_SHA1 null-dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$NULL_R_SHA1 null-dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_single_char_filenames.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_single_char_filenames.at:39: test ! -e null-dir/a"
echo t_single_char_filenames.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e null-dir/a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e null-dir/a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_single_char_filenames.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_single_char_filenames.at:40: test ! -e null-dir/b"
echo t_single_char_filenames.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e null-dir/b ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e null-dir/b ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_single_char_filenames.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  39 ) # 39. t_restrictions.at:3: manifest restrictions
    at_setup_line='t_restrictions.at:3'
    at_desc='manifest restrictions'
    $at_quiet $ECHO_N " 39: manifest restrictions                        $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "39. t_restrictions.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_restrictions.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_restrictions.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_restrictions.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_restrictions.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:5: rm test_keys"
echo t_restrictions.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >ignored.lua <<'_ATEOF'

function ignore_file(name)
   if (string.find(name, "%.o$")) then return true end
   return false;
end
_ATEOF


$at_traceoff
echo "$at_srcdir/t_restrictions.at:14: mkdir work"
echo t_restrictions.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:15: mkdir work/A"
echo t_restrictions.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir work/A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir work/A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:16: mkdir work/A/B"
echo t_restrictions.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir work/A/B ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir work/A/B ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >work/foo.o <<'_ATEOF'
version 1 of foo.o
_ATEOF


cat >work/fileX <<'_ATEOF'
version 1 of fileX which will be renamed to work/file1
_ATEOF


cat >work/file2 <<'_ATEOF'
version 1 of file2
_ATEOF


cat >work/file3 <<'_ATEOF'
version 1 of file3
_ATEOF


cat >work/file4 <<'_ATEOF'
version 1 of file4
_ATEOF


cat >work/A/fileA <<'_ATEOF'
file in a subdirectory
_ATEOF


cat >work/A/B/fileAB <<'_ATEOF'
file in a deeper subdirectory
_ATEOF


$at_traceoff
echo "$at_srcdir/t_restrictions.at:39: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add work/fileX"
echo t_restrictions.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add work/fileX" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add work/fileX ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add work/fileX ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add work/file2"
echo t_restrictions.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add work/file2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add work/file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add work/file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add work/file3"
echo t_restrictions.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add work/file3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add work/file3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add work/file3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add work/A/fileA"
echo t_restrictions.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add work/A/fileA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add work/A/fileA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add work/A/fileA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add work/A/B/fileAB"
echo t_restrictions.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add work/A/B/fileAB" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add work/A/B/fileAB ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add work/A/B/fileAB ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# initial commit

$at_traceoff
echo "$at_srcdir/t_restrictions.at:47: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='add fileX23'"
echo t_restrictions.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='add fileX23'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='add fileX23' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='add fileX23' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# FIXME_RESTRICTIONS: the old code allows for --depth=N with no paths
# and adds the "." path so that depth is interpreted against the current
# included directory. this seems bad. how does --depth interact with --exclude?
#AT_CHECK(MTN ls known --depth=0, [], [stdout], [ignore])
#AT_CHECK(grep fileX stdout, [1], [ignore])

$at_traceoff
echo "$at_srcdir/t_restrictions.at:55: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls known --depth=0 . "
echo t_restrictions.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known --depth=0 . " in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known --depth=0 .  ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known --depth=0 .  ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:56: grep fileX stdout"
echo t_restrictions.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep fileX stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep fileX stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restrictions.at:56: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restrictions.at:58: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls known --depth=1 . "
echo t_restrictions.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known --depth=1 . " in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known --depth=1 .  ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known --depth=1 .  ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:59: grep fileX stdout"
echo t_restrictions.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep fileX stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep fileX stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restrictions.at:61: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls known --depth=0 work/A "
echo t_restrictions.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known --depth=0 work/A " in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known --depth=0 work/A  ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known --depth=0 work/A  ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:62: grep fileAB stdout"
echo t_restrictions.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep fileAB stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep fileAB stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restrictions.at:62: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restrictions.at:64: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls known --depth=1 work/A "
echo t_restrictions.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known --depth=1 work/A " in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known --depth=1 work/A  ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known --depth=1 work/A  ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:64: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:65: grep fileAB stdout"
echo t_restrictions.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep fileAB stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep fileAB stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# test restriction of unknown, missing, ignored files

$at_traceoff
echo "$at_srcdir/t_restrictions.at:69: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls unknown"
echo t_restrictions.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:70: grep work/file4 stdout"
echo t_restrictions.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep work/file4 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep work/file4 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restrictions.at:72: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls unknown work"
echo t_restrictions.at:72 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown work" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:72: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:73: grep work/file4 stdout"
echo t_restrictions.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep work/file4 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep work/file4 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:73: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restrictions.at:75: mv work/file2 work/filex2"
echo t_restrictions.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv work/file2 work/filex2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv work/file2 work/filex2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restrictions.at:77: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls missing"
echo t_restrictions.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:78: grep work/file2 stdout"
echo t_restrictions.at:78 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep work/file2 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep work/file2 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:78: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restrictions.at:80: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls missing work/file2"
echo t_restrictions.at:80 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing work/file2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing work/file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing work/file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:80: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:81: grep work/file2 stdout"
echo t_restrictions.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep work/file2 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep work/file2 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:81: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restrictions.at:83: mv work/filex2 work/file2"
echo t_restrictions.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv work/filex2 work/file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv work/filex2 work/file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restrictions.at:85: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile=ignored.lua"
echo t_restrictions.at:85 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile=ignored.lua" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile=ignored.lua ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile=ignored.lua ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:85: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:86: grep work/foo.o stdout"
echo t_restrictions.at:86 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep work/foo.o stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep work/foo.o stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:86: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restrictions.at:88: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile=ignored.lua work"
echo t_restrictions.at:88 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile=ignored.lua work" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile=ignored.lua work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile=ignored.lua work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:88: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:89: grep work/foo.o stdout"
echo t_restrictions.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep work/foo.o stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep work/foo.o stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:89: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# create moved, dropped, and changed work to test status, diff, commit

$at_traceoff
echo "$at_srcdir/t_restrictions.at:93: mv work/fileX work/file1"
echo t_restrictions.at:93 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv work/fileX work/file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv work/fileX work/file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:93: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:94: rm work/file2"
echo t_restrictions.at:94 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm work/file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm work/file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:94: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >work/file3 <<'_ATEOF'
version 2 of file3 with some changes
_ATEOF


cat >work/A/fileA <<'_ATEOF'
version 2 of fileA with some changes
_ATEOF


cat >work/A/B/fileAB <<'_ATEOF'
version 2 of fileAB with some changes
_ATEOF


$at_traceoff
echo "$at_srcdir/t_restrictions.at:105: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename work/fileX work/file1"
echo t_restrictions.at:105 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename work/fileX work/file1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename work/fileX work/file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename work/fileX work/file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:105: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:106: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop work/file2"
echo t_restrictions.at:106 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop work/file2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop work/file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop work/file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:106: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:107: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add work/file4"
echo t_restrictions.at:107 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add work/file4" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add work/file4 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add work/file4 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:107: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# moved fileX to file1
# dropped file2
# changed file3
# added file4

# test for files included/excluded in various outputs





# status

$at_traceoff
echo "$at_srcdir/t_restrictions.at:138: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_restrictions.at:138 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:138: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:139:
files=\"\"
for i in X 1 2 3 4
do
        grep work/file\$i stdout || files=\"\$files \$i\"
done
echo \"missed: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:139 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in X 1 2 3 4
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in X 1 2 3 4
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:139: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# include both source and target of rename

$at_traceoff
echo "$at_srcdir/t_restrictions.at:143: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status work/fileX work/file1"
echo t_restrictions.at:143 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status work/fileX work/file1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status work/fileX work/file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status work/fileX work/file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:143: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:144:
files=\"\"
for i in X 1
do
        grep work/file\$i stdout || files=\"\$files \$i\"
done
echo \"missed: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:144 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in X 1
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in X 1
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:144: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:145:
files=\"\"
for i in 2 3 4
do
        grep work/file\$i stdout && files=\"\$files \$i\"
done
echo \"seen: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:145 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in 2 3 4
do
        grep work/file$i stdout && files="$files $i"
done
echo "seen: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in 2 3 4
do
        grep work/file$i stdout && files="$files $i"
done
echo "seen: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:145: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# include drop

$at_traceoff
echo "$at_srcdir/t_restrictions.at:149: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status work/file2"
echo t_restrictions.at:149 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status work/file2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status work/file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status work/file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:149: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:150:
files=\"\"
for i in 2
do
        grep work/file\$i stdout || files=\"\$files \$i\"
done
echo \"missed: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:150 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in 2
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in 2
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:150: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:151:
files=\"\"
for i in X 1 3 4
do
        grep work/file\$i stdout && files=\"\$files \$i\"
done
echo \"seen: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:151 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in X 1 3 4
do
        grep work/file$i stdout && files="$files $i"
done
echo "seen: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in X 1 3 4
do
        grep work/file$i stdout && files="$files $i"
done
echo "seen: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:151: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# include delta

$at_traceoff
echo "$at_srcdir/t_restrictions.at:155: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status work/file3"
echo t_restrictions.at:155 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status work/file3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status work/file3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status work/file3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:155: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:156:
files=\"\"
for i in 3
do
        grep work/file\$i stdout || files=\"\$files \$i\"
done
echo \"missed: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:156 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in 3
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in 3
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:156: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:157:
files=\"\"
for i in X 1 2 4
do
        grep work/file\$i stdout && files=\"\$files \$i\"
done
echo \"seen: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:157 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in X 1 2 4
do
        grep work/file$i stdout && files="$files $i"
done
echo "seen: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in X 1 2 4
do
        grep work/file$i stdout && files="$files $i"
done
echo "seen: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:157: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# include add

$at_traceoff
echo "$at_srcdir/t_restrictions.at:161: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status work/file4"
echo t_restrictions.at:161 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status work/file4" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status work/file4 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status work/file4 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:161: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:162:
files=\"\"
for i in 4
do
        grep work/file\$i stdout || files=\"\$files \$i\"
done
echo \"missed: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:162 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in 4
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in 4
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:162: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:163:
files=\"\"
for i in X 1 2 3
do
        grep work/file\$i stdout && files=\"\$files \$i\"
done
echo \"seen: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:163 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in X 1 2 3
do
        grep work/file$i stdout && files="$files $i"
done
echo "seen: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in X 1 2 3
do
        grep work/file$i stdout && files="$files $i"
done
echo "seen: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:163: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# diff

$at_traceoff
echo "$at_srcdir/t_restrictions.at:167: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff"
echo t_restrictions.at:167 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:167: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:168:
files=\"\"
for i in X 1 2 3 4
do
        grep work/file\$i stdout || files=\"\$files \$i\"
done
echo \"missed: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:168 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in X 1 2 3 4
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in X 1 2 3 4
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:168: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restrictions.at:170: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff --depth=0 . "
echo t_restrictions.at:170 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --depth=0 . " in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --depth=0 .  ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --depth=0 .  ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:170: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:171: grep fileAB stdout"
echo t_restrictions.at:171 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep fileAB stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep fileAB stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restrictions.at:171: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restrictions.at:173: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff --depth=2 . "
echo t_restrictions.at:173 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --depth=2 . " in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --depth=2 .  ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --depth=2 .  ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:173: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:174: grep fileA stdout"
echo t_restrictions.at:174 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep fileA stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep fileA stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:174: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restrictions.at:176: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff --context --depth=0 . "
echo t_restrictions.at:176 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --context --depth=0 . " in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --context --depth=0 .  ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --context --depth=0 .  ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:176: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:177: grep fileAB stdout"
echo t_restrictions.at:177 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep fileAB stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep fileAB stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restrictions.at:177: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restrictions.at:179: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff --context --depth=2 . "
echo t_restrictions.at:179 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --context --depth=2 . " in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --context --depth=2 .  ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --context --depth=2 .  ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:179: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:180: grep fileA stdout"
echo t_restrictions.at:180 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep fileA stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep fileA stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:180: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# include both source and target of rename

$at_traceoff
echo "$at_srcdir/t_restrictions.at:184: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff work/fileX work/file1"
echo t_restrictions.at:184 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff work/fileX work/file1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff work/fileX work/file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff work/fileX work/file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:184: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:185:
files=\"\"
for i in X 1
do
        grep work/file\$i stdout || files=\"\$files \$i\"
done
echo \"missed: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:185 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in X 1
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in X 1
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:185: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:186:
files=\"\"
for i in 2 3 4
do
        grep work/file\$i stdout && files=\"\$files \$i\"
done
echo \"seen: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:186 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in 2 3 4
do
        grep work/file$i stdout && files="$files $i"
done
echo "seen: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in 2 3 4
do
        grep work/file$i stdout && files="$files $i"
done
echo "seen: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:186: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# include drop

$at_traceoff
echo "$at_srcdir/t_restrictions.at:190: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff work/file2"
echo t_restrictions.at:190 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff work/file2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff work/file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff work/file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:190: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:191:
files=\"\"
for i in 2
do
        grep work/file\$i stdout || files=\"\$files \$i\"
done
echo \"missed: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:191 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in 2
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in 2
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:191: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:192:
files=\"\"
for i in X 1 3 4
do
        grep work/file\$i stdout && files=\"\$files \$i\"
done
echo \"seen: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:192 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in X 1 3 4
do
        grep work/file$i stdout && files="$files $i"
done
echo "seen: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in X 1 3 4
do
        grep work/file$i stdout && files="$files $i"
done
echo "seen: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:192: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# include delta

$at_traceoff
echo "$at_srcdir/t_restrictions.at:196: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff work/file3"
echo t_restrictions.at:196 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff work/file3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff work/file3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff work/file3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:196: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:197:
files=\"\"
for i in 3
do
        grep work/file\$i stdout || files=\"\$files \$i\"
done
echo \"missed: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:197 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in 3
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in 3
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:197: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:198:
files=\"\"
for i in X 1 2 4
do
        grep work/file\$i stdout && files=\"\$files \$i\"
done
echo \"seen: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:198 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in X 1 2 4
do
        grep work/file$i stdout && files="$files $i"
done
echo "seen: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in X 1 2 4
do
        grep work/file$i stdout && files="$files $i"
done
echo "seen: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:198: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# include add

$at_traceoff
echo "$at_srcdir/t_restrictions.at:202: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff work/file4"
echo t_restrictions.at:202 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff work/file4" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff work/file4 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff work/file4 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:202: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:203:
files=\"\"
for i in 4
do
        grep work/file\$i stdout || files=\"\$files \$i\"
done
echo \"missed: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:203 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in 4
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in 4
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:203: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:204:
files=\"\"
for i in X 1 2 3
do
        grep work/file\$i stdout && files=\"\$files \$i\"
done
echo \"seen: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:204 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in X 1 2 3
do
        grep work/file$i stdout && files="$files $i"
done
echo "seen: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in X 1 2 3
do
        grep work/file$i stdout && files="$files $i"
done
echo "seen: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:204: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# commit

$at_traceoff
echo "$at_srcdir/t_restrictions.at:208: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_restrictions.at:208 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:208: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:209:
files=\"\"
for i in X 1 2 3 4
do
        grep work/file\$i stdout || files=\"\$files \$i\"
done
echo \"missed: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:209 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in X 1 2 3 4
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in X 1 2 3 4
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:209: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# include rename source and target

$at_traceoff
echo "$at_srcdir/t_restrictions.at:213: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message='move fileX to file1' work/fileX work/file1"
echo t_restrictions.at:213 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message='move fileX to file1' work/fileX work/file1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message='move fileX to file1' work/fileX work/file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message='move fileX to file1' work/fileX work/file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:213: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restrictions.at:215: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_restrictions.at:215 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:215: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:216:
files=\"\"
for i in 2 3 4
do
        grep work/file\$i stdout || files=\"\$files \$i\"
done
echo \"missed: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:216 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in 2 3 4
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in 2 3 4
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:216: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:217:
files=\"\"
for i in X 1
do
        grep work/file\$i stdout && files=\"\$files \$i\"
done
echo \"seen: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:217 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in X 1
do
        grep work/file$i stdout && files="$files $i"
done
echo "seen: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in X 1
do
        grep work/file$i stdout && files="$files $i"
done
echo "seen: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:217: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# include drop

$at_traceoff
echo "$at_srcdir/t_restrictions.at:221: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message='drop file2' work/file2"
echo t_restrictions.at:221 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message='drop file2' work/file2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message='drop file2' work/file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message='drop file2' work/file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:221: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restrictions.at:223: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_restrictions.at:223 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:223: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:224:
files=\"\"
for i in 3 4
do
        grep work/file\$i stdout || files=\"\$files \$i\"
done
echo \"missed: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:224 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in 3 4
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in 3 4
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:224: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:225:
files=\"\"
for i in X 1 2
do
        grep work/file\$i stdout && files=\"\$files \$i\"
done
echo \"seen: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:225 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in X 1 2
do
        grep work/file$i stdout && files="$files $i"
done
echo "seen: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in X 1 2
do
        grep work/file$i stdout && files="$files $i"
done
echo "seen: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:225: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# include delta

$at_traceoff
echo "$at_srcdir/t_restrictions.at:229: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message='change file3' work/file3"
echo t_restrictions.at:229 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message='change file3' work/file3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message='change file3' work/file3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message='change file3' work/file3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:229: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restrictions.at:231: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_restrictions.at:231 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:231: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:232:
files=\"\"
for i in 4
do
        grep work/file\$i stdout || files=\"\$files \$i\"
done
echo \"missed: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:232 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in 4
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in 4
do
        grep work/file$i stdout || files="$files $i"
done
echo "missed: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:232: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:233:
files=\"\"
for i in X 1 2 3
do
        grep work/file\$i stdout && files=\"\$files \$i\"
done
echo \"seen: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:233 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in X 1 2 3
do
        grep work/file$i stdout && files="$files $i"
done
echo "seen: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in X 1 2 3
do
        grep work/file$i stdout && files="$files $i"
done
echo "seen: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:233: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# include add

$at_traceoff
echo "$at_srcdir/t_restrictions.at:237: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message='add file4' work/file4"
echo t_restrictions.at:237 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message='add file4' work/file4" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message='add file4' work/file4 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message='add file4' work/file4 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:237: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restrictions.at:239: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_restrictions.at:239 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:239: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:240:
files=\"\"
for i in X 1 2 3 4
do
        grep work/file\$i stdout && files=\"\$files \$i\"
done
echo \"seen: \$files\"
test -z \"\$files\"
"
echo t_restrictions.at:240 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
files=""
for i in X 1 2 3 4
do
        grep work/file$i stdout && files="$files $i"
done
echo "seen: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
files=""
for i in X 1 2 3 4
do
        grep work/file$i stdout && files="$files $i"
done
echo "seen: $files"
test -z "$files"
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:240: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# setup for excluded commits

# moved file1 to fileY
# dropped file2
# changed file3
# added file4

# moved file3 to file
# dropped file1
# changed file4
# added file5

# exclude rename source
# exclude rename target
# exclude drop
# exclude delta
# exclude add

# test bad removal of restricted files
# (set/iterator/erase bug found by matt@ucc.asn.au)

for i in one two three four five six seven eight nine ten eleven twelve
do
  $at_traceoff
echo "$at_srcdir/t_restrictions.at:265: echo \"file \$i\""
echo t_restrictions.at:265 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo \"file $i\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo "file $i" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo "file $i" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:265: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

  $at_traceoff
echo "$at_srcdir/t_restrictions.at:266: mv stdout file.\$i"
echo t_restrictions.at:266 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "mv stdout file.$i" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout file.$i ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout file.$i ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:266: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done

$at_traceoff
echo "$at_srcdir/t_restrictions.at:269: ls"
echo t_restrictions.at:269 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; ls ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; ls ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:269: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restrictions.at:271: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file.*"
echo t_restrictions.at:271 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file.*" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file.* ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file.* ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:271: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:272: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message='add 12 files'"
echo t_restrictions.at:272 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message='add 12 files'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message='add 12 files' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message='add 12 files' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:272: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in one three four five six seven eight nine ten eleven
do
  $at_traceoff
echo "$at_srcdir/t_restrictions.at:276: echo \"new file \$i\""
echo t_restrictions.at:276 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo \"new file $i\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo "new file $i" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo "new file $i" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:276: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

  $at_traceoff
echo "$at_srcdir/t_restrictions.at:277: mv stdout file.\$i"
echo t_restrictions.at:277 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "mv stdout file.$i" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout file.$i ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout file.$i ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:277: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done

$at_traceoff
echo "$at_srcdir/t_restrictions.at:280: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff file.four file.ten"
echo t_restrictions.at:280 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff file.four file.ten" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff file.four file.ten ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff file.four file.ten ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:280: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restrictions.at:282: grep \"file.four\" stdout"
echo t_restrictions.at:282 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "file.four" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "file.four" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:282: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions.at:283: grep \"file.ten\"  stdout"
echo t_restrictions.at:283 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "file.ten"  stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "file.ten"  stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions.at:283: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# none of these should show up in the diff
# only four and ten are included

for i in one two three five six seven eight nine eleven twelve
do
        $at_traceoff
echo "$at_srcdir/t_restrictions.at:290: grep \"file.\$i\"  stdout"
echo t_restrictions.at:290 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"file.$i\"  stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "file.$i"  stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "file.$i"  stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restrictions.at:290: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done

      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  40 ) # 40. t_subdirs.at:3: subdirectory restrictions
    at_setup_line='t_subdirs.at:3'
    at_desc='subdirectory restrictions'
    $at_quiet $ECHO_N " 40: subdirectory restrictions                    $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "40. t_subdirs.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_subdirs.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_subdirs.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdirs.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_subdirs.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdirs.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_subdirs.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdirs.at:5: rm test_keys"
echo t_subdirs.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_subdirs.at:7: mkdir foo bar"
echo t_subdirs.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir foo bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir foo bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >foo/foo.txt <<'_ATEOF'
file foo.txt in dir foo
_ATEOF

cat >bar/bar.txt <<'_ATEOF'
file bar.txt in dir bar
_ATEOF


$at_traceoff
echo "$at_srcdir/t_subdirs.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_subdirs.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdirs.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add bar"
echo t_subdirs.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_subdirs.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_subdirs.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo/foo.txt <<'_ATEOF'
file foo.txt in dir foo changed
_ATEOF

cat >bar/bar.txt <<'_ATEOF'
file bar.txt in dir bar changed
_ATEOF


# should have tests for
# add, drop, rename, revert
#       - which use prefixing
# ls unknown, ignored, missing
#       - which use add_restriction and in_restriction directly
# commit, diff, status
#       - which use add_restriction and in_restriction through
#         restrict_patch_set

$at_traceoff
echo "$at_srcdir/t_subdirs.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_subdirs.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdirs.at:34: grep 'foo/foo' stdout"
echo t_subdirs.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'foo/foo' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'foo/foo' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdirs.at:35: grep 'bar/bar' stdout"
echo t_subdirs.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'bar/bar' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'bar/bar' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


ROOT=`pwd`


cd foo
$at_traceoff
echo "$at_srcdir/t_subdirs.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$ROOT/test_hooks.lua --nostd --norc --db=\$ROOT/test.db --key=tester@test.net --keydir=\$ROOT/keys status"
echo t_subdirs.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$ROOT/test_hooks.lua --nostd --norc --db=$ROOT/test.db --key=tester@test.net --keydir=$ROOT/keys status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$ROOT/test_hooks.lua --nostd --norc --db=$ROOT/test.db --key=tester@test.net --keydir=$ROOT/keys status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$ROOT/test_hooks.lua --nostd --norc --db=$ROOT/test.db --key=tester@test.net --keydir=$ROOT/keys status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdirs.at:42: grep 'foo/foo' stdout"
echo t_subdirs.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'foo/foo' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'foo/foo' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdirs.at:43: grep 'bar/bar' stdout"
echo t_subdirs.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'bar/bar' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'bar/bar' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_subdirs.at:45: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$ROOT/test_hooks.lua --nostd --norc --db=\$ROOT/test.db --key=tester@test.net --keydir=\$ROOT/keys status ."
echo t_subdirs.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$ROOT/test_hooks.lua --nostd --norc --db=$ROOT/test.db --key=tester@test.net --keydir=$ROOT/keys status ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$ROOT/test_hooks.lua --nostd --norc --db=$ROOT/test.db --key=tester@test.net --keydir=$ROOT/keys status . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$ROOT/test_hooks.lua --nostd --norc --db=$ROOT/test.db --key=tester@test.net --keydir=$ROOT/keys status . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdirs.at:46: grep 'foo/foo' stdout"
echo t_subdirs.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'foo/foo' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'foo/foo' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdirs.at:47: grep 'bar/bar' stdout"
echo t_subdirs.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'bar/bar' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'bar/bar' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_subdirs.at:47: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_subdirs.at:49: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$ROOT/test_hooks.lua --nostd --norc --db=\$ROOT/test.db --key=tester@test.net --keydir=\$ROOT/keys status .."
echo t_subdirs.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$ROOT/test_hooks.lua --nostd --norc --db=$ROOT/test.db --key=tester@test.net --keydir=$ROOT/keys status .." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$ROOT/test_hooks.lua --nostd --norc --db=$ROOT/test.db --key=tester@test.net --keydir=$ROOT/keys status .. ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$ROOT/test_hooks.lua --nostd --norc --db=$ROOT/test.db --key=tester@test.net --keydir=$ROOT/keys status .. ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdirs.at:50: grep 'foo/foo' stdout"
echo t_subdirs.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'foo/foo' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'foo/foo' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdirs.at:51: grep 'bar/bar' stdout"
echo t_subdirs.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'bar/bar' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'bar/bar' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cd ..

cd bar
$at_traceoff
echo "$at_srcdir/t_subdirs.at:55: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$ROOT/test_hooks.lua --nostd --norc --db=\$ROOT/test.db --key=tester@test.net --keydir=\$ROOT/keys status"
echo t_subdirs.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$ROOT/test_hooks.lua --nostd --norc --db=$ROOT/test.db --key=tester@test.net --keydir=$ROOT/keys status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$ROOT/test_hooks.lua --nostd --norc --db=$ROOT/test.db --key=tester@test.net --keydir=$ROOT/keys status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$ROOT/test_hooks.lua --nostd --norc --db=$ROOT/test.db --key=tester@test.net --keydir=$ROOT/keys status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdirs.at:56: grep 'foo/foo' stdout"
echo t_subdirs.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'foo/foo' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'foo/foo' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdirs.at:57: grep 'bar/bar' stdout"
echo t_subdirs.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'bar/bar' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'bar/bar' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_subdirs.at:59: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$ROOT/test_hooks.lua --nostd --norc --db=\$ROOT/test.db --key=tester@test.net --keydir=\$ROOT/keys status ."
echo t_subdirs.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$ROOT/test_hooks.lua --nostd --norc --db=$ROOT/test.db --key=tester@test.net --keydir=$ROOT/keys status ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$ROOT/test_hooks.lua --nostd --norc --db=$ROOT/test.db --key=tester@test.net --keydir=$ROOT/keys status . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$ROOT/test_hooks.lua --nostd --norc --db=$ROOT/test.db --key=tester@test.net --keydir=$ROOT/keys status . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdirs.at:60: grep 'foo/foo' stdout"
echo t_subdirs.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'foo/foo' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'foo/foo' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_subdirs.at:60: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdirs.at:61: grep 'bar/bar' stdout"
echo t_subdirs.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'bar/bar' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'bar/bar' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_subdirs.at:63: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$ROOT/test_hooks.lua --nostd --norc --db=\$ROOT/test.db --key=tester@test.net --keydir=\$ROOT/keys status .."
echo t_subdirs.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$ROOT/test_hooks.lua --nostd --norc --db=$ROOT/test.db --key=tester@test.net --keydir=$ROOT/keys status .." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$ROOT/test_hooks.lua --nostd --norc --db=$ROOT/test.db --key=tester@test.net --keydir=$ROOT/keys status .. ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$ROOT/test_hooks.lua --nostd --norc --db=$ROOT/test.db --key=tester@test.net --keydir=$ROOT/keys status .. ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdirs.at:64: grep 'foo/foo' stdout"
echo t_subdirs.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'foo/foo' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'foo/foo' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:64: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdirs.at:65: grep 'bar/bar' stdout"
echo t_subdirs.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'bar/bar' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'bar/bar' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdirs.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cd ..

# TODO: test a.c a.h a/foo.c a/foo.h from inside and outside of a

      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  41 ) # 41. t_movepatch.at:3: renaming a patched file
    at_setup_line='t_movepatch.at:3'
    at_desc='renaming a patched file'
    $at_quiet $ECHO_N " 41: renaming a patched file                      $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "41. t_movepatch.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_movepatch.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_movepatch.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movepatch.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_movepatch.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movepatch.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_movepatch.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movepatch.at:5: rm test_keys"
echo t_movepatch.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo <<'_ATEOF'
foo file
_ATEOF

cat >bleh <<'_ATEOF'
bleh file
_ATEOF


# produce root
$at_traceoff
echo "$at_srcdir/t_movepatch.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_movepatch.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movepatch.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah"
echo t_movepatch.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

ROOT_R_SHA=`cat _MTN/revision`
ROOT_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify foo`

# produce move edge
$at_traceoff
echo "$at_srcdir/t_movepatch.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename foo bar"
echo t_movepatch.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movepatch.at:20: cp foo bar"
echo t_movepatch.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foo bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foo bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movepatch.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah"
echo t_movepatch.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# revert to root

$at_traceoff
echo "$at_srcdir/t_movepatch.at:24: rm -rf _MTN.old"
echo t_movepatch.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movepatch.at:24: mv  _MTN _MTN.old"
echo t_movepatch.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movepatch.at:24: rm foo"
echo t_movepatch.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movepatch.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$ROOT_R_SHA ."
echo t_movepatch.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movepatch.at:24: mv _MTN.old/options _MTN"
echo t_movepatch.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
PROBE_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify foo`
$at_traceoff
echo "$at_srcdir/t_movepatch.at:24: test \$PROBE_R_SHA = \$ROOT_R_SHA"
echo t_movepatch.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movepatch.at:24: test \$PROBE_F_SHA = \$ROOT_F_SHA"
echo t_movepatch.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_F_SHA = $ROOT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_F_SHA = $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_F_SHA = $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_movepatch.at:25: rm bar"
echo t_movepatch.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# make a delta edge on the move preimage
$at_traceoff
echo "$at_srcdir/t_movepatch.at:28: cp bleh foo"
echo t_movepatch.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp bleh foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp bleh foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movepatch.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah"
echo t_movepatch.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# merge the delta and the rename
$at_traceoff
echo "$at_srcdir/t_movepatch.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge"
echo t_movepatch.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movepatch.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_movepatch.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check that the delta landed on the renamed target
$at_traceoff
echo "$at_srcdir/t_movepatch.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of"
echo t_movepatch.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movepatch.at:37: mv stdout manifest"
echo t_movepatch.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movepatch.at:38: grep bar manifest"
echo t_movepatch.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep bar manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep bar manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movepatch.at:39: grep foo manifest"
echo t_movepatch.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foo manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foo manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_movepatch.at:39: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movepatch.at:40: grep bleh bar"
echo t_movepatch.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep bleh bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep bleh bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movepatch.at:41: rm bar"
echo t_movepatch.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movepatch.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  42 ) # 42. t_movedel.at:3: renaming a deleted file
    at_setup_line='t_movedel.at:3'
    at_desc='renaming a deleted file'
    $at_quiet $ECHO_N " 42: renaming a deleted file                      $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "42. t_movedel.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_movedel.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_movedel.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movedel.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movedel.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_movedel.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movedel.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movedel.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_movedel.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movedel.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movedel.at:5: rm test_keys"
echo t_movedel.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movedel.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo <<'_ATEOF'
foo file
_ATEOF

cat >baz <<'_ATEOF'
baz file
_ATEOF


# produce root
$at_traceoff
echo "$at_srcdir/t_movedel.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_movedel.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movedel.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movedel.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah"
echo t_movedel.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movedel.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

ROOT_R_SHA=`cat _MTN/revision`
ROOT_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify foo`

# produce move edge
$at_traceoff
echo "$at_srcdir/t_movedel.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add baz"
echo t_movedel.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add baz" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add baz ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add baz ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movedel.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movedel.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename foo bar"
echo t_movedel.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movedel.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movedel.at:21: cp foo bar"
echo t_movedel.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foo bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foo bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movedel.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movedel.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah"
echo t_movedel.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movedel.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# revert to root

$at_traceoff
echo "$at_srcdir/t_movedel.at:25: rm -rf _MTN.old"
echo t_movedel.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movedel.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movedel.at:25: mv  _MTN _MTN.old"
echo t_movedel.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movedel.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movedel.at:25: rm foo"
echo t_movedel.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movedel.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movedel.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$ROOT_R_SHA ."
echo t_movedel.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movedel.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movedel.at:25: mv _MTN.old/options _MTN"
echo t_movedel.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movedel.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
PROBE_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify foo`
$at_traceoff
echo "$at_srcdir/t_movedel.at:25: test \$PROBE_R_SHA = \$ROOT_R_SHA"
echo t_movedel.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movedel.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movedel.at:25: test \$PROBE_F_SHA = \$ROOT_F_SHA"
echo t_movedel.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_F_SHA = $ROOT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_F_SHA = $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_F_SHA = $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movedel.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_movedel.at:26: rm bar"
echo t_movedel.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movedel.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# make a delete edge on the move preimage
$at_traceoff
echo "$at_srcdir/t_movedel.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop foo"
echo t_movedel.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movedel.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movedel.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah"
echo t_movedel.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movedel.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# merge the del and the rename
$at_traceoff
echo "$at_srcdir/t_movedel.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge"
echo t_movedel.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movedel.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movedel.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_movedel.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movedel.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check that the delete landed on the renamed target
$at_traceoff
echo "$at_srcdir/t_movedel.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of"
echo t_movedel.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movedel.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movedel.at:38: mv stdout manifest"
echo t_movedel.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movedel.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movedel.at:39: grep baz manifest"
echo t_movedel.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep baz manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep baz manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_movedel.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movedel.at:40: grep bar manifest"
echo t_movedel.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep bar manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep bar manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_movedel.at:40: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_movedel.at:41: grep foo manifest"
echo t_movedel.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foo manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foo manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_movedel.at:41: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  43 ) # 43. t_remerge.at:3: merging a rename twice
    at_setup_line='t_remerge.at:3'
    at_desc='merging a rename twice'
    $at_quiet $ECHO_N " 43: merging a rename twice                       $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "43. t_remerge.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_remerge.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_remerge.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_remerge.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_remerge.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_remerge.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_remerge.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_remerge.at:5: rm test_keys"
echo t_remerge.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# x_branch   y_branch
#
#   A
#   |\   this edge says rename(x, y)
#   | ----------
#   |           \
#   B            E--------\
#   |            |         |
#   |            F         |
#   C            |         |
#   |\propagate1 |         |
#   | -----------G         |
#   |            |         J
#   |            H         |
#   D            |         |
#    \propagate2 |         |
#     -----------I---------K

cat >x <<'_ATEOF'
data of state A
_ATEOF

cat >foo <<'_ATEOF'
extra blah blah foo
_ATEOF

cat >bar <<'_ATEOF'
extra blah blah bar
_ATEOF

cat >baz <<'_ATEOF'
extra blah blah baz
_ATEOF

cat >quux <<'_ATEOF'
extra blah blah quux
_ATEOF


# produce state A
$at_traceoff
echo "$at_srcdir/t_remerge.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add x"
echo t_remerge.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add x" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add x ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add x ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_remerge.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.x commit --message 'state A'"
echo t_remerge.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.x commit --message 'state A'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.x commit --message 'state A' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.x commit --message 'state A' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

A_REVISION_SHA=`cat _MTN/revision`

# produce state B
echo "data of state B" >x
$at_traceoff
echo "$at_srcdir/t_remerge.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.x commit --message 'state B'"
echo t_remerge.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.x commit --message 'state B'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.x commit --message 'state B' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.x commit --message 'state B' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# produce state C
echo "data of state C" >x
$at_traceoff
echo "$at_srcdir/t_remerge.at:47: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.x commit --message 'state C'"
echo t_remerge.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.x commit --message 'state C'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.x commit --message 'state C' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.x commit --message 'state C' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

C_REVISION_SHA=`cat _MTN/revision`

# produce state E

$at_traceoff
echo "$at_srcdir/t_remerge.at:51: rm -rf _MTN.old"
echo t_remerge.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_remerge.at:51: mv  _MTN _MTN.old"
echo t_remerge.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_remerge.at:51: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$A_REVISION_SHA ."
echo t_remerge.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A_REVISION_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A_REVISION_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A_REVISION_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_remerge.at:51: test \$PROBE_R_SHA = \$A_REVISION_SHA"
echo t_remerge.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $A_REVISION_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $A_REVISION_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $A_REVISION_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_remerge.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename x y"
echo t_remerge.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename x y" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename x y ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename x y ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

mv x y
$at_traceoff
echo "$at_srcdir/t_remerge.at:54: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y commit --message 'state E'"
echo t_remerge.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y commit --message 'state E'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y commit --message 'state E' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y commit --message 'state E' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

E_REVISION_SHA=`cat _MTN/revision`

# produce state F
$at_traceoff
echo "$at_srcdir/t_remerge.at:58: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_remerge.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_remerge.at:59: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y commit --message 'state F'"
echo t_remerge.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y commit --message 'state F'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y commit --message 'state F' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y commit --message 'state F' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# produce state G
$at_traceoff
echo "$at_srcdir/t_remerge.at:62: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net propagate branch.x branch.y"
echo t_remerge.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate branch.x branch.y" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate branch.x branch.y ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate branch.x branch.y ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_remerge.at:63: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y update"
echo t_remerge.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

G_REVISION_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_remerge.at:65: grep 'state C' y"
echo t_remerge.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'state C' y ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'state C' y ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# produce state D

$at_traceoff
echo "$at_srcdir/t_remerge.at:68: rm -rf _MTN.old"
echo t_remerge.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_remerge.at:68: mv  _MTN _MTN.old"
echo t_remerge.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_remerge.at:68: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$C_REVISION_SHA ."
echo t_remerge.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$C_REVISION_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$C_REVISION_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$C_REVISION_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_remerge.at:68: test \$PROBE_R_SHA = \$C_REVISION_SHA"
echo t_remerge.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $C_REVISION_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $C_REVISION_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $C_REVISION_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


echo "data of state D" >x
$at_traceoff
echo "$at_srcdir/t_remerge.at:70: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add bar"
echo t_remerge.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_remerge.at:71: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.x commit --message 'state D'"
echo t_remerge.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.x commit --message 'state D'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.x commit --message 'state D' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.x commit --message 'state D' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# produce state H

$at_traceoff
echo "$at_srcdir/t_remerge.at:74: rm -rf _MTN.old"
echo t_remerge.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_remerge.at:74: mv  _MTN _MTN.old"
echo t_remerge.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_remerge.at:74: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$G_REVISION_SHA ."
echo t_remerge.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$G_REVISION_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$G_REVISION_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$G_REVISION_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_remerge.at:74: test \$PROBE_R_SHA = \$G_REVISION_SHA"
echo t_remerge.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $G_REVISION_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $G_REVISION_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $G_REVISION_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_remerge.at:75: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add baz"
echo t_remerge.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add baz" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add baz ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add baz ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_remerge.at:76: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y commit --message 'state H'"
echo t_remerge.at:76 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y commit --message 'state H'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y commit --message 'state H' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y commit --message 'state H' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:76: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# produce state I
$at_traceoff
echo "$at_srcdir/t_remerge.at:79: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net propagate branch.x branch.y"
echo t_remerge.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate branch.x branch.y" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate branch.x branch.y ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate branch.x branch.y ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_remerge.at:80: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y update"
echo t_remerge.at:80 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:80: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_remerge.at:81: grep 'state D' y"
echo t_remerge.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'state D' y ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'state D' y ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:81: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# produce state J

$at_traceoff
echo "$at_srcdir/t_remerge.at:84: rm -rf _MTN.old"
echo t_remerge.at:84 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:84: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_remerge.at:84: mv  _MTN _MTN.old"
echo t_remerge.at:84 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:84: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_remerge.at:84: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$E_REVISION_SHA ."
echo t_remerge.at:84 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$E_REVISION_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$E_REVISION_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$E_REVISION_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:84: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_remerge.at:84: test \$PROBE_R_SHA = \$E_REVISION_SHA"
echo t_remerge.at:84 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $E_REVISION_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $E_REVISION_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $E_REVISION_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:84: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_remerge.at:85: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add quux"
echo t_remerge.at:85 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add quux" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add quux ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add quux ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:85: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_remerge.at:86: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y commit --message 'state J'"
echo t_remerge.at:86 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y commit --message 'state J'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y commit --message 'state J' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y commit --message 'state J' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:86: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# produce state K
$at_traceoff
echo "$at_srcdir/t_remerge.at:89: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y merge"
echo t_remerge.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:89: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_remerge.at:90: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y update"
echo t_remerge.at:90 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.y update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:90: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_remerge.at:92: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of"
echo t_remerge.at:92 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:92: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_remerge.at:93: mv stdout manifest"
echo t_remerge.at:93 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:93: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_remerge.at:94: grep y manifest"
echo t_remerge.at:94 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep y manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep y manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:94: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_remerge.at:95: grep -v x manifest"
echo t_remerge.at:95 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep -v x manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep -v x manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:95: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_remerge.at:96: test -f y"
echo t_remerge.at:96 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f y ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f y ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:96: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_remerge.at:97: grep 'state D' y"
echo t_remerge.at:97 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'state D' y ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'state D' y ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_remerge.at:97: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  44 ) # 44. t_update_missing.at:3: updating from a merge which adds a file
    at_setup_line='t_update_missing.at:3'
    at_desc='updating from a merge which adds a file'
    $at_quiet $ECHO_N " 44: updating from a merge which adds a file      $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "44. t_update_missing.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_update_missing.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_update_missing.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_missing.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_missing.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_update_missing.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_missing.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_missing.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_update_missing.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_missing.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_missing.at:5: rm test_keys"
echo t_update_missing.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_missing.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



touch a

$at_traceoff
echo "$at_srcdir/t_update_missing.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add a"
echo t_update_missing.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add a" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_missing.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_missing.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message \"commit a\""
echo t_update_missing.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message \"commit a\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message "commit a" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message "commit a" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_missing.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


ROOT_R_SHA=`cat _MTN/revision`
ROOT_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify a`

mkdir b
touch b/c

$at_traceoff
echo "$at_srcdir/t_update_missing.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add b"
echo t_update_missing.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add b" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add b ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add b ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_missing.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_missing.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message \"commit b/c\""
echo t_update_missing.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message \"commit b/c\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message "commit b/c" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message "commit b/c" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_missing.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_update_missing.at:21: rm -rf _MTN.old"
echo t_update_missing.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_missing.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_missing.at:21: mv  _MTN _MTN.old"
echo t_update_missing.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_missing.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_missing.at:21: rm a"
echo t_update_missing.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_missing.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_missing.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$ROOT_R_SHA ."
echo t_update_missing.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_missing.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_missing.at:21: mv _MTN.old/options _MTN"
echo t_update_missing.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv _MTN.old/options _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_missing.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
PROBE_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify a`
$at_traceoff
echo "$at_srcdir/t_update_missing.at:21: test \$PROBE_R_SHA = \$ROOT_R_SHA"
echo t_update_missing.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_missing.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_missing.at:21: test \$PROBE_F_SHA = \$ROOT_F_SHA"
echo t_update_missing.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_F_SHA = $ROOT_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_F_SHA = $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_F_SHA = $ROOT_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_missing.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



rm b/c
rmdir b
touch d

$at_traceoff
echo "$at_srcdir/t_update_missing.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add d"
echo t_update_missing.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add d" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add d ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add d ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_missing.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_missing.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message \"commit d\""
echo t_update_missing.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message \"commit d\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message "commit d" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message "commit d" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_missing.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_update_missing.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=a merge"
echo t_update_missing.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_missing.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_missing.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=a update"
echo t_update_missing.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_missing.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  45 ) # 45. t_chkeypass.at:3: changing passphrase of a private key
    at_setup_line='t_chkeypass.at:3'
    at_desc='changing passphrase of a private key'
    $at_quiet $ECHO_N " 45: changing passphrase of a private key         $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "45. t_chkeypass.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_chkeypass.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_chkeypass.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_chkeypass.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_chkeypass.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_chkeypass.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_chkeypass.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_chkeypass.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_chkeypass.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_chkeypass.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_chkeypass.at:5: rm test_keys"
echo t_chkeypass.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_chkeypass.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



TKEY=happy@bogus.com

# generate a new key
$at_traceoff
echo "$at_srcdir/t_chkeypass.at:10: (echo \$TKEY; echo \$TKEY) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net genkey \$TKEY"
echo t_chkeypass.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo $TKEY; echo $TKEY) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $TKEY" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo $TKEY; echo $TKEY) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $TKEY ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo $TKEY; echo $TKEY) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $TKEY ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_chkeypass.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# fail to enter any passphrase
$at_traceoff
echo "$at_srcdir/t_chkeypass.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net chkeypass \$TKEY </dev/null"
echo t_chkeypass.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net chkeypass $TKEY </dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net chkeypass $TKEY </dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net chkeypass $TKEY </dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_chkeypass.at:13: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# fail to give correct old passphrase
$at_traceoff
echo "$at_srcdir/t_chkeypass.at:16: (echo bad; echo bad; echo bad) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net chkeypass \$TKEY"
echo t_chkeypass.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo bad; echo bad; echo bad) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net chkeypass $TKEY" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo bad; echo bad; echo bad) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net chkeypass $TKEY ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo bad; echo bad; echo bad) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net chkeypass $TKEY ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_chkeypass.at:16: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# fail to repeat new password
$at_traceoff
echo "$at_srcdir/t_chkeypass.at:19: (echo \$TKEY; echo \$TKEY-new; echo bad) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net chkeypass \$TKEY"
echo t_chkeypass.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo $TKEY; echo $TKEY-new; echo bad) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net chkeypass $TKEY" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo $TKEY; echo $TKEY-new; echo bad) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net chkeypass $TKEY ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo $TKEY; echo $TKEY-new; echo bad) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net chkeypass $TKEY ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_chkeypass.at:19: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# change the passphrase successfully
$at_traceoff
echo "$at_srcdir/t_chkeypass.at:22: (echo \$TKEY; echo \$TKEY-new; echo \$TKEY-new) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net chkeypass \$TKEY"
echo t_chkeypass.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo $TKEY; echo $TKEY-new; echo $TKEY-new) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net chkeypass $TKEY" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo $TKEY; echo $TKEY-new; echo $TKEY-new) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net chkeypass $TKEY ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo $TKEY; echo $TKEY-new; echo $TKEY-new) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net chkeypass $TKEY ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_chkeypass.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check that the passphrase changed
$at_traceoff
echo "$at_srcdir/t_chkeypass.at:25: (echo \$TKEY-new; echo \$TKEY; echo \$TKEY) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net chkeypass \$TKEY"
echo t_chkeypass.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo $TKEY-new; echo $TKEY; echo $TKEY) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net chkeypass $TKEY" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo $TKEY-new; echo $TKEY; echo $TKEY) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net chkeypass $TKEY ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo $TKEY-new; echo $TKEY; echo $TKEY) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net chkeypass $TKEY ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_chkeypass.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  46 ) # 46. t_diff_added_file.at:3: diffing a revision with an added file
    at_setup_line='t_diff_added_file.at:3'
    at_desc='diffing a revision with an added file'
    $at_quiet $ECHO_N " 46: diffing a revision with an added file        $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "46. t_diff_added_file.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_diff_added_file.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_diff_added_file.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_added_file.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_added_file.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_diff_added_file.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_added_file.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_added_file.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_diff_added_file.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_added_file.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_added_file.at:5: rm test_keys"
echo t_diff_added_file.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_added_file.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo1 <<'_ATEOF'
foo file 1
_ATEOF

cat >foo2 <<'_ATEOF'
foo file 2
_ATEOF


$at_traceoff
echo "$at_srcdir/t_diff_added_file.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo1"
echo t_diff_added_file.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_added_file.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_added_file.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah"
echo t_diff_added_file.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_added_file.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

parent=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_diff_added_file.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo2"
echo t_diff_added_file.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_added_file.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_added_file.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message bleh"
echo t_diff_added_file.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message bleh" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message bleh ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message bleh ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_added_file.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_added_file.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff --revision=\$parent --revision=\`cat _MTN/revision\`"
echo t_diff_added_file.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision=$parent --revision=`cat _MTN/revision` ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision=$parent --revision=`cat _MTN/revision` ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_added_file.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  47 ) # 47. t_update_to_revision.at:3: updating to a given revision
    at_setup_line='t_update_to_revision.at:3'
    at_desc='updating to a given revision'
    $at_quiet $ECHO_N " 47: updating to a given revision                 $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "47. t_update_to_revision.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_update_to_revision.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_update_to_revision.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_to_revision.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_to_revision.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_update_to_revision.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_to_revision.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_to_revision.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_update_to_revision.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_to_revision.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_to_revision.at:5: rm test_keys"
echo t_update_to_revision.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_to_revision.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >root <<'_ATEOF'
first line of the file
second line of the file
third line of the file
_ATEOF

cat >middle <<'_ATEOF'
first line of the file
an insertion between first and second
second line of the file
third line of the file
_ATEOF

cat >left-leaf <<'_ATEOF'
first line of the file
an insertion between first and second
second line of the file
an insertion between second and third
third line of the file
_ATEOF

cat >right-leaf <<'_ATEOF'
first line of the file
an insertion between first and second
a changed second line of the file
third line of the file
_ATEOF

cat >modified-left-leaf <<'_ATEOF'
first line of the file
an insertion between first and second
second line of the file
an insertion between second and third
third line of the file
a new fourth line
_ATEOF

cat >modified-root <<'_ATEOF'
first line of the file
second line of the file
third line of the file
a new fourth line
_ATEOF


# Create root revision.
$at_traceoff
echo "$at_srcdir/t_update_to_revision.at:41: cp root testfile"
echo t_update_to_revision.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp root testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp root testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_to_revision.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_to_revision.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_update_to_revision.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_to_revision.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_to_revision.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_update_to_revision.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_to_revision.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

ROOT_R_SHA=`cat _MTN/revision`

# Create middle revision based off root.
$at_traceoff
echo "$at_srcdir/t_update_to_revision.at:47: cp middle testfile"
echo t_update_to_revision.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp middle testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp middle testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_to_revision.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_to_revision.at:48: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message blah-blah"
echo t_update_to_revision.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_to_revision.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

MIDDLE_R_SHA=`cat _MTN/revision`

# Create leaf revision based off middle.
$at_traceoff
echo "$at_srcdir/t_update_to_revision.at:52: cp left-leaf testfile"
echo t_update_to_revision.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp left-leaf testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp left-leaf testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_to_revision.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_to_revision.at:53: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message blah-blah"
echo t_update_to_revision.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_to_revision.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

LEFT_LEAF_R_SHA=`cat _MTN/revision`

# Test going backward in the revision tree.
$at_traceoff
echo "$at_srcdir/t_update_to_revision.at:57: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update --revision=\$ROOT_R_SHA"
echo t_update_to_revision.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --revision=$ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --revision=$ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --revision=$ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_to_revision.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

diff -u testfile root
$at_traceoff
echo "$at_srcdir/t_update_to_revision.at:59: cmp testfile root"
echo t_update_to_revision.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile root ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile root ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_to_revision.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Test going forward in the revision tree.
$at_traceoff
echo "$at_srcdir/t_update_to_revision.at:62: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update --revision=\$MIDDLE_R_SHA"
echo t_update_to_revision.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --revision=$MIDDLE_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --revision=$MIDDLE_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --revision=$MIDDLE_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_to_revision.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_to_revision.at:63: cmp testfile middle"
echo t_update_to_revision.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile middle ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile middle ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_to_revision.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Create a fork from middle.
$at_traceoff
echo "$at_srcdir/t_update_to_revision.at:66: cp right-leaf testfile"
echo t_update_to_revision.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp right-leaf testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp right-leaf testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_to_revision.at:66: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_to_revision.at:67: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message blah-blah"
echo t_update_to_revision.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_to_revision.at:67: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

RIGHT_LEAF_R_SHA=`cat _MTN/revision`

# Test going from the right left to the left leaf via the common ancestor.
$at_traceoff
echo "$at_srcdir/t_update_to_revision.at:71: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update --revision=\$LEFT_LEAF_R_SHA"
echo t_update_to_revision.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --revision=$LEFT_LEAF_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --revision=$LEFT_LEAF_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --revision=$LEFT_LEAF_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_to_revision.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_to_revision.at:72: cmp testfile left-leaf"
echo t_update_to_revision.at:72 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile left-leaf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile left-leaf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_to_revision.at:72: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Test that workspace changes are kept while going backward.
$at_traceoff
echo "$at_srcdir/t_update_to_revision.at:75: cp modified-left-leaf testfile"
echo t_update_to_revision.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp modified-left-leaf testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp modified-left-leaf testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_to_revision.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_to_revision.at:76: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update --revision=\$ROOT_R_SHA"
echo t_update_to_revision.at:76 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --revision=$ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --revision=$ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --revision=$ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_to_revision.at:76: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_to_revision.at:77: cmp testfile modified-root"
echo t_update_to_revision.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile modified-root ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile modified-root ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_to_revision.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  48 ) # 48. t_heads.at:3: 'heads'
    at_setup_line='t_heads.at:3'
    at_desc=''heads''
    $at_quiet $ECHO_N " 48: 'heads'                                      $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "48. t_heads.at:3: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_heads.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_heads.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_heads.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_heads.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:4: rm test_keys"
echo t_heads.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# Create a single revision in branch1
#
#          root (branch1)
#
# branch1 heads: root

cat >f <<'_ATEOF'
base data
_ATEOF


$at_traceoff
echo "$at_srcdir/t_heads.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add f"
echo t_heads.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add f" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add f ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add f ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah"
echo t_heads.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

ROOT_R_SHA=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_heads.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads"
echo t_heads.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:20: grep \$ROOT_R_SHA stdout >/dev/null"
echo t_heads.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $ROOT_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $ROOT_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $ROOT_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Create a child
#
#          root (branch1)
#          /
#    child1 (branch1)
#
# branch1 heads: child1

cat >f <<'_ATEOF'
child1 data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_heads.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah"
echo t_heads.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

CHILD1_R_SHA=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_heads.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads"
echo t_heads.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:36: grep \$ROOT_R_SHA stdout >/dev/null"
echo t_heads.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $ROOT_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $ROOT_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $ROOT_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_heads.at:36: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:37: grep \$CHILD1_R_SHA stdout >/dev/null"
echo t_heads.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $CHILD1_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $CHILD1_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $CHILD1_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Create another child
#
#          root (branch1)
#          /           \
#    child1 (branch1)   child2 (branch1)
#
# branch1 heads: child1, child2


$at_traceoff
echo "$at_srcdir/t_heads.at:47: rm -rf _MTN.old"
echo t_heads.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:47: mv  _MTN _MTN.old"
echo t_heads.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:47: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$ROOT_R_SHA ."
echo t_heads.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_heads.at:47: test \$PROBE_R_SHA = \$ROOT_R_SHA"
echo t_heads.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >f <<'_ATEOF'
child2 data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_heads.at:50: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah"
echo t_heads.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

CHILD2_R_SHA=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_heads.at:53: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads"
echo t_heads.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:54: grep \$ROOT_R_SHA stdout >/dev/null"
echo t_heads.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $ROOT_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $ROOT_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $ROOT_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_heads.at:54: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:55: grep \$CHILD1_R_SHA stdout >/dev/null"
echo t_heads.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $CHILD1_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $CHILD1_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $CHILD1_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:56: grep \$CHILD2_R_SHA stdout >/dev/null"
echo t_heads.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $CHILD2_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $CHILD2_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $CHILD2_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Branch from the second child into branch2
#
#          root (branch1)
#          /           \
#    child1 (branch1)   child2 (branch1)
#                         \
#                          child3 (branch2)
#
# branch1 heads: child1, child2
# branch2 heads: child3

cat >f <<'_ATEOF'
child3 data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_heads.at:71: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah"
echo t_heads.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

CHILD3_R_SHA=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_heads.at:74: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads"
echo t_heads.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:75: grep \$ROOT_R_SHA stdout >/dev/null"
echo t_heads.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $ROOT_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $ROOT_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $ROOT_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_heads.at:75: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:76: grep \$CHILD1_R_SHA stdout >/dev/null"
echo t_heads.at:76 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $CHILD1_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $CHILD1_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $CHILD1_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:76: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:77: grep \$CHILD2_R_SHA stdout >/dev/null"
echo t_heads.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $CHILD2_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $CHILD2_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $CHILD2_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:78: grep \$CHILD3_R_SHA stdout >/dev/null"
echo t_heads.at:78 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $CHILD3_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $CHILD3_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $CHILD3_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_heads.at:78: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:79: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 heads"
echo t_heads.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 heads" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 heads ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 heads ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:80: grep \$ROOT_R_SHA stdout >/dev/null"
echo t_heads.at:80 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $ROOT_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $ROOT_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $ROOT_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_heads.at:80: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:81: grep \$CHILD1_R_SHA stdout >/dev/null"
echo t_heads.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $CHILD1_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $CHILD1_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $CHILD1_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_heads.at:81: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:82: grep \$CHILD2_R_SHA stdout >/dev/null"
echo t_heads.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $CHILD2_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $CHILD2_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $CHILD2_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_heads.at:82: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:83: grep \$CHILD3_R_SHA stdout >/dev/null"
echo t_heads.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $CHILD3_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $CHILD3_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $CHILD3_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Branch from the first child into branch2
#
#          root (branch1)
#          /           \
#    child1 (branch1)   child2 (branch1)
#       /                 \
#   child4 (branch2)       child3 (branch2)
#
# branch1 heads: child1, child2
# branch2 heads: child3, child4


$at_traceoff
echo "$at_srcdir/t_heads.at:96: rm -rf _MTN.old"
echo t_heads.at:96 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:96: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:96: mv  _MTN _MTN.old"
echo t_heads.at:96 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:96: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:96: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$CHILD1_R_SHA ."
echo t_heads.at:96 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$CHILD1_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$CHILD1_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$CHILD1_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:96: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_heads.at:96: test \$PROBE_R_SHA = \$CHILD1_R_SHA"
echo t_heads.at:96 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $CHILD1_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $CHILD1_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $CHILD1_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:96: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >f <<'_ATEOF'
child4 data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_heads.at:99: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah"
echo t_heads.at:99 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:99: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

CHILD4_R_SHA=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_heads.at:102: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads"
echo t_heads.at:102 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:102: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:103: grep \$ROOT_R_SHA stdout >/dev/null"
echo t_heads.at:103 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $ROOT_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $ROOT_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $ROOT_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_heads.at:103: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:104: grep \$CHILD1_R_SHA stdout >/dev/null"
echo t_heads.at:104 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $CHILD1_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $CHILD1_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $CHILD1_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:104: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:105: grep \$CHILD2_R_SHA stdout >/dev/null"
echo t_heads.at:105 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $CHILD2_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $CHILD2_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $CHILD2_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:105: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:106: grep \$CHILD3_R_SHA stdout >/dev/null"
echo t_heads.at:106 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $CHILD3_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $CHILD3_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $CHILD3_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_heads.at:106: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:107: grep \$CHILD4_R_SHA stdout >/dev/null"
echo t_heads.at:107 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $CHILD4_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $CHILD4_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $CHILD4_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_heads.at:107: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:108: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 heads"
echo t_heads.at:108 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 heads" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 heads ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 heads ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:108: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:109: grep \$ROOT_R_SHA stdout >/dev/null"
echo t_heads.at:109 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $ROOT_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $ROOT_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $ROOT_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_heads.at:109: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:110: grep \$CHILD1_R_SHA stdout >/dev/null"
echo t_heads.at:110 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $CHILD1_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $CHILD1_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $CHILD1_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_heads.at:110: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:111: grep \$CHILD2_R_SHA stdout >/dev/null"
echo t_heads.at:111 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $CHILD2_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $CHILD2_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $CHILD2_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_heads.at:111: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:112: grep \$CHILD3_R_SHA stdout >/dev/null"
echo t_heads.at:112 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $CHILD3_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $CHILD3_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $CHILD3_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:112: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads.at:113: grep \$CHILD4_R_SHA stdout >/dev/null"
echo t_heads.at:113 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $CHILD4_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $CHILD4_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $CHILD4_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads.at:113: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  49 ) # 49. t_heads_discontinuous_branch.at:3: 'heads' with discontinuous branches
    at_setup_line='t_heads_discontinuous_branch.at:3'
    at_desc=''heads' with discontinuous branches'
    $at_quiet $ECHO_N " 49: 'heads' with discontinuous branches          $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "49. t_heads_discontinuous_branch.at:3: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_heads_discontinuous_branch.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_heads_discontinuous_branch.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads_discontinuous_branch.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads_discontinuous_branch.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_heads_discontinuous_branch.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads_discontinuous_branch.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads_discontinuous_branch.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_heads_discontinuous_branch.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads_discontinuous_branch.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads_discontinuous_branch.at:4: rm test_keys"
echo t_heads_discontinuous_branch.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads_discontinuous_branch.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This tests the 'heads' command with a graph like:
#
#    r1 (branch1)
#    |
#    r2 (branch2)
#    |
#    r3 (branch1)
#
# 'heads' on branch1 should show only r3, not r1.

# Create R1
cat >f <<'_ATEOF'
r1 data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_heads_discontinuous_branch.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add f"
echo t_heads_discontinuous_branch.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add f" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add f ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add f ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads_discontinuous_branch.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads_discontinuous_branch.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah"
echo t_heads_discontinuous_branch.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads_discontinuous_branch.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

R1_R_SHA=`cat _MTN/revision`

# Sanity check first...
$at_traceoff
echo "$at_srcdir/t_heads_discontinuous_branch.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads"
echo t_heads_discontinuous_branch.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads_discontinuous_branch.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads_discontinuous_branch.at:25: grep \$R1_R_SHA stdout >/dev/null"
echo t_heads_discontinuous_branch.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $R1_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $R1_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $R1_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads_discontinuous_branch.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Now create R2
cat >f <<'_ATEOF'
r2 data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_heads_discontinuous_branch.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah"
echo t_heads_discontinuous_branch.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads_discontinuous_branch.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

R2_R_SHA=`cat _MTN/revision`

# Now create R3
cat >f <<'_ATEOF'
r3 data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_heads_discontinuous_branch.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah"
echo t_heads_discontinuous_branch.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads_discontinuous_branch.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

R3_R_SHA=`cat _MTN/revision`

# Now check heads on branch1
$at_traceoff
echo "$at_srcdir/t_heads_discontinuous_branch.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads"
echo t_heads_discontinuous_branch.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads_discontinuous_branch.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads_discontinuous_branch.at:41: grep \$R1_R_SHA stdout >/dev/null"
echo t_heads_discontinuous_branch.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $R1_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $R1_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $R1_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_heads_discontinuous_branch.at:41: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads_discontinuous_branch.at:42: grep \$R2_R_SHA stdout >/dev/null"
echo t_heads_discontinuous_branch.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $R2_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $R2_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $R2_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_heads_discontinuous_branch.at:42: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_heads_discontinuous_branch.at:43: grep \$R3_R_SHA stdout >/dev/null"
echo t_heads_discontinuous_branch.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $R3_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $R3_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $R3_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_heads_discontinuous_branch.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  50 ) # 50. t_merge_1.at:1: test a merge
    at_setup_line='t_merge_1.at:1'
    at_desc='test a merge'
    $at_quiet $ECHO_N " 50: test a merge                                 $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "50. t_merge_1.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge_1.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_merge_1.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_1.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_1.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_merge_1.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_1.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_1.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_merge_1.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_1.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_1.at:2: rm test_keys"
echo t_merge_1.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_1.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_merge_1.at:4: echo \$UNB64_COMMAND"
echo t_merge_1.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_1.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This is a real merge error.  'right' contains only a single added
# function; when it was really merged with 'left', the last line of
# this function was lost.

# This may actually be a bug in the unidiff algorithm; 'diff' and
# 'mtn diff' produce different results when calculating
# diff(parent, left).

cat >parent.b64 <<'_ATEOF'
Ly8gY29weXJpZ2h0IChDKSAyMDAyLCAyMDAzIGdyYXlkb24gaG9hcmUgPGdyYXlkb25AcG9i
b3guY29tPgovLyBhbGwgcmlnaHRzIHJlc2VydmVkLgovLyBsaWNlbnNlZCB0byB0aGUgcHVi
bGljIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdQTCAoPj0gMikKLy8gc2VlIHRoZSBm
aWxlIENPUFlJTkcgZm9yIGRldGFpbHMKCiNpbmNsdWRlIDxpdGVyYXRvcj4KI2luY2x1ZGUg
PGxpc3Q+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDxzc3RyZWFtPgojaW5jbHVkZSA8dmVj
dG9yPgoKI2luY2x1ZGUgPHN0ZGFyZy5oPgoKI2luY2x1ZGUgPGJvb3N0L3NoYXJlZF9wdHIu
aHBwPgojaW5jbHVkZSA8Ym9vc3QvbGV4aWNhbF9jYXN0LmhwcD4KI2luY2x1ZGUgPGJvb3N0
L2ZpbGVzeXN0ZW0vcGF0aC5ocHA+CiNpbmNsdWRlIDxib29zdC9maWxlc3lzdGVtL29wZXJh
dGlvbnMuaHBwPgoKI2luY2x1ZGUgPHNxbGl0ZS5oPgoKI2luY2x1ZGUgImFwcF9zdGF0ZS5o
aCIKI2luY2x1ZGUgImNlcnQuaGgiCiNpbmNsdWRlICJjbGVhbnVwLmhoIgojaW5jbHVkZSAi
Y29uc3RhbnRzLmhoIgojaW5jbHVkZSAiZGF0YWJhc2UuaGgiCiNpbmNsdWRlICJrZXlzLmho
IgojaW5jbHVkZSAic2FuaXR5LmhoIgojaW5jbHVkZSAic2NoZW1hX21pZ3JhdGlvbi5oaCIK
I2luY2x1ZGUgImNlcnQuaGgiCiNpbmNsdWRlICJ0cmFuc2Zvcm1zLmhoIgojaW5jbHVkZSAi
dWkuaGgiCiNpbmNsdWRlICJ2b2NhYi5oaCIKI2luY2x1ZGUgInhkZWx0YS5oaCIKCi8vIGRl
ZmluZWQgaW4gc2NoZW1hLnNxbCwgY29udmVydGVkIHRvIGhlYWRlcjoKI2luY2x1ZGUgInNj
aGVtYS5oIgoKLy8gZGVmaW5lZCBpbiB2aWV3cy5zcWwsIGNvbnZlcnRlZCB0byBoZWFkZXI6
CiNpbmNsdWRlICJ2aWV3cy5oIgoKLy8gdGhpcyBmaWxlIGRlZmluZXMgYSBwdWJsaWMsIHR5
cGVkIGludGVyZmFjZSB0byB0aGUgZGF0YWJhc2UuCi8vIHRoZSBkYXRhYmFzZSBjbGFzcyBl
bmNhcHN1bGF0ZXMgYWxsIGtub3dsZWRnZSBhYm91dCBzcWxpdGUsCi8vIHRoZSBzY2hlbWEs
IGFuZCBhbGwgU1FMIHN0YXRlbWVudHMgdXNlZCB0byBhY2Nlc3MgdGhlIHNjaGVtYS4KLy8K
Ly8gc2VlIGZpbGUgc2NoZW1hLnNxbCBmb3IgdGhlIHRleHQgb2YgdGhlIHNjaGVtYS4KCnVz
aW5nIGJvb3N0OjpzaGFyZWRfcHRyOwp1c2luZyBib29zdDo6bGV4aWNhbF9jYXN0Owp1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGNvbnN0IG9uZV9yb3cgPSAxOwppbnQgY29uc3Qgb25l
X2NvbCA9IDE7CmludCBjb25zdCBhbnlfcm93cyA9IC0xOwppbnQgY29uc3QgYW55X2NvbHMg
PSAtMTsKCmV4dGVybiAiQyIgewogIC8vIHN0cmFuZ2VseSB0aGlzIGlzbid0IGRlY2xhcmVk
LCBldmVuIHRob3VnaCBpdCdzIHByZXNlbnQgaW4gbXkgc3FsaXRlLgogIGNoYXIgKnNxbGl0
ZV92bXByaW50Zihjb25zdCBjaGFyICp6Rm9ybWF0LCB2YV9saXN0KTsKfQoKZGF0YWJhc2U6
OmRhdGFiYXNlKGZzOjpwYXRoIGNvbnN0ICYgZm4pIDoKICBmaWxlbmFtZShmbiksCiAgLy8g
bmIuIHVwZGF0ZSB0aGlzIGlmIHlvdSBjaGFuZ2UgdGhlIHNjaGVtYS4gdW5mb3J0dW5hdGVs
eSB3ZSBhcmUgbm90CiAgLy8gdXNpbmcgc2VsZi1kaWdlc3Rpbmcgc2NoZW1hcyBkdWUgdG8g
Y29tbWVudCBpcnJlZ3VsYXJpdGllcyBhbmQKICAvLyBub24tYWxwaGFiZXRpYyBvcmRlcmlu
ZyBvZiB0YWJsZXMgaW4gc3FsIHNvdXJjZSBmaWxlcy4gd2UgY291bGQgY3JlYXRlCiAgLy8g
YSB0ZW1wb3JhcnkgZGIsIHdyaXRlIG91ciBpbnRlbmRlZCBzY2hlbWEgaW50byBpdCwgYW5k
IHJlYWQgaXQgYmFjaywKICAvLyBidXQgdGhpcyBzZWVtcyBsaWtlIGl0IHdvdWxkIGJlIHRv
byBydWRlLiBwb3NzaWJseSByZXZpc2l0IHRoaXMgaXNzdWUuCiAgc2NoZW1hKCJjMWU4NjU4
OGUxMWFkMDdmYTUzZTVkMjk0ZWRjMDQzY2UxZDQwMDVhIiksCiAgX19zcWwoTlVMTCksCiAg
dHJhbnNhY3Rpb25fbGV2ZWwoMCkKe30KCnZvaWQgCmRhdGFiYXNlOjpjaGVja19zY2hlbWEo
KQp7CiAgc3RyaW5nIGRiX3NjaGVtYV9pZDsgIAogIGNhbGN1bGF0ZV9zY2hlbWFfaWQgKF9f
c3FsLCBkYl9zY2hlbWFfaWQpOwogIE4gKHNjaGVtYSA9PSBkYl9zY2hlbWFfaWQsCiAgICAg
RigiZGF0YWJhc2Ugc2NoZW1hcyBkbyBub3QgbWF0Y2g6ICIKICAgICAgICJ3YW50ZWQgJXMs
IGdvdCAlcy4gdHJ5IG1pZ3JhdGluZyBkYXRhYmFzZSIpIAogICAgICUgc2NoZW1hICUgZGJf
c2NoZW1hX2lkKTsKfQoKc3RhdGljIHZvaWQgCnNxbGl0ZV91bmJhc2U2NF9mbihzcWxpdGVf
ZnVuYyAqZiwgaW50IG5hcmdzLCBjaGFyIGNvbnN0ICoqIGFyZ3MpCnsKICBpZiAobmFyZ3Mg
IT0gMSkKICAgIHsKICAgICAgc3FsaXRlX3NldF9yZXN1bHRfZXJyb3IoZiwgIm5lZWQgZXhh
Y3RseSAxIGFyZyB0byB1bmJhc2U2NCgpIiwgLTEpOwogICAgICByZXR1cm47CiAgICB9CiAg
ZGF0YSBkZWNvZGVkOwogIGRlY29kZV9iYXNlNjQoYmFzZTY0PGRhdGE+KHN0cmluZyhhcmdz
WzBdKSksIGRlY29kZWQpOwogIHNxbGl0ZV9zZXRfcmVzdWx0X3N0cmluZyhmLCBkZWNvZGVk
KCkuY19zdHIoKSwgZGVjb2RlZCgpLnNpemUoKSk7Cn0KCnZvaWQgCmRhdGFiYXNlOjpzZXRf
YXBwKGFwcF9zdGF0ZSAqIGFwcCkKewogIF9fYXBwID0gYXBwOwp9CgpzdHJ1Y3Qgc3FsaXRl
ICogCmRhdGFiYXNlOjpzcWwoYm9vbCBpbml0KQp7CiAgaWYgKCEgX19zcWwpCiAgICB7CiAg
ICAgIGlmICghIGluaXQpCgl7CgkgIGlmIChmaWxlbmFtZS5zdHJpbmcoKSA9PSAiIikKCSAg
ICB0aHJvdyBpbmZvcm1hdGl2ZV9mYWlsdXJlKHN0cmluZygibm8gZGF0YWJhc2Ugc3BlY2lm
aWVkIikpOwoJICBlbHNlIGlmICghIGZzOjpleGlzdHMoZmlsZW5hbWUpKQoJICAgIHRocm93
IGluZm9ybWF0aXZlX2ZhaWx1cmUoc3RyaW5nKCJkYXRhYmFzZSAiKSArIGZpbGVuYW1lLnN0
cmluZygpICsKCQkJCSAgICAgIHN0cmluZygiIGRvZXMgbm90IGV4aXN0IikpOwoJfQogICAg
ICBOKGZpbGVuYW1lLnN0cmluZygpICE9ICIiLAoJRigibmVlZCBkYXRhYmFzZSBuYW1lIikp
OwogICAgICBjaGFyICogZXJybXNnID0gTlVMTDsKICAgICAgX19zcWwgPSBzcWxpdGVfb3Bl
bihmaWxlbmFtZS5zdHJpbmcoKS5jX3N0cigpLCAwNzU1LCAmZXJybXNnKTsKICAgICAgaWYg
KCEgX19zcWwpCgl0aHJvdyBvb3BzKHN0cmluZygiY291bGQgbm90IG9wZW4gZGF0YWJhc2U6
ICIpICsgZmlsZW5hbWUuc3RyaW5nKCkgKyAKCQkgICAoZXJybXNnID8gKCI6ICIgKyBzdHJp
bmcoZXJybXNnKSkgOiAiIikpOwogICAgICBpZiAoaW5pdCkKCWV4ZWN1dGUoc2NoZW1hX2Nv
bnN0YW50KTsKCiAgICAgIGNoZWNrX3NjaGVtYSgpOwogICAgICBpbnN0YWxsX2Z1bmN0aW9u
cyhfX2FwcCk7CiAgICAgIGluc3RhbGxfdmlld3MoKTsKICAgIH0KICByZXR1cm4gX19zcWw7
Cn0KCnZvaWQgCmRhdGFiYXNlOjppbml0aWFsaXplKCkKewogIGlmIChfX3NxbCkKICAgIHRo
cm93IG9vcHMoImNhbm5vdCBpbml0aWFsaXplIGRhdGFiYXNlIHdoaWxlIGl0IGlzIG9wZW4i
KTsKCiAgTighZnM6OmV4aXN0cyhmaWxlbmFtZSksCiAgICBGKCJjb3VsZCBub3QgaW5pdGlh
bGl6ZSBkYXRhYmFzZTogJXM6IGFscmVhZHkgZXhpc3RzIikgCiAgICAlIGZpbGVuYW1lLnN0
cmluZygpKTsKCiAgZnM6OnBhdGggam91cm5hbCA9IG1rcGF0aChmaWxlbmFtZS5zdHJpbmco
KSArICItam91cm5hbCIpOwogIE4oIWZzOjpleGlzdHMoam91cm5hbCksCiAgICBGKCJleGlz
dGluZyAocG9zc2libHkgc3RhbGUpIGpvdXJuYWwgZmlsZSAnJXMnIGhhcyBzYW1lIHN0ZW0g
YXMgbmV3IGRhdGFiYXNlICclcyciKQogICAgJSBqb3VybmFsLnN0cmluZygpICUgZmlsZW5h
bWUuc3RyaW5nKCkpOwoKICBzcWxpdGUgKnMgPSBzcWwodHJ1ZSk7CiAgSShzICE9IE5VTEwp
Owp9CgoKc3RydWN0IApkdW1wX3JlcXVlc3QKewogIGR1bXBfcmVxdWVzdCgpIHt9OwogIHN0
cnVjdCBzcWxpdGUgKnNxbDsKICBzdHJpbmcgdGFibGVfbmFtZTsKICBvc3RyZWFtICpvdXQ7
Cn07CgpzdGF0aWMgaW50IApkdW1wX3Jvd19jYih2b2lkICpkYXRhLCBpbnQgbiwgY2hhciAq
KnZhbHMsIGNoYXIgKipjb2xzKQp7CiAgZHVtcF9yZXF1ZXN0ICpkdW1wID0gcmVpbnRlcnBy
ZXRfY2FzdDxkdW1wX3JlcXVlc3QgKj4oZGF0YSk7CiAgSShkdW1wICE9IE5VTEwpOwogIEko
dmFscyAhPSBOVUxMKTsKICBJKGR1bXAtPm91dCAhPSBOVUxMKTsKICAqKGR1bXAtPm91dCkg
PDwgRigiSU5TRVJUIElOVE8gJXMgVkFMVUVTKCIpICUgZHVtcC0+dGFibGVfbmFtZTsKICBm
b3IgKGludCBpID0gMDsgaSA8IG47ICsraSkKICAgIHsKICAgICAgaWYgKGkgIT0gMCkKCSoo
ZHVtcC0+b3V0KSA8PCAnLCc7CgogICAgICBpZiAodmFsc1tpXSA9PSBOVUxMKQoJKihkdW1w
LT5vdXQpIDw8ICJOVUxMIjsKICAgICAgZWxzZQoJewoJICAqKGR1bXAtPm91dCkgPDwgIici
OwoJICBmb3IgKGNoYXIgKmNwID0gdmFsc1tpXTsgKmNwOyArK2NwKQoJICAgIHsKCSAgICAg
IGlmICgqY3AgPT0gJ1wnJykKCQkqKGR1bXAtPm91dCkgPDwgIicnIjsKCSAgICAgIGVsc2UK
CQkqKGR1bXAtPm91dCkgPDwgKmNwOwoJICAgIH0KCSAgKihkdW1wLT5vdXQpIDw8ICInIjsK
CX0KICAgIH0KICAqKGR1bXAtPm91dCkgPDwgIik7XG4iOyAgCiAgcmV0dXJuIDA7Cn0KCnN0
YXRpYyBpbnQgCmR1bXBfdGFibGVfY2Iodm9pZCAqZGF0YSwgaW50IG4sIGNoYXIgKip2YWxz
LCBjaGFyICoqY29scykKewogIGR1bXBfcmVxdWVzdCAqZHVtcCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8ZHVtcF9yZXF1ZXN0ICo+KGRhdGEpOwogIEkoZHVtcCAhPSBOVUxMKTsKICBJKGR1bXAt
PnNxbCAhPSBOVUxMKTsKICBJKHZhbHMgIT0gTlVMTCk7CiAgSSh2YWxzWzBdICE9IE5VTEwp
OwogIEkodmFsc1sxXSAhPSBOVUxMKTsKICBJKHZhbHNbMl0gIT0gTlVMTCk7CiAgSShuID09
IDMpOwogIGlmIChzdHJpbmcodmFsc1sxXSkgPT0gInRhYmxlIikKICAgIHsKICAgICAgKihk
dW1wLT5vdXQpIDw8IHZhbHNbMl0gPDwgIjtcbiI7CiAgICAgIGR1bXAtPnRhYmxlX25hbWUg
PSBzdHJpbmcodmFsc1swXSk7CiAgICAgIHNxbGl0ZV9leGVjX3ByaW50ZihkdW1wLT5zcWws
ICJTRUxFQ1QgKiBGUk9NICclcSciLCAKCQkJIGR1bXBfcm93X2NiLCBkYXRhLCBOVUxMLCB2
YWxzWzBdKTsKICAgIH0KICByZXR1cm4gMDsKfQoKdm9pZCAKZGF0YWJhc2U6OmR1bXAob3N0
cmVhbSAmIG91dCkKewogIGR1bXBfcmVxdWVzdCByZXE7CiAgcmVxLm91dCA9ICZvdXQ7CiAg
cmVxLnNxbCA9IHNxbCgpOwogIG91dCA8PCAiQkVHSU4gVFJBTlNBQ1RJT047XG4iOwogIGlu
dCByZXMgPSBzcWxpdGVfZXhlYyhyZXEuc3FsLAoJCQkiU0VMRUNUIG5hbWUsIHR5cGUsIHNx
bCBGUk9NIHNxbGl0ZV9tYXN0ZXIgIgoJCQkiV0hFUkUgdHlwZT0ndGFibGUnIEFORCBzcWwg
Tk9UIE5VTEwgIgoJCQkiT1JERVIgQlkgc3Vic3RyKHR5cGUsMiwxKSwgbmFtZSIsCgkJCWR1
bXBfdGFibGVfY2IsICZyZXEsIE5VTEwpOwogIEkocmVzID09IFNRTElURV9PSyk7CiAgb3V0
IDw8ICJDT01NSVQ7XG4iOwp9Cgp2b2lkIApkYXRhYmFzZTo6bG9hZChpc3RyZWFtICYgaW4p
CnsKICBjaGFyIGJ1Zltjb25zdGFudHM6OmJ1ZnN6XTsKICBzdHJpbmcgdG1wOwoKICBOKGZp
bGVuYW1lLnN0cmluZygpICE9ICIiLAogICAgRigibmVlZCBkYXRhYmFzZSBuYW1lIikpOwog
IGNoYXIgKiBlcnJtc2cgPSBOVUxMOwogIF9fc3FsID0gc3FsaXRlX29wZW4oZmlsZW5hbWUu
c3RyaW5nKCkuY19zdHIoKSwgMDc1NSwgJmVycm1zZyk7CiAgaWYgKCEgX19zcWwpCiAgICB0
aHJvdyBvb3BzKHN0cmluZygiY291bGQgbm90IG9wZW4gZGF0YWJhc2U6ICIpICsgZmlsZW5h
bWUuc3RyaW5nKCkgKyAKCSAgICAgICAoZXJybXNnID8gKCI6ICIgKyBzdHJpbmcoZXJybXNn
KSkgOiAiIikpOwogIAogIHdoaWxlKGluKQogICAgewogICAgICBpbi5yZWFkKGJ1ZiwgY29u
c3RhbnRzOjpidWZzeik7CiAgICAgIHRtcC5hcHBlbmQoYnVmLCBpbi5nY291bnQoKSk7CiAg
ICB9CgogIGV4ZWN1dGUodG1wLmNfc3RyKCkpOwp9CgoKdm9pZCAKZGF0YWJhc2U6OmRlYnVn
KHN0cmluZyBjb25zdCAmIHNxbCwgb3N0cmVhbSAmIG91dCkKewogIHJlc3VsdHMgcmVzOwog
IGZldGNoKHJlcywgYW55X2NvbHMsIGFueV9yb3dzLCBzcWwuY19zdHIoKSk7CiAgb3V0IDw8
ICInIiA8PCBzcWwgPDwgIicgLT4gIiA8PCByZXMuc2l6ZSgpIDw8ICIgcm93c1xuIiA8PCBl
bmRsOwogIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzLnNpemUoKTsgKytpKQogICAgewog
ICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHJlc1tpXS5zaXplKCk7ICsraikKCXsKCSAg
aWYgKGogIT0gMCkKCSAgICBvdXQgPDwgIiB8ICI7CgkgIG91dCA8PCByZXNbaV1bal07Cgl9
CiAgICAgIG91dCA8PCBlbmRsOwogICAgfQp9Cgp1bnNpZ25lZCBsb25nIApkYXRhYmFzZTo6
Z2V0X3N0YXRpc3RpYyhzdHJpbmcgY29uc3QgJiBxdWVyeSkKewogIHJlc3VsdHMgcmVzOwog
IGZldGNoKHJlcywgMSwgMSwgcXVlcnkuY19zdHIoKSk7CiAgcmV0dXJuIGxleGljYWxfY2Fz
dDx1bnNpZ25lZCBsb25nPihyZXNbMF1bMF0pOwp9Cgp2b2lkIApkYXRhYmFzZTo6aW5mbyhv
c3RyZWFtICYgb3V0KQp7CiAgc3RyaW5nIGlkOwogIGNhbGN1bGF0ZV9zY2hlbWFfaWQoc3Fs
KCksIGlkKTsKICBvdXQgPDwgInNjaGVtYSB2ZXJzaW9uICA6ICIgPDwgaWQgPDwgZW5kbDsK
ICBvdXQgPDwgImZ1bGwgbWFuaWZlc3RzICA6ICIgPDwgZ2V0X3N0YXRpc3RpYygiU0VMRUNU
IENPVU5UKCopIEZST00gbWFuaWZlc3RzIikgPDwgZW5kbDsKICBvdXQgPDwgIm1hbmlmZXN0
IGRlbHRhcyA6ICIgPDwgZ2V0X3N0YXRpc3RpYygiU0VMRUNUIENPVU5UKCopIEZST00gbWFu
aWZlc3RfZGVsdGFzIikgPDwgZW5kbDsKICBvdXQgPDwgImZ1bGwgZmlsZXMgICAgICA6ICIg
PDwgZ2V0X3N0YXRpc3RpYygiU0VMRUNUIENPVU5UKCopIEZST00gZmlsZXMiKSA8PCBlbmRs
OwogIG91dCA8PCAiZmlsZSBkZWx0YXMgICAgIDogIiA8PCBnZXRfc3RhdGlzdGljKCJTRUxF
Q1QgQ09VTlQoKikgRlJPTSBmaWxlX2RlbHRhcyIpIDw8IGVuZGw7Cn0KCnZvaWQgCmRhdGFi
YXNlOjp2ZXJzaW9uKG9zdHJlYW0gJiBvdXQpCnsKICBzdHJpbmcgaWQ7CiAgY2FsY3VsYXRl
X3NjaGVtYV9pZChzcWwoKSwgaWQpOwogIG91dCA8PCAiZGF0YWJhc2Ugc2NoZW1hIHZlcnNp
b246ICIgPDwgaWQgPDwgZW5kbDsKfQoKdm9pZCAKZGF0YWJhc2U6Om1pZ3JhdGUoKQp7ICAK
ICBOKGZpbGVuYW1lLnN0cmluZygpICE9ICIiLAogICAgRigibmVlZCBkYXRhYmFzZSBuYW1l
IikpOwogIGNoYXIgKiBlcnJtc2cgPSBOVUxMOwogIF9fc3FsID0gc3FsaXRlX29wZW4oZmls
ZW5hbWUuc3RyaW5nKCkuY19zdHIoKSwgMDc1NSwgJmVycm1zZyk7CiAgaWYgKCEgX19zcWwp
CiAgICB0aHJvdyBvb3BzKHN0cmluZygiY291bGQgbm90IG9wZW4gZGF0YWJhc2U6ICIpICsg
ZmlsZW5hbWUuc3RyaW5nKCkgKyAKCSAgICAgICAoZXJybXNnID8gKCI6ICIgKyBzdHJpbmco
ZXJybXNnKSkgOiAiIikpOwogIG1pZ3JhdGVfbW9ub3RvbmVfc2NoZW1hKF9fc3FsKTsKICBz
cWxpdGVfY2xvc2UoX19zcWwpOwp9Cgp2b2lkIApkYXRhYmFzZTo6cmVoYXNoKCkKewogIHRy
YW5zYWN0aW9uX2d1YXJkIGd1YXJkKCp0aGlzKTsKICB0aWNrZXIgbWNlcnRzKCJtY2VydHMi
LCAibSIsIDEpOwogIHRpY2tlciBmY2VydHMoImZjZXJ0cyIsICJmIiwgMSk7CiAgdGlja2Vy
IHB1YmtleXMoInB1YmtleXMiLCAiKyIsIDEpOwogIHRpY2tlciBwcml2a2V5cygicHJpdmtl
eXMiLCAiISIsIDEpOwogIAogIHsKICAgIC8vIHJlaGFzaCBhbGwgbWNlcnRzCiAgICByZXN1
bHRzIHJlczsKICAgIHZlY3RvcjxjZXJ0PiBjZXJ0czsKICAgIGZldGNoKHJlcywgNSwgYW55
X3Jvd3MsIAoJICAiU0VMRUNUIGlkLCBuYW1lLCB2YWx1ZSwga2V5cGFpciwgc2lnbmF0dXJl
ICIKCSAgIkZST00gbWFuaWZlc3RfY2VydHMiKTsKICAgIHJlc3VsdHNfdG9fY2VydHMocmVz
LCBjZXJ0cyk7CiAgICBleGVjdXRlKCJERUxFVEUgRlJPTSBtYW5pZmVzdF9jZXJ0cyIpOwog
ICAgZm9yKHZlY3RvcjxjZXJ0Pjo6Y29uc3RfaXRlcmF0b3IgaSA9IGNlcnRzLmJlZ2luKCk7
IGkgIT0gY2VydHMuZW5kKCk7ICsraSkKICAgICAgewoJcHV0X2NlcnQoKmksICJtYW5pZmVz
dF9jZXJ0cyIpOwoJKyttY2VydHM7CiAgICAgIH0KICB9CgogIHsKICAgIC8vIHJlaGFzaCBh
bGwgZmNlcnRzCiAgICByZXN1bHRzIHJlczsKICAgIHZlY3RvcjxjZXJ0PiBjZXJ0czsgICAg
CiAgICBmZXRjaChyZXMsIDUsIGFueV9yb3dzLCAKCSAgIlNFTEVDVCBpZCwgbmFtZSwgdmFs
dWUsIGtleXBhaXIsIHNpZ25hdHVyZSAiCgkgICJGUk9NIGZpbGVfY2VydHMiKTsKICAgIHJl
c3VsdHNfdG9fY2VydHMocmVzLCBjZXJ0cyk7CiAgICBleGVjdXRlKCJERUxFVEUgRlJPTSBm
aWxlX2NlcnRzIik7CiAgICBmb3IodmVjdG9yPGNlcnQ+Ojpjb25zdF9pdGVyYXRvciBpID0g
Y2VydHMuYmVnaW4oKTsgaSAhPSBjZXJ0cy5lbmQoKTsgKytpKQogICAgICB7CglwdXRfY2Vy
dCgqaSwgImZpbGVfY2VydHMiKTsKCSsrZmNlcnRzOwogICAgICB9CiAgfQogIAoKICB7CiAg
ICAvLyByZWhhc2ggYWxsIHB1YmtleXMKICAgIHJlc3VsdHMgcmVzOwogICAgZmV0Y2gocmVz
LCAyLCBhbnlfcm93cywgIlNFTEVDVCBpZCwga2V5ZGF0YSBGUk9NIHB1YmxpY19rZXlzIik7
CiAgICBleGVjdXRlKCJERUxFVEUgRlJPTSBwdWJsaWNfa2V5cyIpOwogICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCByZXMuc2l6ZSgpOyArK2kpCiAgICAgIHsKCWhleGVuYzxpZD4gdG1w
OwoJa2V5X2hhc2hfY29kZShyc2Ffa2V5cGFpcl9pZChyZXNbaV1bMF0pLCBiYXNlNjQ8cnNh
X3B1Yl9rZXk+KHJlc1tpXVsxXSksIHRtcCk7CglleGVjdXRlKCJJTlNFUlQgSU5UTyBwdWJs
aWNfa2V5cyBWQUxVRVMoJyVxJywgJyVxJywgJyVxJykiLCAKCQl0bXAoKS5jX3N0cigpLCBy
ZXNbaV1bMF0uY19zdHIoKSwgcmVzW2ldWzFdLmNfc3RyKCkpOwoJKytwdWJrZXlzOwogICAg
ICB9CiAgfQoKewogICAgLy8gcmVoYXNoIGFsbCBwcml2a2V5cwogICAgcmVzdWx0cyByZXM7
CiAgICBmZXRjaChyZXMsIDIsIGFueV9yb3dzLCAiU0VMRUNUIGlkLCBrZXlkYXRhIEZST00g
cHJpdmF0ZV9rZXlzIik7CiAgICBleGVjdXRlKCJERUxFVEUgRlJPTSBwcml2YXRlX2tleXMi
KTsKICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzLnNpemUoKTsgKytpKQogICAgICB7
CgloZXhlbmM8aWQ+IHRtcDsKCWtleV9oYXNoX2NvZGUocnNhX2tleXBhaXJfaWQocmVzW2ld
WzBdKSwgYmFzZTY0PCBhcmM0PHJzYV9wcml2X2tleT4gPihyZXNbaV1bMV0pLCB0bXApOwoJ
ZXhlY3V0ZSgiSU5TRVJUIElOVE8gcHJpdmF0ZV9rZXlzIFZBTFVFUygnJXEnLCAnJXEnLCAn
JXEnKSIsIAoJCXRtcCgpLmNfc3RyKCksIHJlc1tpXVswXS5jX3N0cigpLCByZXNbaV1bMV0u
Y19zdHIoKSk7CgkrK3ByaXZrZXlzOwogICAgICB9CiAgfQoKICBndWFyZC5jb21taXQoKTsK
fQoKdm9pZCAKZGF0YWJhc2U6OmVuc3VyZV9vcGVuKCkKewogIHNxbGl0ZSAqcyA9IHNxbCgp
OwogIEkocyAhPSBOVUxMKTsKfQoKZGF0YWJhc2U6On5kYXRhYmFzZSgpIAp7CiAgaWYgKF9f
c3FsKQogICAgewogICAgICBzcWxpdGVfY2xvc2UoX19zcWwpOwogICAgICBfX3NxbCA9IDA7
CiAgICB9Cn0KCnN0YXRpYyB2b2lkIAphc3NlcnRfc3FsaXRlX29rKGludCByZXMpCnsKICBz
d2l0Y2ggKHJlcykKICAgIHsgICAgICAKICAgIGNhc2UgU1FMSVRFX09LOiAKICAgICAgYnJl
YWs7CgogICAgY2FzZSBTUUxJVEVfRVJST1I6CiAgICAgIHRocm93IG9vcHMoIlNRTCBlcnJv
ciBvciBtaXNzaW5nIGRhdGFiYXNlIik7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgU1FMSVRF
X0lOVEVSTkFMOgogICAgICB0aHJvdyBvb3BzKCJBbiBpbnRlcm5hbCBsb2dpYyBlcnJvciBp
biBTUUxpdGUiKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBTUUxJVEVfUEVSTToKICAgICAg
dGhyb3cgb29wcygiQWNjZXNzIHBlcm1pc3Npb24gZGVuaWVkIik7CiAgICAgIGJyZWFrOwoK
ICAgIGNhc2UgU1FMSVRFX0FCT1JUOgogICAgICB0aHJvdyBvb3BzKCJDYWxsYmFjayByb3V0
aW5lIHJlcXVlc3RlZCBhbiBhYm9ydCIpOwogICAgICBicmVhazsKCiAgICBjYXNlIFNRTElU
RV9CVVNZOgogICAgICB0aHJvdyBvb3BzKCJUaGUgZGF0YWJhc2UgZmlsZSBpcyBsb2NrZWQi
KTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBTUUxJVEVfTE9DS0VEOgogICAgICB0aHJvdyBv
b3BzKCJBIHRhYmxlIGluIHRoZSBkYXRhYmFzZSBpcyBsb2NrZWQiKTsKICAgICAgYnJlYWs7
CgogICAgY2FzZSBTUUxJVEVfTk9NRU06CiAgICAgIHRocm93IG9vcHMoIkEgbWFsbG9jKCkg
ZmFpbGVkIik7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgU1FMSVRFX1JFQURPTkxZOgogICAg
ICB0aHJvdyBvb3BzKCJBdHRlbXB0IHRvIHdyaXRlIGEgcmVhZG9ubHkgZGF0YWJhc2UiKTsK
ICAgICAgYnJlYWs7CgogICAgY2FzZSBTUUxJVEVfSU5URVJSVVBUOgogICAgICB0aHJvdyBv
b3BzKCJPcGVyYXRpb24gdGVybWluYXRlZCBieSBzcWxpdGVfaW50ZXJydXB0KCkiKTsKICAg
ICAgYnJlYWs7CgogICAgY2FzZSBTUUxJVEVfSU9FUlI6CiAgICAgIHRocm93IG9vcHMoIlNv
bWUga2luZCBvZiBkaXNrIEkvTyBlcnJvciBvY2N1cnJlZCIpOwogICAgICBicmVhazsKCiAg
ICBjYXNlIFNRTElURV9DT1JSVVBUOgogICAgICB0aHJvdyBvb3BzKCJUaGUgZGF0YWJhc2Ug
ZGlzayBpbWFnZSBpcyBtYWxmb3JtZWQiKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBTUUxJ
VEVfTk9URk9VTkQ6CiAgICAgIHRocm93IG9vcHMoIihJbnRlcm5hbCBPbmx5KSBUYWJsZSBv
ciByZWNvcmQgbm90IGZvdW5kIik7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgU1FMSVRFX0ZV
TEw6CiAgICAgIHRocm93IG9vcHMoIkluc2VydGlvbiBmYWlsZWQgYmVjYXVzZSBkYXRhYmFz
ZSBpcyBmdWxsIik7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgU1FMSVRFX0NBTlRPUEVOOgog
ICAgICB0aHJvdyBvb3BzKCJVbmFibGUgdG8gb3BlbiB0aGUgZGF0YWJhc2UgZmlsZSIpOwog
ICAgICBicmVhazsKCiAgICBjYXNlIFNRTElURV9QUk9UT0NPTDoKICAgICAgdGhyb3cgb29w
cygiZGF0YWJhc2UgbG9jayBwcm90b2NvbCBlcnJvciIpOwogICAgICBicmVhazsKCiAgICBj
YXNlIFNRTElURV9FTVBUWToKICAgICAgdGhyb3cgb29wcygiKEludGVybmFsIE9ubHkpIGRh
dGFiYXNlIHRhYmxlIGlzIGVtcHR5Iik7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgU1FMSVRF
X1NDSEVNQToKICAgICAgdGhyb3cgb29wcygiVGhlIGRhdGFiYXNlIHNjaGVtYSBjaGFuZ2Vk
Iik7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgU1FMSVRFX1RPT0JJRzoKICAgICAgdGhyb3cg
b29wcygiVG9vIG11Y2ggZGF0YSBmb3Igb25lIHJvdyBvZiBhIHRhYmxlIik7CiAgICAgIGJy
ZWFrOwoKICAgIGNhc2UgU1FMSVRFX0NPTlNUUkFJTlQ6CiAgICAgIHRocm93IG9vcHMoIkFi
b3J0IGR1ZSB0byBjb250cmFpbnQgdmlvbGF0aW9uIik7CiAgICAgIGJyZWFrOwoKICAgIGNh
c2UgU1FMSVRFX01JU01BVENIOgogICAgICB0aHJvdyBvb3BzKCJEYXRhIHR5cGUgbWlzbWF0
Y2giKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBTUUxJVEVfTUlTVVNFOgogICAgICB0aHJv
dyBvb3BzKCJMaWJyYXJ5IHVzZWQgaW5jb3JyZWN0bHkiKTsKICAgICAgYnJlYWs7CgogICAg
ZGVmYXVsdDoKICAgICAgdGhyb3cgb29wcyhzdHJpbmcoIlVua25vd24gREIgcmVzdWx0IGNv
ZGU6ICIpICsgbGV4aWNhbF9jYXN0PHN0cmluZz4ocmVzKSk7CiAgICAgIGJyZWFrOwogICAg
fQp9Cgp2b2lkIApkYXRhYmFzZTo6ZXhlY3V0ZShjaGFyIGNvbnN0ICogcXVlcnksIC4uLikK
ewogIHZhX2xpc3QgYXA7CiAgaW50IHJlczsKICBjaGFyICogZXJybXNnID0gTlVMTDsKCiAg
dmFfc3RhcnQoYXAsIHF1ZXJ5KTsKCiAgLy8gbG9nIGl0CiAgY2hhciAqIGZvcm1hdHRlZCA9
IHNxbGl0ZV92bXByaW50ZihxdWVyeSwgYXApOwogIHN0cmluZyBxcShmb3JtYXR0ZWQpOwog
IGlmIChxcS5zaXplKCkgPiBjb25zdGFudHM6OmRiX2xvZ19saW5lX3N6KSAKICAgIHFxID0g
cXEuc3Vic3RyKDAsIGNvbnN0YW50czo6ZGJfbG9nX2xpbmVfc3opICsgc3RyaW5nKCIgLi4u
Iik7CiAgTChGKCJkYi5leGVjdXRlKFwiJXNcIilcbiIpICUgcXEpOwogIHNxbGl0ZV9mcmVl
bWVtKGZvcm1hdHRlZCk7CgogIHZhX2VuZChhcCk7CiAgdmFfc3RhcnQoYXAsIHF1ZXJ5KTsK
CiAgLy8gZG8gaXQKICByZXMgPSBzcWxpdGVfZXhlY192cHJpbnRmKHNxbCgpLCBxdWVyeSwg
TlVMTCwgTlVMTCwgJmVycm1zZywgYXApOwoKICB2YV9lbmQoYXApOwoKICBpZiAoZXJybXNn
KQogICAgdGhyb3cgb29wcyhzdHJpbmcoInNxbGl0ZSBleGVjIGVycm9yICIpICsgZXJybXNn
KTsKCiAgYXNzZXJ0X3NxbGl0ZV9vayhyZXMpOwoKfQoKdm9pZCAKZGF0YWJhc2U6OmZldGNo
KHJlc3VsdHMgJiByZXMsIAoJCWludCBjb25zdCB3YW50X2NvbHMsIAoJCWludCBjb25zdCB3
YW50X3Jvd3MsIAoJCWNoYXIgY29uc3QgKiBxdWVyeSwgLi4uKQp7CiAgY2hhciAqKiByZXN1
bHQgPSBOVUxMOwogIGludCBucm93OwogIGludCBuY29sOwogIGNoYXIgKiBlcnJtc2cgPSBO
VUxMOwogIGludCByZXNjb2RlOwoKICB2YV9saXN0IGFwOwogIHJlcy5jbGVhcigpOwogIHJl
cy5yZXNpemUoMCk7CiAgdmFfc3RhcnQoYXAsIHF1ZXJ5KTsKCiAgLy8gbG9nIGl0CiAgY2hh
ciAqIGZvcm1hdHRlZCA9IHNxbGl0ZV92bXByaW50ZihxdWVyeSwgYXApOwogIHN0cmluZyBx
cShmb3JtYXR0ZWQpOwogIGlmIChxcS5zaXplKCkgPiBjb25zdGFudHM6OmxvZ19saW5lX3N6
KSAKICAgIHFxID0gcXEuc3Vic3RyKDAsIGNvbnN0YW50czo6bG9nX2xpbmVfc3opICsgc3Ry
aW5nKCIgLi4uIik7CiAgTChGKCJkYi5mZXRjaChcIiVzXCIpXG4iKSAlIHFxKTsKICBzcWxp
dGVfZnJlZW1lbShmb3JtYXR0ZWQpOwoKICB2YV9lbmQoYXApOwogIHZhX3N0YXJ0KGFwLCBx
dWVyeSk7CgogIC8vIGRvIGl0CiAgcmVzY29kZSA9IHNxbGl0ZV9nZXRfdGFibGVfdnByaW50
ZihzcWwoKSwgcXVlcnksICZyZXN1bHQsICZucm93LCAmbmNvbCwgJmVycm1zZywgYXApOwoK
ICB2YV9lbmQoYXApOwoKICBjbGVhbnVwX3B0cjxjaGFyICoqLCB2b2lkPiAKICAgIHJlc3Vs
dF9ndWFyZChyZXN1bHQsICZzcWxpdGVfZnJlZV90YWJsZSk7CgogIHN0cmluZyBjdHggPSBz
dHJpbmcoImRiIHF1ZXJ5IFsiKSArIHN0cmluZyhxdWVyeSkgKyAiXTogIjsKCiAgaWYgKGVy
cm1zZykKICAgIHRocm93IG9vcHMoY3R4ICsgc3RyaW5nKCJzcWxpdGUgZXJyb3IgIikgKyBl
cnJtc2cpOwogIGFzc2VydF9zcWxpdGVfb2socmVzY29kZSk7CgogIGlmICh3YW50X2NvbHMg
PT0gMCAmJiBuY29sID09IDApIHJldHVybjsKICBpZiAod2FudF9yb3dzID09IDAgJiYgbnJv
dyA9PSAwKSByZXR1cm47CiAgaWYgKHdhbnRfY29scyA9PSBhbnlfcm93cyAmJiBuY29sID09
IDApIHJldHVybjsKICBpZiAod2FudF9yb3dzID09IGFueV9yb3dzICYmIG5yb3cgPT0gMCkg
cmV0dXJuOwoKICBpZiAod2FudF9jb2xzICE9IGFueV9jb2xzICYmCiAgICAgIG5jb2wgIT0g
d2FudF9jb2xzKQogICAgdGhyb3cgb29wcygoRigiJXMgd2FudGVkICVkIGNvbHVtbnMsIGdv
dCAlcyIpCgkJJSBjdHggJSB3YW50X2NvbHMgJSBuY29sKS5zdHIoKSk7CgogIGlmICh3YW50
X3Jvd3MgIT0gYW55X3Jvd3MgJiYKICAgICAgbnJvdyAhPSB3YW50X3Jvd3MpCiAgICB0aHJv
dyBvb3BzKChGKCIlcyB3YW50ZWQgJWQgcm93cywgZ290ICVzIikKCQklIGN0eCAlIHdhbnRf
cm93cyAlIG5yb3cpLnN0cigpKTsKCiAgaWYgKCFyZXN1bHQpCiAgICB0aHJvdyBvb3BzKGN0
eCArICJudWxsIHJlc3VsdCBzZXQiKTsKCiAgZm9yIChpbnQgaSA9IDA7IGkgPCBuY29sOyAr
K2kpIAogICAgaWYgKCFyZXN1bHRbaV0pCiAgICAgIHRocm93IG9vcHMoY3R4ICsgIm51bGwg
Y29sdW1uIG5hbWUiKTsKCiAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgbnJvdzsgKytyb3cp
IAogICAgewogICAgICB2ZWN0b3I8c3RyaW5nPiByb3d2ZWM7CiAgICAgIGZvciAoaW50IGNv
bCA9IDA7IGNvbCA8IG5jb2w7ICsrY29sKQoJewoJICBpbnQgaSA9ICgoMSArIHJvdykgKiBu
Y29sKSArIGNvbDsKCSAgaWYgKCFyZXN1bHRbaV0pCgkgICAgdGhyb3cgb29wcyhjdHggKyAi
bnVsbCByZXN1bHQgdmFsdWUiKTsKCSAgZWxzZQoJICAgIHJvd3ZlYy5wdXNoX2JhY2socmVz
dWx0W2ldKTsKCX0KICAgICAgcmVzLnB1c2hfYmFjayhyb3d2ZWMpOwogICAgfQp9CgovLyBn
ZW5lcmFsIGFwcGxpY2F0aW9uLWxldmVsIGxvZ2ljCgp2b2lkIApkYXRhYmFzZTo6c2V0X2Zp
bGVuYW1lKGZzOjpwYXRoIGNvbnN0ICYgZmlsZSkKewogIGlmIChfX3NxbCkKICAgIHsKICAg
ICAgdGhyb3cgb29wcygiY2Fubm90IGNoYW5nZSBmaWxlbmFtZSB0byAiICsgZmlsZS5zdHJp
bmcoKSArICIgd2hpbGUgZGIgaXMgb3BlbiIpOwogICAgfQogIGZpbGVuYW1lID0gZmlsZTsK
fQoKdm9pZCAKZGF0YWJhc2U6OmJlZ2luX3RyYW5zYWN0aW9uKCkgCnsKICBpZiAodHJhbnNh
Y3Rpb25fbGV2ZWwgPT0gMCkKICAgICAgZXhlY3V0ZSgiQkVHSU4iKTsKICB0cmFuc2FjdGlv
bl9sZXZlbCsrOwp9Cgp2b2lkIApkYXRhYmFzZTo6Y29tbWl0X3RyYW5zYWN0aW9uKCkKewog
IGlmICh0cmFuc2FjdGlvbl9sZXZlbCA9PSAxKQogICAgZXhlY3V0ZSgiQ09NTUlUIik7CiAg
dHJhbnNhY3Rpb25fbGV2ZWwtLTsKfQoKdm9pZCAKZGF0YWJhc2U6OnJvbGxiYWNrX3RyYW5z
YWN0aW9uKCkKewogIGlmICh0cmFuc2FjdGlvbl9sZXZlbCA9PSAxKQogICAgZXhlY3V0ZSgi
Uk9MTEJBQ0siKTsKICB0cmFuc2FjdGlvbl9sZXZlbC0tOwp9CgoKYm9vbCAKZGF0YWJhc2U6
OmV4aXN0cyhoZXhlbmM8aWQ+IGNvbnN0ICYgaWRlbnQsCgkJICAgICAgc3RyaW5nIGNvbnN0
ICYgdGFibGUpCnsKICByZXN1bHRzIHJlczsKICBmZXRjaChyZXMsIG9uZV9jb2wsIGFueV9y
b3dzLCAKCSJTRUxFQ1QgaWQgRlJPTSAnJXEnIFdIRVJFIGlkID0gJyVxJyIsCgl0YWJsZS5j
X3N0cigpLCBpZGVudCgpLmNfc3RyKCkpOwogIEkoKHJlcy5zaXplKCkgPT0gMSkgfHwgKHJl
cy5zaXplKCkgPT0gMCkpOwogIHJldHVybiByZXMuc2l6ZSgpID09IDE7Cn0KCgpib29sIApk
YXRhYmFzZTo6ZGVsdGFfZXhpc3RzKGhleGVuYzxpZD4gY29uc3QgJiBpZGVudCwKCQkgICAg
ICAgc3RyaW5nIGNvbnN0ICYgdGFibGUpCnsKICByZXN1bHRzIHJlczsKICBmZXRjaChyZXMs
IG9uZV9jb2wsIGFueV9yb3dzLCAKCSJTRUxFQ1QgaWQgRlJPTSAnJXEnIFdIRVJFIGlkID0g
JyVxJyIsCgl0YWJsZS5jX3N0cigpLCBpZGVudCgpLmNfc3RyKCkpOwogIHJldHVybiByZXMu
c2l6ZSgpID4gMDsKfQoKYm9vbCAKZGF0YWJhc2U6OmRlbHRhX2V4aXN0cyhoZXhlbmM8aWQ+
IGNvbnN0ICYgaWRlbnQsCgkJICAgICAgIGhleGVuYzxpZD4gY29uc3QgJiBiYXNlLAoJCSAg
ICAgICBzdHJpbmcgY29uc3QgJiB0YWJsZSkKewogIHJlc3VsdHMgcmVzOwogIGZldGNoKHJl
cywgb25lX2NvbCwgYW55X3Jvd3MsIAoJIlNFTEVDVCBpZCBGUk9NICclcScgV0hFUkUgaWQg
PSAnJXEnIEFORCBiYXNlID0gJyVxJyIsCgl0YWJsZS5jX3N0cigpLCBpZGVudCgpLmNfc3Ry
KCksIGJhc2UoKS5jX3N0cigpKTsKICBJKChyZXMuc2l6ZSgpID09IDEpIHx8IChyZXMuc2l6
ZSgpID09IDApKTsKICByZXR1cm4gcmVzLnNpemUoKSA9PSAxOwp9CgppbnQgCmRhdGFiYXNl
Ojpjb3VudChzdHJpbmcgY29uc3QgJiB0YWJsZSkKewogIHJlc3VsdHMgcmVzOwogIGZldGNo
KHJlcywgb25lX2NvbCwgb25lX3JvdywgCgkiU0VMRUNUIENPVU5UKCopIEZST00gJyVxJyIs
IAoJdGFibGUuY19zdHIoKSk7CiAgcmV0dXJuIGxleGljYWxfY2FzdDxpbnQ+KHJlc1swXVsw
XSk7ICAKfQoKdm9pZCAKZGF0YWJhc2U6OmdldChoZXhlbmM8aWQ+IGNvbnN0ICYgaWRlbnQs
CgkgICAgICBiYXNlNjQ8IGd6aXA8ZGF0YT4gPiAmIGRhdCwKCSAgICAgIHN0cmluZyBjb25z
dCAmIHRhYmxlKQp7CiAgcmVzdWx0cyByZXM7CiAgZmV0Y2gocmVzLCBvbmVfY29sLCBvbmVf
cm93LAoJIlNFTEVDVCBkYXRhIEZST00gJyVxJyBXSEVSRSBpZCA9ICclcSciLCAKCXRhYmxl
LmNfc3RyKCksIGlkZW50KCkuY19zdHIoKSk7CgogIC8vIGNvbnNpc3RlbmN5IGNoZWNrCiAg
YmFzZTY0PGd6aXA8ZGF0YT4gPiByZGF0YShyZXNbMF1bMF0pOwogIGhleGVuYzxpZD4gdGlk
OwogIGNhbGN1bGF0ZV9pZGVudChyZGF0YSwgdGlkKTsKICBJKHRpZCA9PSBpZGVudCk7Cgog
IGRhdCA9IHJkYXRhOwp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X2RlbHRhKGhleGVuYzxpZD4g
Y29uc3QgJiBpZGVudCwKCQkgICAgaGV4ZW5jPGlkPiBjb25zdCAmIGJhc2UsCgkJICAgIGJh
c2U2NDwgZ3ppcDxkZWx0YT4gPiAmIGRlbCwKCQkgICAgc3RyaW5nIGNvbnN0ICYgdGFibGUp
CnsKICBJKGlkZW50KCkgIT0gIiIpOwogIEkoYmFzZSgpICE9ICIiKTsKICByZXN1bHRzIHJl
czsKICBmZXRjaChyZXMsIG9uZV9jb2wsIG9uZV9yb3csCgkiU0VMRUNUIGRlbHRhIEZST00g
JyVxJyBXSEVSRSBpZCA9ICclcScgQU5EIGJhc2UgPSAnJXEnIiwgCgl0YWJsZS5jX3N0cigp
LCBpZGVudCgpLmNfc3RyKCksIGJhc2UoKS5jX3N0cigpKTsKICBkZWwgPSByZXNbMF1bMF07
Cn0KCnZvaWQgCmRhdGFiYXNlOjpwdXQoaGV4ZW5jPGlkPiBjb25zdCAmIGlkZW50LAoJICAg
ICAgYmFzZTY0PCBnemlwPGRhdGE+ID4gY29uc3QgJiBkYXQsCgkgICAgICBzdHJpbmcgY29u
c3QgJiB0YWJsZSkKewogIC8vIGNvbnNpc3RlbmN5IGNoZWNrCiAgSShpZGVudCgpICE9ICIi
KTsKICBoZXhlbmM8aWQ+IHRpZDsKICBjYWxjdWxhdGVfaWRlbnQoZGF0LCB0aWQpOwogIEko
dGlkID09IGlkZW50KTsKICAKICBleGVjdXRlKCJJTlNFUlQgSU5UTyAnJXEnIFZBTFVFUygn
JXEnLCAnJXEnKSIsIAoJICB0YWJsZS5jX3N0cigpLCBpZGVudCgpLmNfc3RyKCksIGRhdCgp
LmNfc3RyKCkpOwp9CgoKdm9pZCAKZGF0YWJhc2U6OnB1dF9kZWx0YShoZXhlbmM8aWQ+IGNv
bnN0ICYgaWRlbnQsCgkJICAgIGhleGVuYzxpZD4gY29uc3QgJiBiYXNlLAoJCSAgICBiYXNl
NjQ8Z3ppcDxkZWx0YT4gPiBjb25zdCAmIGRlbCwKCQkgICAgc3RyaW5nIGNvbnN0ICYgdGFi
bGUpCnsKICAvLyBuYjogZGVsdGEgc2NoZW1hIGlzIChpZCwgYmFzZSwgZGVsdGEpCiAgSShp
ZGVudCgpICE9ICIiKTsKICBJKGJhc2UoKSAhPSAiIik7CiAgZXhlY3V0ZSgiSU5TRVJUIElO
VE8gJyVxJyBWQUxVRVMoJyVxJywgJyVxJywgJyVxJykiLCAKCSAgdGFibGUuY19zdHIoKSwg
CgkgIGlkZW50KCkuY19zdHIoKSwgYmFzZSgpLmNfc3RyKCksIGRlbCgpLmNfc3RyKCkpOwp9
Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X3ZlcnNpb24oaGV4ZW5jPGlkPiBjb25zdCAmIGlkZW50
LAoJCSAgICAgIGJhc2U2NDwgZ3ppcDxkYXRhPiA+ICYgZGF0LAoJCSAgICAgIHN0cmluZyBj
b25zdCAmIGRhdGFfdGFibGUsCgkJICAgICAgc3RyaW5nIGNvbnN0ICYgZGVsdGFfdGFibGUp
CnsKICBJKGlkZW50KCkgIT0gIiIpOwogIGlmIChleGlzdHMoaWRlbnQsIGRhdGFfdGFibGUp
KQogICAgewogICAgICAvLyBlYXN5IHBhdGgKICAgICAgZ2V0KGlkZW50LCBkYXQsIGRhdGFf
dGFibGUpOwogICAgfQogIGVsc2UKICAgIHsKICAgICAgLy8gdHJpY2t5IHBhdGgKCiAgICAg
IC8vIHdlIHN0YXJ0IGZyb20gdGhlIGZpbGUgd2Ugd2FudCB0byByZWNvbnN0cnVjdCBhbmQg
d29yayAqZm9yd2FyZHMqCiAgICAgIC8vIHRocm91Z2ggdGhlIGRhdGFiYXNlLCB1bnRpbCB3
ZSBnZXQgdG8gYSBmdWxsIGRhdGEgb2JqZWN0LiB3ZSB0aGVuCiAgICAgIC8vIHRyYWNlIGJh
Y2sgdGhyb3VnaCB0aGUgbGlzdCBvZiBlZGdlcyB3ZSBmb2xsb3dlZCB0byBnZXQgdG8gdGhl
IGRhdGEKICAgICAgLy8gb2JqZWN0LCBhcHBseWluZyByZXZlcnNlIGRlbHRhcy4KICAgICAg
Ly8KICAgICAgLy8gdGhlIGVmZmVjdCBvZiB0aGlzIGFsZ29yaXRobSBpcyBicmVhZHRoLWZp
cnN0IHNlYXJjaCwgYmFja3dhcmRzCiAgICAgIC8vIHRocm91Z2ggdGhlIHN0b3JhZ2UgZ3Jh
cGgsIHRvIGRpc2NvdmVyIGEgZm9yd2FyZHMgc2hvcnRlc3QgcGF0aCwgYW5kCiAgICAgIC8v
IHRoZW4gZm9sbG93aW5nIHRoYXQgc2hvcnRlc3QgcGF0aCB3aXRoIGRlbHRhIGFwcGxpY2F0
aW9uLgogICAgICAvLwogICAgICAvLyB3ZSB1c2VkIHRvIGRvIHRoaXMgd2l0aCB0aGUgYm9v
c3QgZ3JhcGggbGlicmFyeSwgYnV0IGl0IGludm92bGVkCiAgICAgIC8vIGxvYWRpbmcgdG9v
IG11Y2ggb2YgdGhlIHN0b3JhZ2UgZ3JhcGggaW50byBtZW1vcnkgYXQgYW55IG1vbWVudC4g
dGhpcwogICAgICAvLyBpbXBlcmF0aXZlIHZlcnNpb24gb25seSBsb2FkcyB0aGUgZGVzY2Vu
ZGVudHMgb2YgdGhlIHJlY29uc3RydWN0aW9uCiAgICAgIC8vIG5vZGUsIHNvIGl0IG11Y2gg
Y2hlYXBlciBpbiB0ZXJtcyBvZiBtZW1vcnkuCiAgICAgIC8vCiAgICAgIC8vIHdlIGFsc28g
bWFpbnRhaW4gYSBjeWNsZS1kZXRlY3Rpbmcgc2V0LCBqdXN0IHRvIGJlIHNhZmUKICAgICAg
CiAgICAgIEwoRigicmVjb25zdHJ1Y3RpbmcgJXMgaW4gJXNcbiIpICUgaWRlbnQgJSBkZWx0
YV90YWJsZSk7CiAgICAgIEkoZGVsdGFfZXhpc3RzKGlkZW50LCBkZWx0YV90YWJsZSkpOwog
ICAgICAKICAgICAgLy8gbmI6IGFuIGVkZ2UgbWFwIGdvZXMgaW4gdGhlIGRpcmVjdGlvbiBv
ZiB0aGUKICAgICAgLy8gZGVsdGEsICpub3QqIHRoZSBkaXJlY3Rpb24gd2UgZGlzY292ZXIg
dGhpbmdzIGluLAogICAgICAvLyBpLmUuIGVhY2ggbWFwIGlzIG9mIHRoZSBmb3JtIFtuZXdp
ZF0gLT4gW29sZGlkXQoKICAgICAgdHlwZWRlZiBtYXA8IGhleGVuYzxpZD4sIGhleGVuYzxp
ZD4gPiBlZGdlbWFwOwogICAgICBsaXN0PCBzaGFyZWRfcHRyPGVkZ2VtYXA+ID4gcGF0aHM7
CgogICAgICBzZXQ8IGhleGVuYzxpZD4gPiBmcm9udGllciwgY3ljbGVzOwogICAgICBmcm9u
dGllci5pbnNlcnQoaWRlbnQpOwoKICAgICAgYm9vbCBmb3VuZF9yb290ID0gZmFsc2U7CiAg
ICAgIGhleGVuYzxpZD4gcm9vdCgiIik7CgogICAgICB3aGlsZSAoISBmb3VuZF9yb290KQoJ
ewoJICBzZXQ8IGhleGVuYzxpZD4gPiBuZXh0X2Zyb250aWVyOwoJICBzaGFyZWRfcHRyPGVk
Z2VtYXA+IGZyb250aWVyX21hcChuZXcgZWRnZW1hcCgpKTsKCgkgIEkoIWZyb250aWVyLmVt
cHR5KCkpOwoKCSAgZm9yIChzZXQ8IGhleGVuYzxpZD4gPjo6Y29uc3RfaXRlcmF0b3IgaSA9
IGZyb250aWVyLmJlZ2luKCk7CgkgICAgICAgaSAhPSBmcm9udGllci5lbmQoKTsgKytpKQoJ
ICAgIHsKCSAgICAgIGlmIChleGlzdHMoKmksIGRhdGFfdGFibGUpKQoJCXsKCQkgIHJvb3Qg
PSAqaTsKCQkgIGZvdW5kX3Jvb3QgPSB0cnVlOwoJCSAgYnJlYWs7CgkJfQoJICAgICAgZWxz
ZQoJCXsKCQkgIGN5Y2xlcy5pbnNlcnQoKmkpOwoJCSAgcmVzdWx0cyByZXM7CgkJICBmZXRj
aChyZXMsIG9uZV9jb2wsIGFueV9yb3dzLCAiU0VMRUNUIGJhc2UgZnJvbSAnJXEnIFdIRVJF
IGlkID0gJyVxJyIsCgkJCWRlbHRhX3RhYmxlLmNfc3RyKCksICgqaSkoKS5jX3N0cigpKTsK
CQkgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgcmVzLnNpemUoKTsgKytrKQoJCSAgICB7CgkJ
ICAgICAgaGV4ZW5jPGlkPiBjb25zdCBueHQocmVzW2tdWzBdKTsKCgkJICAgICAgaWYgKGN5
Y2xlcy5maW5kKG54dCkgIT0gY3ljbGVzLmVuZCgpKQoJCQl0aHJvdyBvb3BzKCJjeWNsZSBp
biB0YWJsZSAnIiArIGRlbHRhX3RhYmxlICsgIicsIGF0IG5vZGUgIiAKCQkJCSAgICsgKCpp
KSgpICsgIiA8LSAiICsgbnh0KCkpOwoKCQkgICAgICBuZXh0X2Zyb250aWVyLmluc2VydChu
eHQpOwoKCQkgICAgICBpZiAoZnJvbnRpZXJfbWFwLT5maW5kKG54dCkgPT0gZnJvbnRpZXJf
bWFwLT5lbmQoKSkKCQkJewoJCQkgIEwoRigiaW5zZXJ0aW5nIGVkZ2U6ICVzIDwtICVzXG4i
KSAlICgqaSkgJSBueHQpOwoJCQkgIGZyb250aWVyX21hcC0+aW5zZXJ0KG1ha2VfcGFpcihu
eHQsICppKSk7CgkJCX0KCQkgICAgICBlbHNlCgkJCUwoRigic2tpcHBpbmcgbWVyZ2UgZWRn
ZSAlcyA8LSAlc1xuIikgJSAoKmkpICUgbnh0KTsKCQkgICAgfQoJCX0KCSAgICB9CgkgIGlm
ICghZm91bmRfcm9vdCkKCSAgICB7CgkgICAgICBmcm9udGllciA9IG5leHRfZnJvbnRpZXI7
CgkgICAgICBwYXRocy5wdXNoX2Zyb250KGZyb250aWVyX21hcCk7CgkgICAgfQoJfQoKICAg
ICAgLy8gcGF0aCBidWlsdCwgbm93IGFsbCB3ZSBuZWVkIHRvIGRvIGlzIGZvbGxvdyBpdCBi
YWNrCgogICAgICBJKGZvdW5kX3Jvb3QpOwogICAgICBJKHJvb3QoKSAhPSAiIik7CiAgICAg
IGJhc2U2NDwgZ3ppcDxkYXRhPiA+IGJlZ2luX3BhY2tlZDsKICAgICAgZGF0YSBiZWdpbjsg
ICAgICAKICAgICAgZ2V0KHJvb3QsIGJlZ2luX3BhY2tlZCwgZGF0YV90YWJsZSk7CiAgICAg
IHVucGFjayhiZWdpbl9wYWNrZWQsIGJlZ2luKTsKICAgICAgaGV4ZW5jPGlkPiBjdXJyID0g
cm9vdDsKCiAgICAgIGJvb3N0OjpzaGFyZWRfcHRyPGRlbHRhX2FwcGxpY2F0b3I+IGFwcCA9
IG5ld19waWVjZXdpc2VfYXBwbGljYXRvcigpOwogICAgICBhcHAtPmJlZ2luKGJlZ2luKCkp
OwogICAgICAKICAgICAgZm9yIChsaXN0PCBzaGFyZWRfcHRyPGVkZ2VtYXA+ID46OmNvbnN0
X2l0ZXJhdG9yIHAgPSBwYXRocy5iZWdpbigpOwoJICAgcCAhPSBwYXRocy5lbmQoKTsgKytw
KQoJewoJICBzaGFyZWRfcHRyPGVkZ2VtYXA+IGkgPSAqcDsKCSAgSShpLT5maW5kKGN1cnIp
ICE9IGktPmVuZCgpKTsKCSAgaGV4ZW5jPGlkPiBjb25zdCBueHQgPSBpLT5maW5kKGN1cnIp
LT5zZWNvbmQ7CgoJICBMKEYoImZvbGxvd2luZyBkZWx0YSAlcyAtPiAlc1xuIikgJSBjdXJy
ICUgbnh0KTsKCSAgYmFzZTY0PCBnemlwPGRlbHRhPiA+IGRlbF9wYWNrZWQ7CgkgIGdldF9k
ZWx0YShueHQsIGN1cnIsIGRlbF9wYWNrZWQsIGRlbHRhX3RhYmxlKTsKCSAgZGVsdGEgZGVs
OwoJICB1bnBhY2soZGVsX3BhY2tlZCwgZGVsKTsKCSAgYXBwbHlfZGVsdGEgKGFwcCwgZGVs
KCkpOwoJICBhcHAtPm5leHQoKTsKCSAgY3VyciA9IG54dDsKCX0KCiAgICAgIHN0cmluZyB0
bXA7CiAgICAgIGFwcC0+ZmluaXNoKHRtcCk7CiAgICAgIGRhdGEgZW5kKHRtcCk7CgogICAg
ICBoZXhlbmM8aWQ+IGZpbmFsOwogICAgICBjYWxjdWxhdGVfaWRlbnQoZW5kLCBmaW5hbCk7
CiAgICAgIEkoZmluYWwgPT0gaWRlbnQpOwogICAgICBwYWNrKGVuZCwgZGF0KTsKICAgIH0K
fQoKCnZvaWQgCmRhdGFiYXNlOjpkcm9wKGhleGVuYzxpZD4gY29uc3QgJiBpZGVudCwgCgkg
ICAgICAgc3RyaW5nIGNvbnN0ICYgdGFibGUpCnsKICBleGVjdXRlKCJERUxFVEUgRlJPTSAn
JXEnIFdIRVJFIGlkID0gJyVxJyIsICAKCSAgdGFibGUuY19zdHIoKSwKCSAgaWRlbnQoKS5j
X3N0cigpKTsKfQoKdm9pZCAKZGF0YWJhc2U6OnB1dF92ZXJzaW9uKGhleGVuYzxpZD4gY29u
c3QgJiBvbGRfaWQsCgkJICAgICAgaGV4ZW5jPGlkPiBjb25zdCAmIG5ld19pZCwKCQkgICAg
ICBiYXNlNjQ8IGd6aXA8ZGVsdGE+ID4gY29uc3QgJiBkZWwsCgkJICAgICAgc3RyaW5nIGNv
bnN0ICYgZGF0YV90YWJsZSwKCQkgICAgICBzdHJpbmcgY29uc3QgJiBkZWx0YV90YWJsZSkK
ewoKICBiYXNlNjQ8IGd6aXA8ZGF0YT4gPiBvbGRfZGF0YSwgbmV3X2RhdGE7CiAgYmFzZTY0
PCBnemlwPGRlbHRhPiA+IHJldmVyc2VfZGVsdGE7CiAgCiAgZ2V0X3ZlcnNpb24ob2xkX2lk
LCBvbGRfZGF0YSwgZGF0YV90YWJsZSwgZGVsdGFfdGFibGUpOwogIHBhdGNoKG9sZF9kYXRh
LCBkZWwsIG5ld19kYXRhKTsKICBkaWZmKG5ld19kYXRhLCBvbGRfZGF0YSwgcmV2ZXJzZV9k
ZWx0YSk7CiAgICAgIAogIHRyYW5zYWN0aW9uX2d1YXJkIGd1YXJkKCp0aGlzKTsKICBpZiAo
ZXhpc3RzKG9sZF9pZCwgZGF0YV90YWJsZSkpCiAgICB7CiAgICAgIC8vIGRlc2NlbmRlbnQg
b2YgYSBoZWFkIHZlcnNpb24gcmVwbGFjZXMgdGhlIGhlYWQsIHRoZXJlZm9yZSBvbGQgaGVh
ZAogICAgICAvLyBtdXN0IGJlIGRpc3Bvc2VkIG9mCiAgICAgIGRyb3Aob2xkX2lkLCBkYXRh
X3RhYmxlKTsKICAgIH0KICBwdXQobmV3X2lkLCBuZXdfZGF0YSwgZGF0YV90YWJsZSk7CiAg
cHV0X2RlbHRhKG9sZF9pZCwgbmV3X2lkLCByZXZlcnNlX2RlbHRhLCBkZWx0YV90YWJsZSk7
CiAgZ3VhcmQuY29tbWl0KCk7Cn0KCnZvaWQgCmRhdGFiYXNlOjpwdXRfcmV2ZXJzZV92ZXJz
aW9uKGhleGVuYzxpZD4gY29uc3QgJiBuZXdfaWQsCgkJCSAgICAgIGhleGVuYzxpZD4gY29u
c3QgJiBvbGRfaWQsCgkJCSAgICAgIGJhc2U2NDwgZ3ppcDxkZWx0YT4gPiBjb25zdCAmIHJl
dmVyc2VfZGVsLAoJCQkgICAgICBzdHJpbmcgY29uc3QgJiBkYXRhX3RhYmxlLAoJCQkgICAg
ICBzdHJpbmcgY29uc3QgJiBkZWx0YV90YWJsZSkKewogIGJhc2U2NDwgZ3ppcDxkYXRhPiA+
IG9sZF9kYXRhLCBuZXdfZGF0YTsKICAKICBnZXRfdmVyc2lvbihuZXdfaWQsIG5ld19kYXRh
LCBkYXRhX3RhYmxlLCBkZWx0YV90YWJsZSk7CiAgcGF0Y2gobmV3X2RhdGEsIHJldmVyc2Vf
ZGVsLCBvbGRfZGF0YSk7CiAgaGV4ZW5jPGlkPiBjaGVjazsKICBjYWxjdWxhdGVfaWRlbnQo
b2xkX2RhdGEsIGNoZWNrKTsKICBJKG9sZF9pZCA9PSBjaGVjayk7CiAgICAgIAogIHRyYW5z
YWN0aW9uX2d1YXJkIGd1YXJkKCp0aGlzKTsKICBwdXRfZGVsdGEob2xkX2lkLCBuZXdfaWQs
IHJldmVyc2VfZGVsLCBkZWx0YV90YWJsZSk7CiAgZ3VhcmQuY29tbWl0KCk7Cn0KCgoKLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi8vIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAtLQovLyAtLSAgICAgICAgICAgICAgcHVibGljIGludGVyZmFjZSBm
b2xsb3dzICAgICAgICAgICAgICAgICAgLS0KLy8gLS0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKYm9vbCAK
ZGF0YWJhc2U6OmZpbGVfdmVyc2lvbl9leGlzdHMoZmlsZV9pZCBjb25zdCAmIGlkKQp7CiAg
cmV0dXJuIGRlbHRhX2V4aXN0cyhpZC5pbm5lcigpLCAiZmlsZV9kZWx0YXMiKSAKICAgIHx8
IGV4aXN0cyhpZC5pbm5lcigpLCAiZmlsZXMiKTsKfQoKYm9vbCAKZGF0YWJhc2U6Om1hbmlm
ZXN0X3ZlcnNpb25fZXhpc3RzKG1hbmlmZXN0X2lkIGNvbnN0ICYgaWQpCnsKICByZXR1cm4g
ZGVsdGFfZXhpc3RzKGlkLmlubmVyKCksICJtYW5pZmVzdF9kZWx0YXMiKSAKICAgIHx8IGV4
aXN0cyhpZC5pbm5lcigpLCAibWFuaWZlc3RzIik7Cn0KCmJvb2wgCmRhdGFiYXNlOjpyZXZp
c2lvbl9leGlzdHMocmV2aXNpb25faWQgY29uc3QgJiBpZCkKewogIHJldHVybiBleGlzdHMo
aWQuaW5uZXIoKSwgInJldmlzaW9ucyIpOwp9CgoKdm9pZCAKZGF0YWJhc2U6OmdldF9maWxl
X3ZlcnNpb24oZmlsZV9pZCBjb25zdCAmIGlkLAoJCQkgICBmaWxlX2RhdGEgJiBkYXQpCnsK
ICBiYXNlNjQ8IGd6aXA8ZGF0YT4gPiB0bXA7CiAgZ2V0X3ZlcnNpb24oaWQuaW5uZXIoKSwg
dG1wLCAiZmlsZXMiLCAiZmlsZV9kZWx0YXMiKTsKICBkYXQgPSB0bXA7Cn0KCnZvaWQgCmRh
dGFiYXNlOjpnZXRfbWFuaWZlc3RfdmVyc2lvbihtYW5pZmVzdF9pZCBjb25zdCAmIGlkLAoJ
CQkgICAgICAgbWFuaWZlc3RfZGF0YSAmIGRhdCkKewogIGJhc2U2NDwgZ3ppcDxkYXRhPiA+
IHRtcDsKICBnZXRfdmVyc2lvbihpZC5pbm5lcigpLCB0bXAsICJtYW5pZmVzdHMiLCAibWFu
aWZlc3RfZGVsdGFzIik7CiAgZGF0ID0gdG1wOwp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X21h
bmlmZXN0KG1hbmlmZXN0X2lkIGNvbnN0ICYgaWQsCgkJICAgICAgIG1hbmlmZXN0X21hcCAm
IG1tKQp7CiAgbWFuaWZlc3RfZGF0YSBtZGF0OwogIGdldF9tYW5pZmVzdF92ZXJzaW9uKGlk
LCBtZGF0KTsKICByZWFkX21hbmlmZXN0X21hcChtZGF0LCBtbSk7Cn0KCgp2b2lkIApkYXRh
YmFzZTo6cHV0X2ZpbGUoZmlsZV9pZCBjb25zdCAmIGlkLAoJCSAgIGZpbGVfZGF0YSBjb25z
dCAmIGRhdCkKewogIHB1dChpZC5pbm5lcigpLCBkYXQuaW5uZXIoKSwgImZpbGVzIik7Cn0K
CnZvaWQgCmRhdGFiYXNlOjpwdXRfZmlsZV92ZXJzaW9uKGZpbGVfaWQgY29uc3QgJiBvbGRf
aWQsCgkJCSAgIGZpbGVfaWQgY29uc3QgJiBuZXdfaWQsCgkJCSAgIGZpbGVfZGVsdGEgY29u
c3QgJiBkZWwpCnsKICBwdXRfdmVyc2lvbihvbGRfaWQuaW5uZXIoKSwgbmV3X2lkLmlubmVy
KCksIGRlbC5pbm5lcigpLCAKCSAgICAgICJmaWxlcyIsICJmaWxlX2RlbHRhcyIpOwp9Cgp2
b2lkIApkYXRhYmFzZTo6cHV0X2ZpbGVfcmV2ZXJzZV92ZXJzaW9uKGZpbGVfaWQgY29uc3Qg
JiBuZXdfaWQsCgkJCQkgICBmaWxlX2lkIGNvbnN0ICYgb2xkX2lkLAkJCQkgICAKCQkJCSAg
IGZpbGVfZGVsdGEgY29uc3QgJiBkZWwpCnsKICBwdXRfcmV2ZXJzZV92ZXJzaW9uKG5ld19p
ZC5pbm5lcigpLCBvbGRfaWQuaW5uZXIoKSwgZGVsLmlubmVyKCksIAoJCSAgICAgICJmaWxl
cyIsICJmaWxlX2RlbHRhcyIpOwp9CgoKdm9pZCAKZGF0YWJhc2U6OnB1dF9tYW5pZmVzdCht
YW5pZmVzdF9pZCBjb25zdCAmIGlkLAoJCSAgICAgICBtYW5pZmVzdF9kYXRhIGNvbnN0ICYg
ZGF0KQp7CiAgcHV0KGlkLmlubmVyKCksIGRhdC5pbm5lcigpLCAibWFuaWZlc3RzIik7Cn0K
CnZvaWQgCmRhdGFiYXNlOjpwdXRfbWFuaWZlc3RfdmVyc2lvbihtYW5pZmVzdF9pZCBjb25z
dCAmIG9sZF9pZCwKCQkJICAgICAgIG1hbmlmZXN0X2lkIGNvbnN0ICYgbmV3X2lkLAoJCQkg
ICAgICAgbWFuaWZlc3RfZGVsdGEgY29uc3QgJiBkZWwpCnsKICBwdXRfdmVyc2lvbihvbGRf
aWQuaW5uZXIoKSwgbmV3X2lkLmlubmVyKCksIGRlbC5pbm5lcigpLCAKCSAgICAgICJtYW5p
ZmVzdHMiLCAibWFuaWZlc3RfZGVsdGFzIik7Cn0KCnZvaWQgCmRhdGFiYXNlOjpwdXRfbWFu
aWZlc3RfcmV2ZXJzZV92ZXJzaW9uKG1hbmlmZXN0X2lkIGNvbnN0ICYgbmV3X2lkLAoJCQkJ
ICAgICAgIG1hbmlmZXN0X2lkIGNvbnN0ICYgb2xkX2lkLAkJCQkgICAKCQkJCSAgICAgICBt
YW5pZmVzdF9kZWx0YSBjb25zdCAmIGRlbCkKewogIHB1dF9yZXZlcnNlX3ZlcnNpb24obmV3
X2lkLmlubmVyKCksIG9sZF9pZC5pbm5lcigpLCBkZWwuaW5uZXIoKSwgCgkJICAgICAgIm1h
bmlmZXN0cyIsICJtYW5pZmVzdF9kZWx0YXMiKTsKfQoKCnZvaWQgCmRhdGFiYXNlOjpnZXRf
cmV2aXNpb25fYW5jZXN0cnkoc3RkOjpzZXQ8c3RkOjpwYWlyPHJldmlzaW9uX2lkLCByZXZp
c2lvbl9pZD4gPiAmIGdyYXBoKQp7CiAgcmVzdWx0cyByZXM7CiAgZ3JhcGguY2xlYXIoKTsK
ICBmZXRjaChyZXMsIDIsIGFueV9yb3dzLCAKCSJTRUxFQ1QgcGFyZW50LGNoaWxkIEZST00g
cmV2aXNpb25fYW5jZXN0cnkiKTsKICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlcy5zaXpl
KCk7ICsraSkKICAgIGdyYXBoLmluc2VydChzdGQ6Om1ha2VfcGFpcihyZXZpc2lvbl9pZChy
ZXNbaV1bMF0pLAoJCQkJcmV2aXNpb25faWQocmVzW2ldWzFdKSkpOwp9Cgp2b2lkIApkYXRh
YmFzZTo6Z2V0X3JldmlzaW9uX3BhcmVudHMocmV2aXNpb25faWQgY29uc3QgJiBpZCwKCQkJ
ICAgICAgc2V0PHJldmlzaW9uX2lkPiAmIHBhcmVudHMpCnsKICByZXN1bHRzIHJlczsKICBw
YXJlbnRzLmNsZWFyKCk7CiAgZmV0Y2gocmVzLCBvbmVfY29sLCBhbnlfcm93cywgCgkiU0VM
RUNUIHBhcmVudCBGUk9NIHJldmlzaW9uX2FuY2VzdHJ5IFdIRVJFIGNoaWxkID0gJyVxJyIs
CglpZC5pbm5lcigpKCkuY19zdHIoKSk7CiAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXMu
c2l6ZSgpOyArK2kpCiAgICBwYXJlbnRzLmluc2VydChyZXZpc2lvbl9pZChyZXNbaV1bMF0p
KTsKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9yZXZpc2lvbl9jaGlsZHJlbihyZXZpc2lvbl9p
ZCBjb25zdCAmIGlkLAoJCQkJc2V0PHJldmlzaW9uX2lkPiAmIGNoaWxkcmVuKQp7CiAgcmVz
dWx0cyByZXM7CiAgY2hpbGRyZW4uY2xlYXIoKTsKICBmZXRjaChyZXMsIG9uZV9jb2wsIGFu
eV9yb3dzLCAKCSJTRUxFQ1QgY2hpbGQgRlJPTSByZXZpc2lvbl9hbmNlc3RyeSBXSEVSRSBw
YXJlbnQgPSAnJXEnIiwKCWlkLmlubmVyKCkoKS5jX3N0cigpKTsKICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHJlcy5zaXplKCk7ICsraSkKICAgIGNoaWxkcmVuLmluc2VydChyZXZpc2lv
bl9pZChyZXNbaV1bMF0pKTsKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9yZXZpc2lvbl9tYW5p
ZmVzdChyZXZpc2lvbl9pZCBjb25zdCAmIHJpZCwKCQkJICAgICAgIG1hbmlmZXN0X2lkICYg
bWlkKQp7CiAgcmV2aXNpb25fc2V0IHJldjsKICBnZXRfcmV2aXNpb24ocmlkLCByZXYpOwog
IG1pZCA9IHJldi5uZXdfbWFuaWZlc3Q7Cn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRfcmV2aXNp
b24ocmV2aXNpb25faWQgY29uc3QgJiBpZCwKCQkgICAgICAgcmV2aXNpb25fc2V0ICYgcmV2
KQp7CiAgcmV2aXNpb25fZGF0YSBkOwogIGdldF9yZXZpc2lvbihpZCwgZCk7CiAgcmVhZF9y
ZXZpc2lvbl9zZXQoZCwgcmV2KTsKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9yZXZpc2lvbihy
ZXZpc2lvbl9pZCBjb25zdCAmIGlkLAoJCSAgICAgICByZXZpc2lvbl9kYXRhICYgZGF0KQp7
CiAgcmVzdWx0cyByZXM7CiAgZmV0Y2gocmVzLCBvbmVfY29sLCBvbmVfcm93LCAKCSJTRUxF
Q1QgZGF0YSBGUk9NIHJldmlzaW9ucyBXSEVSRSBpZCA9ICclcSciLAoJaWQuaW5uZXIoKSgp
LmNfc3RyKCkpOwoKICBkYXQgPSByZXZpc2lvbl9kYXRhKHJlc1swXVswXSk7CgogIC8vIHZl
cmlmeSB0aGF0IHdlIGdvdCBhIHJldmlzaW9uIHdpdGggdGhlIHJpZ2h0IGlkCiAgewogICAg
cmV2aXNpb25faWQgdG1wOwogICAgY2FsY3VsYXRlX2lkZW50KGRhdCwgdG1wKTsKICAgIEko
aWQgPT0gdG1wKTsKICB9Cn0KCnZvaWQgCmRhdGFiYXNlOjpwdXRfcmV2aXNpb24ocmV2aXNp
b25faWQgY29uc3QgJiBuZXdfaWQsCgkJICAgICAgIHJldmlzaW9uX3NldCBjb25zdCAmIHJl
dikKewoKICBJKCFyZXZpc2lvbl9leGlzdHMobmV3X2lkKSk7CiAgcmV2aXNpb25fZGF0YSBk
OwoKICB3cml0ZV9yZXZpc2lvbl9zZXQocmV2LCBkKTsKICByZXZpc2lvbl9pZCB0bXA7CiAg
Y2FsY3VsYXRlX2lkZW50KGQsIHRtcCk7CiAgSSh0bXAgPT0gbmV3X2lkKTsKCiAgdHJhbnNh
Y3Rpb25fZ3VhcmQgZ3VhcmQoKnRoaXMpOwoKICBleGVjdXRlKCJJTlNFUlQgSU5UTyByZXZp
c2lvbnMgVkFMVUVTKCclcScsICclcScpIiwgCgkgIG5ld19pZC5pbm5lcigpKCkuY19zdHIo
KSwgCgkgIGQuaW5uZXIoKSgpLmNfc3RyKCkpOwoKICBmb3IgKGVkZ2VfbWFwOjpjb25zdF9p
dGVyYXRvciBlID0gcmV2LmVkZ2VzLmJlZ2luKCk7CiAgICAgICBlICE9IHJldi5lZGdlcy5l
bmQoKTsgKytlKQogICAgewogICAgICBleGVjdXRlKCJJTlNFUlQgSU5UTyByZXZpc2lvbl9h
bmNlc3RyeSBWQUxVRVMoJyVxJywgJyVxJykiLCAKCSAgICAgIGVkZ2Vfb2xkX3JldmlzaW9u
KGUpLmlubmVyKCkoKS5jX3N0cigpLAoJICAgICAgbmV3X2lkLmlubmVyKCkoKS5jX3N0cigp
KTsKICAgIH0KCiAgZ3VhcmQuY29tbWl0KCk7Cn0KCnZvaWQgCmRhdGFiYXNlOjpwdXRfcmV2
aXNpb24ocmV2aXNpb25faWQgY29uc3QgJiBuZXdfaWQsCgkJICAgICAgIHJldmlzaW9uX2Rh
dGEgY29uc3QgJiBkYXQpCnsKICByZXZpc2lvbl9zZXQgcmV2OwogIHJlYWRfcmV2aXNpb25f
c2V0KGRhdCwgcmV2KTsKICBwdXRfcmV2aXNpb24obmV3X2lkLCByZXYpOwp9CgoKLy8gY3J5
cHRvIGtleSBtYW5hZ2VtZW50Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X2tleV9pZHMoc3RyaW5n
IGNvbnN0ICYgcGF0dGVybiwKCQkgICAgICB2ZWN0b3I8cnNhX2tleXBhaXJfaWQ+ICYgcHVi
a2V5cywKCQkgICAgICB2ZWN0b3I8cnNhX2tleXBhaXJfaWQ+ICYgcHJpdmtleXMpCnsKICBw
dWJrZXlzLmNsZWFyKCk7CiAgcHJpdmtleXMuY2xlYXIoKTsKICByZXN1bHRzIHJlczsKCiAg
aWYgKHBhdHRlcm4gIT0gIiIpCiAgICBmZXRjaChyZXMsIG9uZV9jb2wsIGFueV9yb3dzLCAK
CSAgIlNFTEVDVCBpZCBmcm9tIHB1YmxpY19rZXlzIFdIRVJFIGlkIEdMT0IgJyVxJyIsCgkg
IHBhdHRlcm4uY19zdHIoKSk7CiAgZWxzZQogICAgZmV0Y2gocmVzLCBvbmVfY29sLCBhbnlf
cm93cywgCgkgICJTRUxFQ1QgaWQgZnJvbSBwdWJsaWNfa2V5cyIpOwoKICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHJlcy5zaXplKCk7ICsraSkKICAgIHB1YmtleXMucHVzaF9iYWNrKHJl
c1tpXVswXSk7CgogIGlmIChwYXR0ZXJuICE9ICIiKQogICAgZmV0Y2gocmVzLCBvbmVfY29s
LCBhbnlfcm93cywgCgkgICJTRUxFQ1QgaWQgZnJvbSBwcml2YXRlX2tleXMgV0hFUkUgaWQg
R0xPQiAnJXEnIiwKCSAgcGF0dGVybi5jX3N0cigpKTsKICBlbHNlCiAgICBmZXRjaChyZXMs
IG9uZV9jb2wsIGFueV9yb3dzLCAKCSAgIlNFTEVDVCBpZCBmcm9tIHByaXZhdGVfa2V5cyIp
OwoKICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlcy5zaXplKCk7ICsraSkKICAgIHByaXZr
ZXlzLnB1c2hfYmFjayhyZXNbaV1bMF0pOwp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X3ByaXZh
dGVfa2V5cyh2ZWN0b3I8cnNhX2tleXBhaXJfaWQ+ICYgcHJpdmtleXMpCnsKICBwcml2a2V5
cy5jbGVhcigpOwogIHJlc3VsdHMgcmVzOwogIGZldGNoKHJlcywgb25lX2NvbCwgYW55X3Jv
d3MsICAiU0VMRUNUIGlkIGZyb20gcHJpdmF0ZV9rZXlzIik7CiAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCByZXMuc2l6ZSgpOyArK2kpCiAgICBwcml2a2V5cy5wdXNoX2JhY2socmVzW2ld
WzBdKTsKfQoKYm9vbCAKZGF0YWJhc2U6OnB1YmxpY19rZXlfZXhpc3RzKGhleGVuYzxpZD4g
Y29uc3QgJiBoYXNoKQp7CiAgcmVzdWx0cyByZXM7CiAgZmV0Y2gocmVzLCBvbmVfY29sLCBh
bnlfcm93cywgCgkiU0VMRUNUIGlkIEZST00gcHVibGljX2tleXMgV0hFUkUgaGFzaCA9ICcl
cSciLAoJaGFzaCgpLmNfc3RyKCkpOwogIEkoKHJlcy5zaXplKCkgPT0gMSkgfHwgKHJlcy5z
aXplKCkgPT0gMCkpOwogIGlmIChyZXMuc2l6ZSgpID09IDEpIAogICAgcmV0dXJuIHRydWU7
CiAgcmV0dXJuIGZhbHNlOwp9Cgpib29sIApkYXRhYmFzZTo6cHVibGljX2tleV9leGlzdHMo
cnNhX2tleXBhaXJfaWQgY29uc3QgJiBpZCkKewogIHJlc3VsdHMgcmVzOwogIGZldGNoKHJl
cywgb25lX2NvbCwgYW55X3Jvd3MsIAoJIlNFTEVDVCBpZCBGUk9NIHB1YmxpY19rZXlzIFdI
RVJFIGlkID0gJyVxJyIsCglpZCgpLmNfc3RyKCkpOwogIEkoKHJlcy5zaXplKCkgPT0gMSkg
fHwgKHJlcy5zaXplKCkgPT0gMCkpOwogIGlmIChyZXMuc2l6ZSgpID09IDEpIAogICAgcmV0
dXJuIHRydWU7CiAgcmV0dXJuIGZhbHNlOwp9Cgpib29sIApkYXRhYmFzZTo6cHJpdmF0ZV9r
ZXlfZXhpc3RzKHJzYV9rZXlwYWlyX2lkIGNvbnN0ICYgaWQpCnsKICByZXN1bHRzIHJlczsK
ICBmZXRjaChyZXMsIG9uZV9jb2wsIGFueV9yb3dzLAoJIlNFTEVDVCBpZCBGUk9NIHByaXZh
dGVfa2V5cyBXSEVSRSBpZCA9ICclcSciLAoJaWQoKS5jX3N0cigpKTsKICBJKChyZXMuc2l6
ZSgpID09IDEpIHx8IChyZXMuc2l6ZSgpID09IDApKTsKICBpZiAocmVzLnNpemUoKSA9PSAx
KQogICAgcmV0dXJuIHRydWU7CiAgcmV0dXJuIGZhbHNlOwp9Cgpib29sIApkYXRhYmFzZTo6
a2V5X2V4aXN0cyhyc2Ffa2V5cGFpcl9pZCBjb25zdCAmIGlkKQp7CiAgcmV0dXJuIHB1Ymxp
Y19rZXlfZXhpc3RzKGlkKSB8fCBwcml2YXRlX2tleV9leGlzdHMoaWQpOwp9Cgp2b2lkIApk
YXRhYmFzZTo6Z2V0X3B1YmtleShoZXhlbmM8aWQ+IGNvbnN0ICYgaGFzaCwgCgkJICAgICBy
c2Ffa2V5cGFpcl9pZCAmIGlkLAoJCSAgICAgYmFzZTY0PHJzYV9wdWJfa2V5PiAmIHB1Yl9l
bmNvZGVkKQp7CiAgcmVzdWx0cyByZXM7CiAgZmV0Y2gocmVzLCAyLCBvbmVfcm93LCAKCSJT
RUxFQ1QgaWQsIGtleWRhdGEgRlJPTSBwdWJsaWNfa2V5cyB3aGVyZSBoYXNoID0gJyVxJyIs
IAoJaGFzaCgpLmNfc3RyKCkpOwogIGlkID0gcmVzWzBdWzBdOwogIHB1Yl9lbmNvZGVkID0g
cmVzWzBdWzFdOwp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X2tleShyc2Ffa2V5cGFpcl9pZCBj
b25zdCAmIHB1Yl9pZCwgCgkJICBiYXNlNjQ8cnNhX3B1Yl9rZXk+ICYgcHViX2VuY29kZWQp
CnsKICByZXN1bHRzIHJlczsKICBmZXRjaChyZXMsIG9uZV9jb2wsIG9uZV9yb3csIAoJIlNF
TEVDVCBrZXlkYXRhIEZST00gcHVibGljX2tleXMgd2hlcmUgaWQgPSAnJXEnIiwgCglwdWJf
aWQoKS5jX3N0cigpKTsKICBwdWJfZW5jb2RlZCA9IHJlc1swXVswXTsKfQoKdm9pZCAKZGF0
YWJhc2U6OmdldF9rZXkocnNhX2tleXBhaXJfaWQgY29uc3QgJiBwcml2X2lkLCAKCQkgIGJh
c2U2NDwgYXJjNDxyc2FfcHJpdl9rZXk+ID4gJiBwcml2X2VuY29kZWQpCnsKICByZXN1bHRz
IHJlczsKICBmZXRjaChyZXMsIG9uZV9jb2wsIG9uZV9jb2wsIAoJIlNFTEVDVCBrZXlkYXRh
IEZST00gcHJpdmF0ZV9rZXlzIHdoZXJlIGlkID0gJyVxJyIsIAoJcHJpdl9pZCgpLmNfc3Ry
KCkpOwogIHByaXZfZW5jb2RlZCA9IHJlc1swXVswXTsKfQoKCnZvaWQgCmRhdGFiYXNlOjpw
dXRfa2V5KHJzYV9rZXlwYWlyX2lkIGNvbnN0ICYgcHViX2lkLCAKCQkgIGJhc2U2NDxyc2Ff
cHViX2tleT4gY29uc3QgJiBwdWJfZW5jb2RlZCkKewogIGhleGVuYzxpZD4gdGhhc2g7CiAg
a2V5X2hhc2hfY29kZShwdWJfaWQsIHB1Yl9lbmNvZGVkLCB0aGFzaCk7CiAgZXhlY3V0ZSgi
SU5TRVJUIElOVE8gcHVibGljX2tleXMgVkFMVUVTKCclcScsICclcScsICclcScpIiwgCgkg
IHRoYXNoKCkuY19zdHIoKSwgcHViX2lkKCkuY19zdHIoKSwgcHViX2VuY29kZWQoKS5jX3N0
cigpKTsKfQoKdm9pZCAKZGF0YWJhc2U6OnB1dF9rZXkocnNhX2tleXBhaXJfaWQgY29uc3Qg
JiBwcml2X2lkLCAKCQkgIGJhc2U2NDwgYXJjNDxyc2FfcHJpdl9rZXk+ID4gY29uc3QgJiBw
cml2X2VuY29kZWQpCnsKICAKICBoZXhlbmM8aWQ+IHRoYXNoOwogIGtleV9oYXNoX2NvZGUo
cHJpdl9pZCwgcHJpdl9lbmNvZGVkLCB0aGFzaCk7CiAgZXhlY3V0ZSgiSU5TRVJUIElOVE8g
cHJpdmF0ZV9rZXlzIFZBTFVFUygnJXEnLCAnJXEnLCAnJXEnKSIsIAoJICB0aGFzaCgpLmNf
c3RyKCksIHByaXZfaWQoKS5jX3N0cigpLCBwcml2X2VuY29kZWQoKS5jX3N0cigpKTsKfQoK
dm9pZCAKZGF0YWJhc2U6OnB1dF9rZXlfcGFpcihyc2Ffa2V5cGFpcl9pZCBjb25zdCAmIGlk
LCAKCQkgICAgICAgYmFzZTY0PHJzYV9wdWJfa2V5PiBjb25zdCAmIHB1Yl9lbmNvZGVkLAoJ
CSAgICAgICBiYXNlNjQ8IGFyYzQ8cnNhX3ByaXZfa2V5PiA+IGNvbnN0ICYgcHJpdl9lbmNv
ZGVkKQp7CiAgdHJhbnNhY3Rpb25fZ3VhcmQgZ3VhcmQoKnRoaXMpOwogIHB1dF9rZXkoaWQs
IHB1Yl9lbmNvZGVkKTsKICBwdXRfa2V5KGlkLCBwcml2X2VuY29kZWQpOwogIGd1YXJkLmNv
bW1pdCgpOwp9CgoKLy8gY2VydCBtYW5hZ2VtZW50Cgpib29sIApkYXRhYmFzZTo6Y2VydF9l
eGlzdHMoY2VydCBjb25zdCAmIHQsCgkJICAgICAgc3RyaW5nIGNvbnN0ICYgdGFibGUpCnsK
ICByZXN1bHRzIHJlczsKICBmZXRjaChyZXMsIDEsIGFueV9yb3dzLAoJIlNFTEVDVCBpZCBG
Uk9NICclcScgV0hFUkUgaWQgPSAnJXEnICIKCSJBTkQgbmFtZSA9ICclcScgQU5EIHZhbHVl
ID0gJyVxJyAiIAoJIkFORCBrZXlwYWlyID0gJyVxJyBBTkQgc2lnbmF0dXJlID0gJyVxJyAi
LAoJdGFibGUuY19zdHIoKSwKCXQuaWRlbnQoKS5jX3N0cigpLAoJdC5uYW1lKCkuY19zdHIo
KSwKCXQudmFsdWUoKS5jX3N0cigpLAoJdC5rZXkoKS5jX3N0cigpLAoJdC5zaWcoKS5jX3N0
cigpKTsKICBJKHJlcy5zaXplKCkgPT0gMCB8fCByZXMuc2l6ZSgpID09IDEpOwogIHJldHVy
biByZXMuc2l6ZSgpID09IDE7Cn0KCnZvaWQgCmRhdGFiYXNlOjpwdXRfY2VydChjZXJ0IGNv
bnN0ICYgdCwKCQkgICBzdHJpbmcgY29uc3QgJiB0YWJsZSkKewogIGhleGVuYzxpZD4gdGhh
c2g7CiAgY2VydF9oYXNoX2NvZGUodCwgdGhhc2gpOwogIGV4ZWN1dGUoIklOU0VSVCBJTlRP
ICclcScgVkFMVUVTKCclcScsICclcScsICclcScsICclcScsICclcScsICclcScpIiwgCgkg
IHRhYmxlLmNfc3RyKCksCgkgIHRoYXNoKCkuY19zdHIoKSwKCSAgdC5pZGVudCgpLmNfc3Ry
KCksCgkgIHQubmFtZSgpLmNfc3RyKCksIAoJICB0LnZhbHVlKCkuY19zdHIoKSwKCSAgdC5r
ZXkoKS5jX3N0cigpLAoJICB0LnNpZygpLmNfc3RyKCkpOwp9Cgp2b2lkIApkYXRhYmFzZTo6
cmVzdWx0c190b19jZXJ0cyhyZXN1bHRzIGNvbnN0ICYgcmVzLAoJCQkgICB2ZWN0b3I8Y2Vy
dD4gJiBjZXJ0cykKewogIGNlcnRzLmNsZWFyKCk7CiAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCByZXMuc2l6ZSgpOyArK2kpCiAgICB7CiAgICAgIGNlcnQgdDsKICAgICAgdCA9IGNlcnQo
aGV4ZW5jPGlkPihyZXNbaV1bMF0pLCAKCSAgICAgIGNlcnRfbmFtZShyZXNbaV1bMV0pLAoJ
ICAgICAgYmFzZTY0PGNlcnRfdmFsdWU+KHJlc1tpXVsyXSksCgkgICAgICByc2Ffa2V5cGFp
cl9pZChyZXNbaV1bM10pLAoJICAgICAgYmFzZTY0PHJzYV9zaGExX3NpZ25hdHVyZT4ocmVz
W2ldWzRdKSk7CiAgICAgIGNlcnRzLnB1c2hfYmFjayh0KTsKICAgIH0KfQoKCnN0cnVjdCB2
YWxpZF9jZXJ0cwp7CiAgc2V0PHJzYV9rZXlwYWlyX2lkPiB2YWxpZF9zaWduZXJzOwogIGhl
eGVuYzxpZD4gaWRlbnQ7CiAgY2VydF9uYW1lIG5hbWU7CiAgYmFzZTY0PGNlcnRfdmFsdWU+
IHZhbDsKICBzdHJpbmcgc2lnbmF0dXJlX3R5cGU7CgogIHZhbGlkX2NlcnRzKHN0cmluZyBj
b25zdCAmIHR5KSAKICAgIDogc2lnbmF0dXJlX3R5cGUodHkpIAogIHsKICAgIEwoRigiY29u
c3RydWN0aW5nIHZhbGlkaXR5IGNoZWNrZXIgZm9yICVzIGNlcnRzXG4iKSAlIHR5KTsKICB9
CgogIGJvb2wgY2hlY2tfc2lnbmVyX3RydXN0KGFwcF9zdGF0ZSAmIGFwcCkKICB7CiAgICBi
b29sIHRydXN0ZWQgPSBmYWxzZTsKCiAgICBMKEYoImNoZWNraW5nICVkIHNpZ25lciAlcyBj
ZXJ0IHRydXN0IHNldFxuIikgCiAgICAgICUgdmFsaWRfc2lnbmVycy5zaXplKCkgJSBzaWdu
YXR1cmVfdHlwZSk7CiAgICB0cnkKICAgICAgewoJY2VydF92YWx1ZSB2OwoJZGVjb2RlX2Jh
c2U2NCh2YWwsIHYpOwoJLy8gRklYTUU6IGxhbWUgc3RyaW5nLW1ha2VzLXRoZS1tb2RlIGFy
Z3VtZW50CglpZiAoc2lnbmF0dXJlX3R5cGUgPT0gInJldmlzaW9uIikKCSAgdHJ1c3RlZCA9
IGFwcC5sdWEuaG9va19nZXRfcmV2aXNpb25fY2VydF90cnVzdCh2YWxpZF9zaWduZXJzLAoJ
CQkJCQkJaWRlbnQsIG5hbWUsIHYpOwoJZWxzZSBpZiAoc2lnbmF0dXJlX3R5cGUgPT0gIm1h
bmlmZXN0IikKCSAgdHJ1c3RlZCA9IGFwcC5sdWEuaG9va19nZXRfbWFuaWZlc3RfY2VydF90
cnVzdCh2YWxpZF9zaWduZXJzLAoJCQkJCQkJIGlkZW50LCBuYW1lLCB2KTsKCWVsc2UgaWYg
KHNpZ25hdHVyZV90eXBlID09ICJmaWxlIikKCSAgdHJ1c3RlZCA9IGFwcC5sdWEuaG9va19n
ZXRfZmlsZV9jZXJ0X3RydXN0KHZhbGlkX3NpZ25lcnMsCgkJCQkJCSAgICAgaWRlbnQsIG5h
bWUsIHYpOwoJZWxzZQoJICBJKGZhbHNlKTsgLy8gc2hvdWxkIGJlIGlsbGVnYWwKICAgICAg
fQogICAgY2F0Y2ggKC4uLikKICAgICAgewoJVyhGKCJleGNlcHRpb24gaW4gc3FsaXRlIHZh
bGlkX2NlcnRzOjpjaGVja19zZXRfdHJ1c3RcbiIpKTsKICAgICAgfQogICAgCiAgICBpZiAo
dHJ1c3RlZCkKICAgICAgTChGKCJ0cnVzdCBmdW5jdGlvbiBsaWtlZCAlZCAlcyBzaWduZXJz
XG4iKSAKCSUgdmFsaWRfc2lnbmVycy5zaXplKCkgJSBzaWduYXR1cmVfdHlwZSk7CiAgICBl
bHNlCiAgICAgIEwoRigidHJ1c3QgZnVuY3Rpb24gZGlzbGlrZWQgJWQgJXMgc2lnbmVyc1xu
IikgCgklIHZhbGlkX3NpZ25lcnMuc2l6ZSgpICUgc2lnbmF0dXJlX3R5cGUpOwogICAgCiAg
ICByZXR1cm4gdHJ1c3RlZDsKICB9CgogIHZvaWQgY2hlY2tfc2luZ2xlX3NpZ25lcihhcHBf
c3RhdGUgJiBhcHAsCgkJCSAgIGludCBhcmdjLCAKCQkJICAgY2hhciBjb25zdCAqKiBhcmd2
KQogIHsKICAgIHRyeQogICAgICB7CgkvLyBhcmdzIGFyZTogaGFzaCwgaWQsIG5hbWUsIHZh
bHVlLCBrZXlwYWlyLCBwdWJrZXksIHNpZ25hdHVyZQoJLy8gTChGKCJlbnRyaWVzIGFyZSBb
JXNdIFslc10gWyVzXSBbJXNdIFslc10gWyVzXSBbJXNdXG4iKSAKCS8vIAkgICUgYXJndlsw
XSAlIGFyZ3ZbMV0gJSBhcmd2WzJdICUgYXJndlszXSAlIGFyZ3ZbNF0gJSBhcmd2WzVdICUg
YXJndls2XSk7CgoJY2VydCB0bXAgPSBjZXJ0KGhleGVuYzxpZD4oYXJndlsxXSksIAoJCQlj
ZXJ0X25hbWUoYXJndlsyXSksCgkJCWJhc2U2NDxjZXJ0X3ZhbHVlPihhcmd2WzNdKSwKCQkJ
cnNhX2tleXBhaXJfaWQoYXJndls0XSksCgkJCWJhc2U2NDxyc2Ffc2hhMV9zaWduYXR1cmU+
KGFyZ3ZbNl0pKTsKCgliYXNlNjQ8cnNhX3B1Yl9rZXk+IHBrKGFyZ3ZbNV0pOwoKCWlmIChp
ZGVudCgpLmVtcHR5KCkpCgkgIGlkZW50ID0gdG1wLmlkZW50OwoJZWxzZQoJICBJKGlkZW50
ID09IHRtcC5pZGVudCk7CgoJaWYgKG5hbWUoKS5lbXB0eSgpKQoJICBuYW1lID0gdG1wLm5h
bWU7CgllbHNlCgkgIEkobmFtZSA9PSB0bXAubmFtZSk7CgoJaWYgKHZhbCgpLmVtcHR5KCkp
CgkgIHZhbCA9IHRtcC52YWx1ZTsKCWVsc2UKCSAgSSh2YWwgPT0gdG1wLnZhbHVlKTsKCgkv
LyAJTChGKCJleGFtaW5pbmcgJyVzJyAlcyBjZXJ0IGZyb20gJXNcbiIpIAoJLy8gCSAgJSBu
YW1lICUgc2lnbmF0dXJlX3R5cGUgJSBpZGVudCk7CgoJc3RyaW5nIHR4dDsKCWNlcnRfc2ln
bmFibGVfdGV4dCh0bXAsIHR4dCk7CglpZiAoY2hlY2tfc2lnbmF0dXJlKGFwcC5sdWEsIHRt
cC5rZXksIHBrLCB0eHQsIHRtcC5zaWcpKQoJICB7CgkgICAgTChGKCJvayAnJXMnICVzIGNl
cnQgZnJvbSAlc1xuIikgCgkgICAgICAlIG5hbWUgJSBzaWduYXR1cmVfdHlwZSAlIHRtcC5r
ZXkpOwoJICAgIHZhbGlkX3NpZ25lcnMuaW5zZXJ0KHRtcC5rZXkpOwoJICB9CgllbHNlCgkg
IHsKCSAgICBXKEYoImJhZCAnJXMnICVzIGNlcnQgZnJvbSAlc1xuIikgCgkgICAgICAlIG5h
bWUgJSBzaWduYXR1cmVfdHlwZSAlIHRtcC5rZXkpOwoJICB9CiAgICAgIH0KICAgIGNhdGNo
IChzdGQ6OmV4Y2VwdGlvbiAmIGUpCiAgICAgIHsKCVcoRigic3RkOjpleGNlcHRpb24gaW4g
c3FsaXRlIHZhbGlkX2NlcnRzOjpjaGVja19zaW5nbGVfc2lnbmVyOiAlc1xuIikgJSBlLndo
YXQoKSk7CiAgICAgIH0KICAgIGNhdGNoICguLi4pCiAgICAgIHsKCVcoRigidW5rbm93biBl
eGNlcHRpb24gaW4gc3FsaXRlIHZhbGlkX2NlcnRzOjpjaGVja19zaW5nbGVfc2lnbmVyXG4i
KSk7CiAgICAgIH0KICB9Cn07CgpleHRlcm4gIkMiCnsKCnN0YXRpYyB2b2lkCnRydXN0ZWRf
c3RlcF9jYWxsYmFjayhzcWxpdGVfZnVuYyAqIGZuX2N0eCwgCgkJICAgICAgaW50IGFyZ2Ms
IAoJCSAgICAgIGNoYXIgY29uc3QgKiogYXJndikKewogIGFwcF9zdGF0ZSAqIGFwcCA9IE5V
TEw7IAogIHZhbGlkX2NlcnRzICoqIHZwcDsKCiAgSShmbl9jdHgpOwogIEkoYXJnYyA9PSA4
KTsKICBJKGFyZ3YpOwogIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgODsgKytpKQogICAgSShh
cmd2W2ldKTsKCiAgYXBwID0gc3RhdGljX2Nhc3Q8YXBwX3N0YXRlICo+KHNxbGl0ZV91c2Vy
X2RhdGEoZm5fY3R4KSk7CiAgSShhcHApOwogIHZwcCA9IHN0YXRpY19jYXN0PHZhbGlkX2Nl
cnRzICoqPihzcWxpdGVfYWdncmVnYXRlX2NvbnRleHQoZm5fY3R4LCBzaXplb2YodmFsaWRf
Y2VydHMgKikpKTsKICBJKHZwcCk7CiAgaWYgKCEgKCp2cHApKQogICAgKnZwcCA9IG5ldyB2
YWxpZF9jZXJ0cyhzdHJpbmcoYXJndlswXSkpOwogIEkoKnZwcCk7CiAgKCp2cHApLT5jaGVj
a19zaW5nbGVfc2lnbmVyKCphcHAsIGFyZ2MtMSwgYXJndisxKTsgIAp9CgpzdGF0aWMgdm9p
ZAp0cnVzdGVkX2ZpbmFsaXplX2NhbGxiYWNrKHNxbGl0ZV9mdW5jICogZm5fY3R4KQp7CiAg
YXBwX3N0YXRlICogYXBwID0gTlVMTDsgCiAgdmFsaWRfY2VydHMgKiogdnBwOwogIGFwcCA9
IHN0YXRpY19jYXN0PGFwcF9zdGF0ZSAqPihzcWxpdGVfdXNlcl9kYXRhKGZuX2N0eCkpOwog
IEkoYXBwKTsKICB2cHAgPSBzdGF0aWNfY2FzdDx2YWxpZF9jZXJ0cyAqKj4oc3FsaXRlX2Fn
Z3JlZ2F0ZV9jb250ZXh0KGZuX2N0eCwgc2l6ZW9mKHZhbGlkX2NlcnRzICopKSk7CgogIEko
dnBwKTsKICBJKCp2cHApOwoKICBpZiAoKCp2cHApLT5jaGVja19zaWduZXJfdHJ1c3QoKmFw
cCkpCiAgICBzcWxpdGVfc2V0X3Jlc3VsdF9pbnQoZm5fY3R4LCAxKTsKICBlbHNlCiAgICBz
cWxpdGVfc2V0X3Jlc3VsdF9pbnQoZm5fY3R4LCAwKTsKCiAgZGVsZXRlICgqdnBwKTsKfQp9
CgoKdm9pZApkYXRhYmFzZTo6aW5zdGFsbF9mdW5jdGlvbnMoYXBwX3N0YXRlICogYXBwKQp7
CiAgLy8gcmVnaXN0ZXIgYW55IGZ1bmN0aW9ucyB3ZSdyZSBnb2luZyB0byB1c2UKICBJKHNx
bGl0ZV9jcmVhdGVfZnVuY3Rpb24oc3FsKCksICJ1bmJhc2U2NCIsIC0xLCAKCQkJICAgJnNx
bGl0ZV91bmJhc2U2NF9mbiwgCgkJCSAgIE5VTEwpID09IDApOwoKICBJKHNxbGl0ZV9jcmVh
dGVfYWdncmVnYXRlKHNxbCgpLCAidHJ1c3RlZCIsIDgsIAoJCQkgICAgJnRydXN0ZWRfc3Rl
cF9jYWxsYmFjaywKCQkJICAgICZ0cnVzdGVkX2ZpbmFsaXplX2NhbGxiYWNrLAoJCQkgICAg
YXBwKSA9PSAwKTsKfQoKdm9pZApkYXRhYmFzZTo6aW5zdGFsbF92aWV3cygpCnsKICAvLyBk
ZWxldGUgYW55IGV4aXN0aW5nIHZpZXdzCiAgcmVzdWx0cyByZXM7CiAgZmV0Y2gocmVzLCBv
bmVfY29sLCBhbnlfcm93cywKCSJTRUxFQ1QgbmFtZSBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hF
UkUgdHlwZT0ndmlldyciKTsKICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlcy5zaXplKCk7
ICsraSkKICAgIHsKICAgICAgZXhlY3V0ZSgiRFJPUCBWSUVXICclcSciLCByZXNbaV1bMF0u
Y19zdHIoKSk7CiAgICB9CiAgLy8gcmVnaXN0ZXIgYW55IHZpZXdzIHdlJ3JlIGdvaW5nIHRv
IHVzZQogIGV4ZWN1dGUodmlld3NfY29uc3RhbnQpOwp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0
X2hlYWRzKGJhc2U2NDxjZXJ0X3ZhbHVlPiBjb25zdCAmIGJyYW5jaCwKCQkgICAgc3RkOjpz
ZXQ8cmV2aXNpb25faWQ+ICYgaGVhZHMpCnsKICByZXN1bHRzIHJlczsKICBmZXRjaChyZXMs
IG9uZV9jb2wsIGFueV9yb3dzLAoJIlNFTEVDVCBpZCAiCgkiRlJPTSBicmFuY2hfaGVhZHMg
IgoJIldIRVJFIHZhbHVlID0gJyVxJyIsCglicmFuY2goKS5jX3N0cigpKTsKICBoZWFkcy5j
bGVhcigpOwogIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzLnNpemUoKTsgKytpKQogICAg
ewogICAgICBoZWFkcy5pbnNlcnQocmV2aXNpb25faWQocmVzW2ldWzBdKSk7CiAgICB9Cn0K
CnZvaWQgCmRhdGFiYXNlOjpnZXRfY2VydHMoaGV4ZW5jPGlkPiBjb25zdCAmIGlkZW50LCAK
CQkgICAgdmVjdG9yPGNlcnQ+ICYgY2VydHMsCQkJCgkJICAgIHN0cmluZyBjb25zdCAmIHRh
YmxlKQp7CiAgcmVzdWx0cyByZXM7CiAgZmV0Y2gocmVzLCA1LCBhbnlfcm93cywgCgkiU0VM
RUNUIGlkLCBuYW1lLCB2YWx1ZSwga2V5cGFpciwgc2lnbmF0dXJlIEZST00gJyVxJyAiCgki
V0hFUkUgaWQgPSAnJXEnIiwgCgl0YWJsZS5jX3N0cigpLCAJCglpZGVudCgpLmNfc3RyKCkp
OwogIHJlc3VsdHNfdG9fY2VydHMocmVzLCBjZXJ0cyk7Cn0KCgp2b2lkIApkYXRhYmFzZTo6
Z2V0X2NlcnRzKGNlcnRfbmFtZSBjb25zdCAmIG5hbWUsIAkgICAgICAKCQkgICAgdmVjdG9y
PGNlcnQ+ICYgY2VydHMsCgkJICAgIHN0cmluZyBjb25zdCAmIHRhYmxlKQp7CiAgcmVzdWx0
cyByZXM7CiAgZmV0Y2gocmVzLCA1LCBhbnlfcm93cywgCgkiU0VMRUNUIGlkLCBuYW1lLCB2
YWx1ZSwga2V5cGFpciwgc2lnbmF0dXJlICIKCSJGUk9NICclcScgV0hFUkUgbmFtZSA9ICcl
cSciLCAKCXRhYmxlLmNfc3RyKCksIAkKCW5hbWUoKS5jX3N0cigpKTsKICByZXN1bHRzX3Rv
X2NlcnRzKHJlcywgY2VydHMpOwp9CgoKdm9pZCAKZGF0YWJhc2U6OmdldF9jZXJ0cyhoZXhl
bmM8aWQ+IGNvbnN0ICYgaWRlbnQsIAoJCSAgICBjZXJ0X25hbWUgY29uc3QgJiBuYW1lLCAJ
ICAgICAgCgkJICAgIHZlY3RvcjxjZXJ0PiAmIGNlcnRzLAoJCSAgICBzdHJpbmcgY29uc3Qg
JiB0YWJsZSkKewogIHJlc3VsdHMgcmVzOwogIGZldGNoKHJlcywgNSwgYW55X3Jvd3MsIAoJ
IlNFTEVDVCBpZCwgbmFtZSwgdmFsdWUsIGtleXBhaXIsIHNpZ25hdHVyZSAiCgkiRlJPTSAn
JXEnICIKCSJXSEVSRSBpZCA9ICclcScgQU5EIG5hbWUgPSAnJXEnIiwgCgl0YWJsZS5jX3N0
cigpLCAJCglpZGVudCgpLmNfc3RyKCksCgluYW1lKCkuY19zdHIoKSk7CiAgcmVzdWx0c190
b19jZXJ0cyhyZXMsIGNlcnRzKTsKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9jZXJ0cyhjZXJ0
X25hbWUgY29uc3QgJiBuYW1lLAoJCSAgICBiYXNlNjQ8Y2VydF92YWx1ZT4gY29uc3QgJiB2
YWwsIAoJCSAgICB2ZWN0b3I8Y2VydD4gJiBjZXJ0cywKCQkgICAgc3RyaW5nIGNvbnN0ICYg
dGFibGUpCnsKICByZXN1bHRzIHJlczsKICBmZXRjaChyZXMsIDUsIGFueV9yb3dzLCAKCSJT
RUxFQ1QgaWQsIG5hbWUsIHZhbHVlLCBrZXlwYWlyLCBzaWduYXR1cmUgIgoJIkZST00gJyVx
JyAiCgkiV0hFUkUgbmFtZSA9ICclcScgQU5EIHZhbHVlID0gJyVxJyIsIAoJdGFibGUuY19z
dHIoKSwgCQoJbmFtZSgpLmNfc3RyKCksCgl2YWwoKS5jX3N0cigpKTsKICByZXN1bHRzX3Rv
X2NlcnRzKHJlcywgY2VydHMpOwp9CgoKdm9pZCAKZGF0YWJhc2U6OmdldF9jZXJ0cyhoZXhl
bmM8aWQ+IGNvbnN0ICYgaWRlbnQsIAoJCSAgICBjZXJ0X25hbWUgY29uc3QgJiBuYW1lLCAJ
ICAgICAgCgkJICAgIGJhc2U2NDxjZXJ0X3ZhbHVlPiBjb25zdCAmIHZhbHVlLAoJCSAgICB2
ZWN0b3I8Y2VydD4gJiBjZXJ0cywKCQkgICAgc3RyaW5nIGNvbnN0ICYgdGFibGUpCnsKICBy
ZXN1bHRzIHJlczsKICBmZXRjaChyZXMsIDUsIGFueV9yb3dzLCAKCSJTRUxFQ1QgaWQsIG5h
bWUsIHZhbHVlLCBrZXlwYWlyLCBzaWduYXR1cmUgIgoJIkZST00gJyVxJyAiCgkiV0hFUkUg
aWQgPSAnJXEnIEFORCBuYW1lID0gJyVxJyBBTkQgdmFsdWUgPSAnJXEnIiwgCgl0YWJsZS5j
X3N0cigpLCAJCglpZGVudCgpLmNfc3RyKCksCgluYW1lKCkuY19zdHIoKSwKCXZhbHVlKCku
Y19zdHIoKSk7CiAgcmVzdWx0c190b19jZXJ0cyhyZXMsIGNlcnRzKTsKfQoKCgpib29sIApk
YXRhYmFzZTo6cmV2aXNpb25fY2VydF9leGlzdHMocmV2aXNpb248Y2VydD4gY29uc3QgJiBj
ZXJ0KQp7IAogIHJldHVybiBjZXJ0X2V4aXN0cyhjZXJ0LmlubmVyKCksICJyZXZpc2lvbl9j
ZXJ0cyIpOyAKfQoKYm9vbCAKZGF0YWJhc2U6Om1hbmlmZXN0X2NlcnRfZXhpc3RzKG1hbmlm
ZXN0PGNlcnQ+IGNvbnN0ICYgY2VydCkKeyAKICByZXR1cm4gY2VydF9leGlzdHMoY2VydC5p
bm5lcigpLCAibWFuaWZlc3RfY2VydHMiKTsgCn0KCmJvb2wgCmRhdGFiYXNlOjpmaWxlX2Nl
cnRfZXhpc3RzKGZpbGU8Y2VydD4gY29uc3QgJiBjZXJ0KQp7IAogIHJldHVybiBjZXJ0X2V4
aXN0cyhjZXJ0LmlubmVyKCksICJmaWxlX2NlcnRzIik7IAp9Cgp2b2lkIApkYXRhYmFzZTo6
cHV0X21hbmlmZXN0X2NlcnQobWFuaWZlc3Q8Y2VydD4gY29uc3QgJiBjZXJ0KQp7IAogIHB1
dF9jZXJ0KGNlcnQuaW5uZXIoKSwgIm1hbmlmZXN0X2NlcnRzIik7IAp9Cgp2b2lkIApkYXRh
YmFzZTo6cHV0X3JldmlzaW9uX2NlcnQocmV2aXNpb248Y2VydD4gY29uc3QgJiBjZXJ0KQp7
IAogIHB1dF9jZXJ0KGNlcnQuaW5uZXIoKSwgInJldmlzaW9uX2NlcnRzIik7IAp9Cgp2b2lk
IApkYXRhYmFzZTo6cHV0X2ZpbGVfY2VydChmaWxlPGNlcnQ+IGNvbnN0ICYgY2VydCkKeyAK
ICBwdXRfY2VydChjZXJ0LmlubmVyKCksICJmaWxlX2NlcnRzIik7IAp9Cgp2b2lkIApkYXRh
YmFzZTo6Z2V0X2ZpbGVfY2VydHMoY2VydF9uYW1lIGNvbnN0ICYgbmFtZSwgCgkJCSB2ZWN0
b3I8IGZpbGU8Y2VydD4gPiAmIHRzKQp7CiAgdmVjdG9yPGNlcnQ+IGNlcnRzOwogIGdldF9j
ZXJ0cyhuYW1lLCBjZXJ0cywgImZpbGVfY2VydHMiKTsKICB0cy5jbGVhcigpOwogIGNvcHko
Y2VydHMuYmVnaW4oKSwgY2VydHMuZW5kKCksIGJhY2tfaW5zZXJ0ZXIodHMpKTsgIAp9Cgp2
b2lkIApkYXRhYmFzZTo6Z2V0X2ZpbGVfY2VydHMoZmlsZV9pZCBjb25zdCAmIGlkLCAKCQkJ
IGNlcnRfbmFtZSBjb25zdCAmIG5hbWUsIAoJCQkgdmVjdG9yPCBmaWxlPGNlcnQ+ID4gJiB0
cykKewogIHZlY3RvcjxjZXJ0PiBjZXJ0czsKICBnZXRfY2VydHMoaWQuaW5uZXIoKSwgbmFt
ZSwgY2VydHMsICJmaWxlX2NlcnRzIik7CiAgdHMuY2xlYXIoKTsKICBjb3B5KGNlcnRzLmJl
Z2luKCksIGNlcnRzLmVuZCgpLCBiYWNrX2luc2VydGVyKHRzKSk7ICAgIAp9Cgp2b2lkIApk
YXRhYmFzZTo6Z2V0X2ZpbGVfY2VydHMoY2VydF9uYW1lIGNvbnN0ICYgbmFtZSwKCQkJIGJh
c2U2NDxjZXJ0X3ZhbHVlPiBjb25zdCAmIHZhbCwgCgkJCSB2ZWN0b3I8IGZpbGU8Y2VydD4g
PiAmIHRzKQp7CiAgdmVjdG9yPGNlcnQ+IGNlcnRzOwogIGdldF9jZXJ0cyhuYW1lLCB2YWws
IGNlcnRzLCAiZmlsZV9jZXJ0cyIpOwogIHRzLmNsZWFyKCk7CiAgY29weShjZXJ0cy5iZWdp
bigpLCBjZXJ0cy5lbmQoKSwgYmFja19pbnNlcnRlcih0cykpOyAgCn0KCnZvaWQgCmRhdGFi
YXNlOjpnZXRfZmlsZV9jZXJ0cyhmaWxlX2lkIGNvbnN0ICYgaWQsIAoJCQkgY2VydF9uYW1l
IGNvbnN0ICYgbmFtZSwKCQkJIGJhc2U2NDxjZXJ0X3ZhbHVlPiBjb25zdCAmIHZhbCwgCgkJ
CSB2ZWN0b3I8IGZpbGU8Y2VydD4gPiAmIHRzKQp7CiAgdmVjdG9yPGNlcnQ+IGNlcnRzOwog
IGdldF9jZXJ0cyhpZC5pbm5lcigpLCBuYW1lLCB2YWwsIGNlcnRzLCAiZmlsZV9jZXJ0cyIp
OwogIHRzLmNsZWFyKCk7CiAgY29weShjZXJ0cy5iZWdpbigpLCBjZXJ0cy5lbmQoKSwgYmFj
a19pbnNlcnRlcih0cykpOyAgCn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRfZmlsZV9jZXJ0cyhm
aWxlX2lkIGNvbnN0ICYgaWQsIAoJCQkgdmVjdG9yPCBmaWxlPGNlcnQ+ID4gJiB0cykKeyAK
ICB2ZWN0b3I8Y2VydD4gY2VydHM7CiAgZ2V0X2NlcnRzKGlkLmlubmVyKCksIGNlcnRzLCAi
ZmlsZV9jZXJ0cyIpOyAKICB0cy5jbGVhcigpOwogIGNvcHkoY2VydHMuYmVnaW4oKSwgY2Vy
dHMuZW5kKCksIGJhY2tfaW5zZXJ0ZXIodHMpKTsKfQoKCmJvb2wgCmRhdGFiYXNlOjpmaWxl
X2NlcnRfZXhpc3RzKGhleGVuYzxpZD4gY29uc3QgJiBoYXNoKQp7CiAgcmVzdWx0cyByZXM7
CiAgdmVjdG9yPGNlcnQ+IGNlcnRzOwogIGZldGNoKHJlcywgb25lX2NvbCwgYW55X3Jvd3Ms
IAoJIlNFTEVDVCBpZCAiCgkiRlJPTSBmaWxlX2NlcnRzICIKCSJXSEVSRSBoYXNoID0gJyVx
JyIsIAoJaGFzaCgpLmNfc3RyKCkpOwogIEkocmVzLnNpemUoKSA9PSAwIHx8IHJlcy5zaXpl
KCkgPT0gMSk7CiAgcmV0dXJuIChyZXMuc2l6ZSgpID09IDEpOwp9Cgp2b2lkIApkYXRhYmFz
ZTo6Z2V0X2ZpbGVfY2VydChoZXhlbmM8aWQ+IGNvbnN0ICYgaGFzaCwKCQkJZmlsZTxjZXJ0
PiAmIGMpCnsKICByZXN1bHRzIHJlczsKICB2ZWN0b3I8Y2VydD4gY2VydHM7CiAgZmV0Y2go
cmVzLCA1LCBvbmVfcm93LCAKCSJTRUxFQ1QgaWQsIG5hbWUsIHZhbHVlLCBrZXlwYWlyLCBz
aWduYXR1cmUgIgoJIkZST00gZmlsZV9jZXJ0cyAiCgkiV0hFUkUgaGFzaCA9ICclcSciLCAK
CWhhc2goKS5jX3N0cigpKTsKICByZXN1bHRzX3RvX2NlcnRzKHJlcywgY2VydHMpOwogIEko
Y2VydHMuc2l6ZSgpID09IDEpOwogIGMgPSBmaWxlPGNlcnQ+KGNlcnRzWzBdKTsKfQoKCgp2
b2lkIApkYXRhYmFzZTo6Z2V0X3JldmlzaW9uX2NlcnRzKGNlcnRfbmFtZSBjb25zdCAmIG5h
bWUsIAoJCQkgICAgdmVjdG9yPCByZXZpc2lvbjxjZXJ0PiA+ICYgdHMpCnsKICB2ZWN0b3I8
Y2VydD4gY2VydHM7CiAgZ2V0X2NlcnRzKG5hbWUsIGNlcnRzLCAicmV2aXNpb25fY2VydHMi
KTsKICB0cy5jbGVhcigpOwogIGNvcHkoY2VydHMuYmVnaW4oKSwgY2VydHMuZW5kKCksIGJh
Y2tfaW5zZXJ0ZXIodHMpKTsgIAp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X3JldmlzaW9uX2Nl
cnRzKHJldmlzaW9uX2lkIGNvbnN0ICYgaWQsIAoJCQkgICAgY2VydF9uYW1lIGNvbnN0ICYg
bmFtZSwgCgkJCSAgICB2ZWN0b3I8IHJldmlzaW9uPGNlcnQ+ID4gJiB0cykKewogIHZlY3Rv
cjxjZXJ0PiBjZXJ0czsKICBnZXRfY2VydHMoaWQuaW5uZXIoKSwgbmFtZSwgY2VydHMsICJy
ZXZpc2lvbl9jZXJ0cyIpOwogIHRzLmNsZWFyKCk7CiAgY29weShjZXJ0cy5iZWdpbigpLCBj
ZXJ0cy5lbmQoKSwgYmFja19pbnNlcnRlcih0cykpOyAgCn0KCnZvaWQgCmRhdGFiYXNlOjpn
ZXRfcmV2aXNpb25fY2VydHMocmV2aXNpb25faWQgY29uc3QgJiBpZCwgCgkJCSAgICBjZXJ0
X25hbWUgY29uc3QgJiBuYW1lLAoJCQkgICAgYmFzZTY0PGNlcnRfdmFsdWU+IGNvbnN0ICYg
dmFsLCAKCQkJICAgIHZlY3RvcjwgcmV2aXNpb248Y2VydD4gPiAmIHRzKQp7CiAgdmVjdG9y
PGNlcnQ+IGNlcnRzOwogIGdldF9jZXJ0cyhpZC5pbm5lcigpLCBuYW1lLCB2YWwsIGNlcnRz
LCAicmV2aXNpb25fY2VydHMiKTsKICB0cy5jbGVhcigpOwogIGNvcHkoY2VydHMuYmVnaW4o
KSwgY2VydHMuZW5kKCksIGJhY2tfaW5zZXJ0ZXIodHMpKTsgIAp9Cgp2b2lkIApkYXRhYmFz
ZTo6Z2V0X3JldmlzaW9uX2NlcnRzKGNlcnRfbmFtZSBjb25zdCAmIG5hbWUsCgkJCSAgICBi
YXNlNjQ8Y2VydF92YWx1ZT4gY29uc3QgJiB2YWwsIAoJCQkgICAgdmVjdG9yPCByZXZpc2lv
bjxjZXJ0PiA+ICYgdHMpCnsKICB2ZWN0b3I8Y2VydD4gY2VydHM7CiAgZ2V0X2NlcnRzKG5h
bWUsIHZhbCwgY2VydHMsICJyZXZpc2lvbl9jZXJ0cyIpOwogIHRzLmNsZWFyKCk7CiAgY29w
eShjZXJ0cy5iZWdpbigpLCBjZXJ0cy5lbmQoKSwgYmFja19pbnNlcnRlcih0cykpOyAgCn0K
CnZvaWQgCmRhdGFiYXNlOjpnZXRfcmV2aXNpb25fY2VydHMocmV2aXNpb25faWQgY29uc3Qg
JiBpZCwgCgkJCSAgICB2ZWN0b3I8IHJldmlzaW9uPGNlcnQ+ID4gJiB0cykKeyAKICB2ZWN0
b3I8Y2VydD4gY2VydHM7CiAgZ2V0X2NlcnRzKGlkLmlubmVyKCksIGNlcnRzLCAicmV2aXNp
b25fY2VydHMiKTsgCiAgdHMuY2xlYXIoKTsKICBjb3B5KGNlcnRzLmJlZ2luKCksIGNlcnRz
LmVuZCgpLCBiYWNrX2luc2VydGVyKHRzKSk7Cn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRfcmV2
aXNpb25fY2VydChoZXhlbmM8aWQ+IGNvbnN0ICYgaGFzaCwKCQkJICAgcmV2aXNpb248Y2Vy
dD4gJiBjKQp7CiAgcmVzdWx0cyByZXM7CiAgdmVjdG9yPGNlcnQ+IGNlcnRzOwogIGZldGNo
KHJlcywgNSwgb25lX3JvdywgCgkiU0VMRUNUIGlkLCBuYW1lLCB2YWx1ZSwga2V5cGFpciwg
c2lnbmF0dXJlICIKCSJGUk9NIHJldmlzaW9uX2NlcnRzICIKCSJXSEVSRSBoYXNoID0gJyVx
JyIsIAoJaGFzaCgpLmNfc3RyKCkpOwogIHJlc3VsdHNfdG9fY2VydHMocmVzLCBjZXJ0cyk7
CiAgSShjZXJ0cy5zaXplKCkgPT0gMSk7CiAgYyA9IHJldmlzaW9uPGNlcnQ+KGNlcnRzWzBd
KTsKfQoKYm9vbCAKZGF0YWJhc2U6OnJldmlzaW9uX2NlcnRfZXhpc3RzKGhleGVuYzxpZD4g
Y29uc3QgJiBoYXNoKQp7CiAgcmVzdWx0cyByZXM7CiAgdmVjdG9yPGNlcnQ+IGNlcnRzOwog
IGZldGNoKHJlcywgb25lX2NvbCwgYW55X3Jvd3MsIAoJIlNFTEVDVCBpZCAiCgkiRlJPTSBy
ZXZpc2lvbl9jZXJ0cyAiCgkiV0hFUkUgaGFzaCA9ICclcSciLCAKCWhhc2goKS5jX3N0cigp
KTsKICBJKHJlcy5zaXplKCkgPT0gMCB8fCByZXMuc2l6ZSgpID09IDEpOwogIHJldHVybiAo
cmVzLnNpemUoKSA9PSAxKTsKfQoKYm9vbCAKZGF0YWJhc2U6Om1hbmlmZXN0X2NlcnRfZXhp
c3RzKGhleGVuYzxpZD4gY29uc3QgJiBoYXNoKQp7CiAgcmVzdWx0cyByZXM7CiAgdmVjdG9y
PGNlcnQ+IGNlcnRzOwogIGZldGNoKHJlcywgb25lX2NvbCwgYW55X3Jvd3MsIAoJIlNFTEVD
VCBpZCAiCgkiRlJPTSBtYW5pZmVzdF9jZXJ0cyAiCgkiV0hFUkUgaGFzaCA9ICclcSciLCAK
CWhhc2goKS5jX3N0cigpKTsKICBJKHJlcy5zaXplKCkgPT0gMCB8fCByZXMuc2l6ZSgpID09
IDEpOwogIHJldHVybiAocmVzLnNpemUoKSA9PSAxKTsKfQoKdm9pZCAKZGF0YWJhc2U6Omdl
dF9tYW5pZmVzdF9jZXJ0KGhleGVuYzxpZD4gY29uc3QgJiBoYXNoLAoJCQkgICAgbWFuaWZl
c3Q8Y2VydD4gJiBjKQp7CiAgcmVzdWx0cyByZXM7CiAgdmVjdG9yPGNlcnQ+IGNlcnRzOwog
IGZldGNoKHJlcywgNSwgb25lX3JvdywgCgkiU0VMRUNUIGlkLCBuYW1lLCB2YWx1ZSwga2V5
cGFpciwgc2lnbmF0dXJlICIKCSJGUk9NIG1hbmlmZXN0X2NlcnRzICIKCSJXSEVSRSBoYXNo
ID0gJyVxJyIsIAoJaGFzaCgpLmNfc3RyKCkpOwogIHJlc3VsdHNfdG9fY2VydHMocmVzLCBj
ZXJ0cyk7CiAgSShjZXJ0cy5zaXplKCkgPT0gMSk7CiAgYyA9IG1hbmlmZXN0PGNlcnQ+KGNl
cnRzWzBdKTsKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9tYW5pZmVzdF9jZXJ0cyhtYW5pZmVz
dF9pZCBjb25zdCAmIGlkLCAKCQkJICAgICB2ZWN0b3I8IG1hbmlmZXN0PGNlcnQ+ID4gJiB0
cykKeyAKICB2ZWN0b3I8Y2VydD4gY2VydHM7CiAgZ2V0X2NlcnRzKGlkLmlubmVyKCksIGNl
cnRzLCAibWFuaWZlc3RfY2VydHMiKTsgCiAgdHMuY2xlYXIoKTsKICBjb3B5KGNlcnRzLmJl
Z2luKCksIGNlcnRzLmVuZCgpLCBiYWNrX2luc2VydGVyKHRzKSk7Cn0KCgp2b2lkIApkYXRh
YmFzZTo6Z2V0X21hbmlmZXN0X2NlcnRzKGNlcnRfbmFtZSBjb25zdCAmIG5hbWUsIAoJCQkg
ICAgdmVjdG9yPCBtYW5pZmVzdDxjZXJ0PiA+ICYgdHMpCnsKICB2ZWN0b3I8Y2VydD4gY2Vy
dHM7CiAgZ2V0X2NlcnRzKG5hbWUsIGNlcnRzLCAibWFuaWZlc3RfY2VydHMiKTsKICB0cy5j
bGVhcigpOwogIGNvcHkoY2VydHMuYmVnaW4oKSwgY2VydHMuZW5kKCksIGJhY2tfaW5zZXJ0
ZXIodHMpKTsgIAp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X21hbmlmZXN0X2NlcnRzKG1hbmlm
ZXN0X2lkIGNvbnN0ICYgaWQsIAoJCQkgICAgIGNlcnRfbmFtZSBjb25zdCAmIG5hbWUsIAoJ
CQkgICAgIHZlY3RvcjwgbWFuaWZlc3Q8Y2VydD4gPiAmIHRzKQp7CiAgdmVjdG9yPGNlcnQ+
IGNlcnRzOwogIGdldF9jZXJ0cyhpZC5pbm5lcigpLCBuYW1lLCBjZXJ0cywgIm1hbmlmZXN0
X2NlcnRzIik7CiAgdHMuY2xlYXIoKTsKICBjb3B5KGNlcnRzLmJlZ2luKCksIGNlcnRzLmVu
ZCgpLCBiYWNrX2luc2VydGVyKHRzKSk7ICAKfQoKCi8vIGNvbXBsZXRpb25zCnZvaWQgCmRh
dGFiYXNlOjpjb21wbGV0ZShzdHJpbmcgY29uc3QgJiBwYXJ0aWFsLAoJCSAgIHNldDxyZXZp
c2lvbl9pZD4gJiBjb21wbGV0aW9ucykKewogIHJlc3VsdHMgcmVzOwogIGNvbXBsZXRpb25z
LmNsZWFyKCk7CgogIGZldGNoKHJlcywgMSwgYW55X3Jvd3MsCgkiU0VMRUNUIGlkIEZST00g
cmV2aXNpb25zIFdIRVJFIGlkIEdMT0IgJyVxKiciLAoJcGFydGlhbC5jX3N0cigpKTsKCiAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXMuc2l6ZSgpOyArK2kpCiAgICBjb21wbGV0aW9u
cy5pbnNlcnQocmV2aXNpb25faWQocmVzW2ldWzBdKSk7ICAKfQoKCnZvaWQgCmRhdGFiYXNl
Ojpjb21wbGV0ZShzdHJpbmcgY29uc3QgJiBwYXJ0aWFsLAoJCSAgIHNldDxtYW5pZmVzdF9p
ZD4gJiBjb21wbGV0aW9ucykKewogIHJlc3VsdHMgcmVzOwogIGNvbXBsZXRpb25zLmNsZWFy
KCk7CgogIGZldGNoKHJlcywgMSwgYW55X3Jvd3MsCgkiU0VMRUNUIGlkIEZST00gbWFuaWZl
c3RzIFdIRVJFIGlkIEdMT0IgJyVxKiciLAoJcGFydGlhbC5jX3N0cigpKTsKCiAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCByZXMuc2l6ZSgpOyArK2kpCiAgICBjb21wbGV0aW9ucy5pbnNl
cnQobWFuaWZlc3RfaWQocmVzW2ldWzBdKSk7ICAKICAKICByZXMuY2xlYXIoKTsKCiAgZmV0
Y2gocmVzLCAxLCBhbnlfcm93cywKCSJTRUxFQ1QgaWQgRlJPTSBtYW5pZmVzdF9kZWx0YXMg
V0hFUkUgaWQgR0xPQiAnJXEqJyIsCglwYXJ0aWFsLmNfc3RyKCkpOwoKICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHJlcy5zaXplKCk7ICsraSkKICAgIGNvbXBsZXRpb25zLmluc2VydCht
YW5pZmVzdF9pZChyZXNbaV1bMF0pKTsgIAp9Cgp2b2lkIApkYXRhYmFzZTo6Y29tcGxldGUo
c3RyaW5nIGNvbnN0ICYgcGFydGlhbCwKCQkgICBzZXQ8ZmlsZV9pZD4gJiBjb21wbGV0aW9u
cykKewogIHJlc3VsdHMgcmVzOwogIGNvbXBsZXRpb25zLmNsZWFyKCk7CgogIGZldGNoKHJl
cywgMSwgYW55X3Jvd3MsCgkiU0VMRUNUIGlkIEZST00gZmlsZXMgV0hFUkUgaWQgR0xPQiAn
JXEqJyIsCglwYXJ0aWFsLmNfc3RyKCkpOwoKICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJl
cy5zaXplKCk7ICsraSkKICAgIGNvbXBsZXRpb25zLmluc2VydChmaWxlX2lkKHJlc1tpXVsw
XSkpOyAgCiAgCiAgcmVzLmNsZWFyKCk7CgogIGZldGNoKHJlcywgMSwgYW55X3Jvd3MsCgki
U0VMRUNUIGlkIEZST00gZmlsZV9kZWx0YXMgV0hFUkUgaWQgR0xPQiAnJXEqJyIsCglwYXJ0
aWFsLmNfc3RyKCkpOwoKICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlcy5zaXplKCk7ICsr
aSkKICAgIGNvbXBsZXRpb25zLmluc2VydChmaWxlX2lkKHJlc1tpXVswXSkpOyAgCn0KCnVz
aW5nIGNvbW1hbmRzOjpzZWxlY3Rvcl90eXBlOwoKc3RhdGljIHZvaWQgc2VsZWN0b3JfdG9f
Y2VydG5hbWUoc2VsZWN0b3JfdHlwZSB0eSwKCQkJCSBzdHJpbmcgJiBzKQp7CiAgc3dpdGNo
ICh0eSkKICAgIHsKICAgIGNhc2UgY29tbWFuZHM6OnNlbF9hdXRob3I6CiAgICAgIHMgPSBh
dXRob3JfY2VydF9uYW1lOwogICAgICBicmVhazsKICAgIGNhc2UgY29tbWFuZHM6OnNlbF9i
cmFuY2g6CiAgICAgIHMgPSBicmFuY2hfY2VydF9uYW1lOwogICAgICBicmVhazsKICAgIGNh
c2UgY29tbWFuZHM6OnNlbF9kYXRlOgogICAgICBzID0gZGF0ZV9jZXJ0X25hbWU7CiAgICAg
IGJyZWFrOwogICAgY2FzZSBjb21tYW5kczo6c2VsX3RhZzoKICAgICAgcyA9IHRhZ19jZXJ0
X25hbWU7CiAgICAgIGJyZWFrOwogICAgY2FzZSBjb21tYW5kczo6c2VsX2lkZW50OgogICAg
Y2FzZSBjb21tYW5kczo6c2VsX3Vua25vd246CiAgICAgIEkoZmFsc2UpOyAvLyBkb24ndCBk
byB0aGlzLgogICAgICBicmVhazsKICAgIH0KfQoKdm9pZCBkYXRhYmFzZTo6Y29tcGxldGUo
c2VsZWN0b3JfdHlwZSB0eSwKCQkJc3RyaW5nIGNvbnN0ICYgcGFydGlhbCwKCQkJdmVjdG9y
PHBhaXI8c2VsZWN0b3JfdHlwZSwgc3RyaW5nPiA+IGNvbnN0ICYgbGltaXQsCgkJCXNldDxz
dHJpbmc+ICYgY29tcGxldGlvbnMpCnsKICBjb21wbGV0aW9ucy5jbGVhcigpOwoKICAvLyBz
dGVwIDE6IHRoZSBsaW1pdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIGFuIFNRTCBzZWxlY3Qgc3Rh
dGVtZW50IHdoaWNoCiAgLy8gc2VsZWN0cyBhIHNldCBvZiBJRHMgZnJvbSB0aGUgbWFuaWZl
c3RfY2VydHMgdGFibGUgd2hpY2ggbWF0Y2ggdGhlCiAgLy8gbGltaXQuICB0aGlzIGlzIGRv
bmUgYnkgYnVpbGRpbmcgYW4gU1FMIHNlbGVjdCBzdGF0ZW1lbnQgZm9yIGVhY2ggdGVybQog
IC8vIGluIHRoZSBsaW1pdCBhbmQgdGhlbiBJTlRFUlNFQ1RpbmcgdGhlbSBhbGwuCgogIHN0
cmluZyBsaW0gPSAiKCI7CiAgYm9vbCBmaXJzdF9saW1pdCA9IHRydWU7CiAgZm9yICh2ZWN0
b3I8cGFpcjxzZWxlY3Rvcl90eXBlLCBzdHJpbmc+ID46OmNvbnN0X2l0ZXJhdG9yIGkgPSBs
aW1pdC5iZWdpbigpOwogICAgICAgaSAhPSBsaW1pdC5lbmQoKTsgKytpKQogICAgewogICAg
ICBpZiAoZmlyc3RfbGltaXQpCglmaXJzdF9saW1pdCA9IGZhbHNlOwogICAgICBlbHNlCgls
aW0gKz0gIiBJTlRFUlNFQ1QgIjsKICAgICAgCiAgICAgIGlmIChpLT5maXJzdCA9PSBjb21t
YW5kczo6c2VsX2lkZW50KQoJewoJICBsaW0gKz0gIlNFTEVDVCBpZCBGUk9NIHJldmlzaW9u
X2NlcnRzICI7CgkgIGxpbSArPSAoRigiV0hFUkUgaWQgR0xPQiAnJXMqJyIpIAoJCSAgJSBp
LT5zZWNvbmQpLnN0cigpOwoJfQogICAgICBlbHNlIGlmIChpLT5maXJzdCA9PSBjb21tYW5k
czo6c2VsX3Vua25vd24pCgl7CgkgIGxpbSArPSAiU0VMRUNUIGlkIEZST00gcmV2aXNpb25f
Y2VydHMgIjsKCSAgbGltICs9IChGKCIgV0hFUkUgKG5hbWU9JyVzJyBPUiBuYW1lPSclcycg
T1IgbmFtZT0nJXMnKSIpCgkJICAlIGF1dGhvcl9jZXJ0X25hbWUgCgkJICAlIHRhZ19jZXJ0
X25hbWUgCgkJICAlIGJyYW5jaF9jZXJ0X25hbWUpLnN0cigpOwoJICBsaW0gKz0gKEYoIiBB
TkQgdW5iYXNlNjQodmFsdWUpIGdsb2IgJyolcyonIikKCQkgICUgaS0+c2Vjb25kKS5zdHIo
KTsJICAKCX0KICAgICAgZWxzZQoJewoJICBzdHJpbmcgY2VydG5hbWU7CgkgIHNlbGVjdG9y
X3RvX2NlcnRuYW1lKGktPmZpcnN0LCBjZXJ0bmFtZSk7CgkgIGxpbSArPSAiU0VMRUNUIGlk
IEZST00gcmV2aXNpb25fY2VydHMgIjsKCSAgbGltICs9IChGKCJXSEVSRSBuYW1lPSclcycg
QU5EIHVuYmFzZTY0KHZhbHVlKSBnbG9iICcqJXMqJyIpCgkJICAlIGNlcnRuYW1lICUgaS0+
c2Vjb25kKS5zdHIoKTsKCX0KICAgIH0KICBsaW0gKz0gIikiOwogIAogIC8vIHN0ZXAgMjog
ZGVwZW5kaW5nIG9uIHdoYXQgd2UndmUgYmVlbiBhc2tlZCB0byBkaXNhbWJpZ3VhdGUsIHdl
CiAgLy8gd2lsbCBjb21wbGV0ZSBlaXRoZXIgc29tZSBpZGVudHMsIG9yIGNlcnQgdmFsdWVz
LCBvciAidW5rbm93biIKICAvLyB3aGljaCBnZW5lcmFsbHkgbWVhbnMgImF1dGhvciwgdGFn
IG9yIGJyYW5jaCIKCiAgc3RyaW5nIHF1ZXJ5OwogIGlmICh0eSA9PSBjb21tYW5kczo6c2Vs
X2lkZW50KQogICAgewogICAgICBxdWVyeSA9IChGKCJTRUxFQ1QgaWQgRlJPTSAlcyIpICUg
bGltKS5zdHIoKTsKICAgIH0KICBlbHNlIAogICAgewogICAgICBxdWVyeSA9ICJTRUxFQ1Qg
dmFsdWUgRlJPTSByZXZpc2lvbl9jZXJ0cyBXSEVSRSI7CiAgICAgIGlmICh0eSA9PSBjb21t
YW5kczo6c2VsX3Vua25vd24pCgl7CSAgCQoJICBxdWVyeSArPSAKCSAgICAoRigiIChuYW1l
PSclcycgT1IgbmFtZT0nJXMnIE9SIG5hbWU9JyVzJykiKQoJICAgICAlIGF1dGhvcl9jZXJ0
X25hbWUgCgkgICAgICUgdGFnX2NlcnRfbmFtZSAKCSAgICAgJSBicmFuY2hfY2VydF9uYW1l
KS5zdHIoKTsKCX0KICAgICAgZWxzZQoJewoJICBzdHJpbmcgY2VydG5hbWU7CgkgIHNlbGVj
dG9yX3RvX2NlcnRuYW1lKHR5LCBjZXJ0bmFtZSk7CgkgIHF1ZXJ5ICs9IAoJICAgIChGKCIg
KG5hbWU9JyVzJykiKSAlIGNlcnRuYW1lKS5zdHIoKTsKCX0KICAgICAgICAKICAgICAgcXVl
cnkgKz0gKEYoIiBBTkQgKHVuYmFzZTY0KHZhbHVlKSBHTE9CICcqJXMqJykiKSAlIHBhcnRp
YWwpLnN0cigpOwogICAgICBxdWVyeSArPSAoRigiIEFORCAoaWQgSU4gJXMpIikgJSBsaW0p
LnN0cigpOwogICAgfQoKICByZXN1bHRzIHJlczsKICBmZXRjaChyZXMsIG9uZV9jb2wsIGFu
eV9yb3dzLCBxdWVyeS5jX3N0cigpKTsKICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlcy5z
aXplKCk7ICsraSkKICAgIHsKICAgICAgaWYgKHR5ID09IGNvbW1hbmRzOjpzZWxfaWRlbnQp
Cgljb21wbGV0aW9ucy5pbnNlcnQocmVzW2ldWzBdKTsKICAgICAgZWxzZQoJewoJICBiYXNl
NjQ8ZGF0YT4gcm93X2VuY29kZWQocmVzW2ldWzBdKTsKCSAgZGF0YSByb3dfZGVjb2RlZDsK
CSAgZGVjb2RlX2Jhc2U2NChyb3dfZW5jb2RlZCwgcm93X2RlY29kZWQpOwoJICBjb21wbGV0
aW9ucy5pbnNlcnQocm93X2RlY29kZWQoKSk7Cgl9CiAgICB9Cn0KCgovLyBtZXJrbGUgbm9k
ZXMKCmJvb2wgCmRhdGFiYXNlOjptZXJrbGVfbm9kZV9leGlzdHMoc3RyaW5nIGNvbnN0ICYg
dHlwZSwKCQkJICAgICB1dGY4IGNvbnN0ICYgY29sbGVjdGlvbiwgCgkJCSAgICAgc2l6ZV90
IGxldmVsLAoJCQkgICAgIGhleGVuYzxwcmVmaXg+IGNvbnN0ICYgcHJlZml4KQp7CiAgcmVz
dWx0cyByZXM7CiAgZmV0Y2gocmVzLCBvbmVfY29sLCBvbmVfcm93LCAKCSJTRUxFQ1QgQ09V
TlQoKikgIgoJIkZST00gbWVya2xlX25vZGVzICIKCSJXSEVSRSB0eXBlID0gJyVxJyAiCgki
QU5EIGNvbGxlY3Rpb24gPSAnJXEnICIKCSJBTkQgbGV2ZWwgPSAlZCAiCgkiQU5EIHByZWZp
eCA9ICclcScgIiwKCXR5cGUuY19zdHIoKSwgY29sbGVjdGlvbigpLmNfc3RyKCksIGxldmVs
LCBwcmVmaXgoKS5jX3N0cigpKTsKICBzaXplX3Qgbl9ub2RlcyA9IGxleGljYWxfY2FzdDxz
aXplX3Q+KHJlc1swXVswXSk7CiAgSShuX25vZGVzID09IDAgfHwgbl9ub2RlcyA9PSAxKTsK
ICByZXR1cm4gbl9ub2RlcyA9PSAxOwp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X21lcmtsZV9u
b2RlKHN0cmluZyBjb25zdCAmIHR5cGUsCgkJCSAgdXRmOCBjb25zdCAmIGNvbGxlY3Rpb24s
IAoJCQkgIHNpemVfdCBsZXZlbCwKCQkJICBoZXhlbmM8cHJlZml4PiBjb25zdCAmIHByZWZp
eCwKCQkJICBiYXNlNjQ8bWVya2xlPiAmIG5vZGUpCnsKICByZXN1bHRzIHJlczsKICBmZXRj
aChyZXMsIG9uZV9jb2wsIG9uZV9yb3csIAoJIlNFTEVDVCBib2R5ICIKCSJGUk9NIG1lcmts
ZV9ub2RlcyAiCgkiV0hFUkUgdHlwZSA9ICclcScgIgoJIkFORCBjb2xsZWN0aW9uID0gJyVx
JyAiCgkiQU5EIGxldmVsID0gJWQgIgoJIkFORCBwcmVmaXggPSAnJXEnIiwKCXR5cGUuY19z
dHIoKSwgY29sbGVjdGlvbigpLmNfc3RyKCksIGxldmVsLCBwcmVmaXgoKS5jX3N0cigpKTsK
ICBub2RlID0gcmVzWzBdWzBdOwp9Cgp2b2lkIApkYXRhYmFzZTo6cHV0X21lcmtsZV9ub2Rl
KHN0cmluZyBjb25zdCAmIHR5cGUsCgkJCSAgdXRmOCBjb25zdCAmIGNvbGxlY3Rpb24sIAoJ
CQkgIHNpemVfdCBsZXZlbCwKCQkJICBoZXhlbmM8cHJlZml4PiBjb25zdCAmIHByZWZpeCwJ
CQkJICAgICAgIAoJCQkgIGJhc2U2NDxtZXJrbGU+IGNvbnN0ICYgbm9kZSkKewogIGV4ZWN1
dGUoIklOU0VSVCBPUiBSRVBMQUNFICIKCSAgIklOVE8gbWVya2xlX25vZGVzICIKCSAgIlZB
TFVFUyAoJyVxJywgJyVxJywgJWQsICclcScsICclcScpIiwKCSAgdHlwZS5jX3N0cigpLCBj
b2xsZWN0aW9uKCkuY19zdHIoKSwgbGV2ZWwsIHByZWZpeCgpLmNfc3RyKCksIG5vZGUoKS5j
X3N0cigpKTsKfQoKdm9pZCAKZGF0YWJhc2U6OmVyYXNlX21lcmtsZV9ub2RlcyhzdHJpbmcg
Y29uc3QgJiB0eXBlLAoJCQkgICAgIHV0ZjggY29uc3QgJiBjb2xsZWN0aW9uKQp7CiAgZXhl
Y3V0ZSgiREVMRVRFIEZST00gbWVya2xlX25vZGVzICIKCSAgIldIRVJFIHR5cGUgPSAnJXEn
ICIKCSAgIkFORCBjb2xsZWN0aW9uID0gJyVxJyIsCgkgIHR5cGUuY19zdHIoKSwgY29sbGVj
dGlvbigpLmNfc3RyKCkpOwp9CgovLyB0cmFuc2FjdGlvbiBndWFyZHMKCnRyYW5zYWN0aW9u
X2d1YXJkOjp0cmFuc2FjdGlvbl9ndWFyZChkYXRhYmFzZSAmIGQpIDogY29tbWl0dGVkKGZh
bHNlKSwgZGIoZCkgCnsKICBkYi5iZWdpbl90cmFuc2FjdGlvbigpOwp9CnRyYW5zYWN0aW9u
X2d1YXJkOjp+dHJhbnNhY3Rpb25fZ3VhcmQoKQp7CiAgaWYgKGNvbW1pdHRlZCkKICAgIGRi
LmNvbW1pdF90cmFuc2FjdGlvbigpOwogIGVsc2UKICAgIGRiLnJvbGxiYWNrX3RyYW5zYWN0
aW9uKCk7Cn0KCnZvaWQgCnRyYW5zYWN0aW9uX2d1YXJkOjpjb21taXQoKQp7CiAgY29tbWl0
dGVkID0gdHJ1ZTsKfQoK
_ATEOF


cat >left.b64 <<'_ATEOF'
Ly8gY29weXJpZ2h0IChDKSAyMDAyLCAyMDAzIGdyYXlkb24gaG9hcmUgPGdyYXlkb25AcG9i
b3guY29tPgovLyBhbGwgcmlnaHRzIHJlc2VydmVkLgovLyBsaWNlbnNlZCB0byB0aGUgcHVi
bGljIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdQTCAoPj0gMikKLy8gc2VlIHRoZSBm
aWxlIENPUFlJTkcgZm9yIGRldGFpbHMKCiNpbmNsdWRlIDxpdGVyYXRvcj4KI2luY2x1ZGUg
PGxpc3Q+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDxzc3RyZWFtPgojaW5jbHVkZSA8dmVj
dG9yPgoKI2luY2x1ZGUgPHN0ZGFyZy5oPgoKI2luY2x1ZGUgPGJvb3N0L3NoYXJlZF9wdHIu
aHBwPgojaW5jbHVkZSA8Ym9vc3QvbGV4aWNhbF9jYXN0LmhwcD4KI2luY2x1ZGUgPGJvb3N0
L2ZpbGVzeXN0ZW0vcGF0aC5ocHA+CiNpbmNsdWRlIDxib29zdC9maWxlc3lzdGVtL29wZXJh
dGlvbnMuaHBwPgoKI2luY2x1ZGUgPHNxbGl0ZS5oPgoKI2luY2x1ZGUgImFwcF9zdGF0ZS5o
aCIKI2luY2x1ZGUgImNlcnQuaGgiCiNpbmNsdWRlICJjbGVhbnVwLmhoIgojaW5jbHVkZSAi
Y29uc3RhbnRzLmhoIgojaW5jbHVkZSAiZGF0YWJhc2UuaGgiCiNpbmNsdWRlICJrZXlzLmho
IgojaW5jbHVkZSAic2FuaXR5LmhoIgojaW5jbHVkZSAic2NoZW1hX21pZ3JhdGlvbi5oaCIK
I2luY2x1ZGUgImNlcnQuaGgiCiNpbmNsdWRlICJ0cmFuc2Zvcm1zLmhoIgojaW5jbHVkZSAi
dWkuaGgiCiNpbmNsdWRlICJ2b2NhYi5oaCIKI2luY2x1ZGUgInhkZWx0YS5oaCIKCi8vIGRl
ZmluZWQgaW4gc2NoZW1hLnNxbCwgY29udmVydGVkIHRvIGhlYWRlcjoKI2luY2x1ZGUgInNj
aGVtYS5oIgoKLy8gZGVmaW5lZCBpbiB2aWV3cy5zcWwsIGNvbnZlcnRlZCB0byBoZWFkZXI6
CiNpbmNsdWRlICJ2aWV3cy5oIgoKLy8gdGhpcyBmaWxlIGRlZmluZXMgYSBwdWJsaWMsIHR5
cGVkIGludGVyZmFjZSB0byB0aGUgZGF0YWJhc2UuCi8vIHRoZSBkYXRhYmFzZSBjbGFzcyBl
bmNhcHN1bGF0ZXMgYWxsIGtub3dsZWRnZSBhYm91dCBzcWxpdGUsCi8vIHRoZSBzY2hlbWEs
IGFuZCBhbGwgU1FMIHN0YXRlbWVudHMgdXNlZCB0byBhY2Nlc3MgdGhlIHNjaGVtYS4KLy8K
Ly8gc2VlIGZpbGUgc2NoZW1hLnNxbCBmb3IgdGhlIHRleHQgb2YgdGhlIHNjaGVtYS4KCnVz
aW5nIGJvb3N0OjpzaGFyZWRfcHRyOwp1c2luZyBib29zdDo6bGV4aWNhbF9jYXN0Owp1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGNvbnN0IG9uZV9yb3cgPSAxOwppbnQgY29uc3Qgb25l
X2NvbCA9IDE7CmludCBjb25zdCBhbnlfcm93cyA9IC0xOwppbnQgY29uc3QgYW55X2NvbHMg
PSAtMTsKCmV4dGVybiAiQyIgewogIC8vIHN0cmFuZ2VseSB0aGlzIGlzbid0IGRlY2xhcmVk
LCBldmVuIHRob3VnaCBpdCdzIHByZXNlbnQgaW4gbXkgc3FsaXRlLgogIGNoYXIgKnNxbGl0
ZV92bXByaW50Zihjb25zdCBjaGFyICp6Rm9ybWF0LCB2YV9saXN0KTsKfQoKZGF0YWJhc2U6
OmRhdGFiYXNlKGZzOjpwYXRoIGNvbnN0ICYgZm4pIDoKICBmaWxlbmFtZShmbiksCiAgLy8g
bmIuIHVwZGF0ZSB0aGlzIGlmIHlvdSBjaGFuZ2UgdGhlIHNjaGVtYS4gdW5mb3J0dW5hdGVs
eSB3ZSBhcmUgbm90CiAgLy8gdXNpbmcgc2VsZi1kaWdlc3Rpbmcgc2NoZW1hcyBkdWUgdG8g
Y29tbWVudCBpcnJlZ3VsYXJpdGllcyBhbmQKICAvLyBub24tYWxwaGFiZXRpYyBvcmRlcmlu
ZyBvZiB0YWJsZXMgaW4gc3FsIHNvdXJjZSBmaWxlcy4gd2UgY291bGQgY3JlYXRlCiAgLy8g
YSB0ZW1wb3JhcnkgZGIsIHdyaXRlIG91ciBpbnRlbmRlZCBzY2hlbWEgaW50byBpdCwgYW5k
IHJlYWQgaXQgYmFjaywKICAvLyBidXQgdGhpcyBzZWVtcyBsaWtlIGl0IHdvdWxkIGJlIHRv
byBydWRlLiBwb3NzaWJseSByZXZpc2l0IHRoaXMgaXNzdWUuCiAgc2NoZW1hKCJjMWU4NjU4
OGUxMWFkMDdmYTUzZTVkMjk0ZWRjMDQzY2UxZDQwMDVhIiksCiAgX19zcWwoTlVMTCksCiAg
dHJhbnNhY3Rpb25fbGV2ZWwoMCkKe30KCnZvaWQgCmRhdGFiYXNlOjpjaGVja19zY2hlbWEo
KQp7CiAgc3RyaW5nIGRiX3NjaGVtYV9pZDsgIAogIGNhbGN1bGF0ZV9zY2hlbWFfaWQgKF9f
c3FsLCBkYl9zY2hlbWFfaWQpOwogIE4gKHNjaGVtYSA9PSBkYl9zY2hlbWFfaWQsCiAgICAg
RigiZGF0YWJhc2Ugc2NoZW1hcyBkbyBub3QgbWF0Y2g6ICIKICAgICAgICJ3YW50ZWQgJXMs
IGdvdCAlcy4gdHJ5IG1pZ3JhdGluZyBkYXRhYmFzZSIpIAogICAgICUgc2NoZW1hICUgZGJf
c2NoZW1hX2lkKTsKfQoKc3RhdGljIHZvaWQgCnNxbGl0ZV91bmJhc2U2NF9mbihzcWxpdGVf
ZnVuYyAqZiwgaW50IG5hcmdzLCBjaGFyIGNvbnN0ICoqIGFyZ3MpCnsKICBpZiAobmFyZ3Mg
IT0gMSkKICAgIHsKICAgICAgc3FsaXRlX3NldF9yZXN1bHRfZXJyb3IoZiwgIm5lZWQgZXhh
Y3RseSAxIGFyZyB0byB1bmJhc2U2NCgpIiwgLTEpOwogICAgICByZXR1cm47CiAgICB9CiAg
ZGF0YSBkZWNvZGVkOwogIGRlY29kZV9iYXNlNjQoYmFzZTY0PGRhdGE+KHN0cmluZyhhcmdz
WzBdKSksIGRlY29kZWQpOwogIHNxbGl0ZV9zZXRfcmVzdWx0X3N0cmluZyhmLCBkZWNvZGVk
KCkuY19zdHIoKSwgZGVjb2RlZCgpLnNpemUoKSk7Cn0KCnZvaWQgCmRhdGFiYXNlOjpzZXRf
YXBwKGFwcF9zdGF0ZSAqIGFwcCkKewogIF9fYXBwID0gYXBwOwp9CgpzdHJ1Y3Qgc3FsaXRl
ICogCmRhdGFiYXNlOjpzcWwoYm9vbCBpbml0KQp7CiAgaWYgKCEgX19zcWwpCiAgICB7CiAg
ICAgIGlmICghIGluaXQpCiAgICAgICAgewogICAgICAgICAgaWYgKGZpbGVuYW1lLnN0cmlu
ZygpID09ICIiKQogICAgICAgICAgICB0aHJvdyBpbmZvcm1hdGl2ZV9mYWlsdXJlKHN0cmlu
Zygibm8gZGF0YWJhc2Ugc3BlY2lmaWVkIikpOwogICAgICAgICAgZWxzZSBpZiAoISBmczo6
ZXhpc3RzKGZpbGVuYW1lKSkKICAgICAgICAgICAgdGhyb3cgaW5mb3JtYXRpdmVfZmFpbHVy
ZShzdHJpbmcoImRhdGFiYXNlICIpICsgZmlsZW5hbWUuc3RyaW5nKCkgKwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZygiIGRvZXMgbm90IGV4aXN0Iikp
OwogICAgICAgIH0KICAgICAgTihmaWxlbmFtZS5zdHJpbmcoKSAhPSAiIiwKICAgICAgICBG
KCJuZWVkIGRhdGFiYXNlIG5hbWUiKSk7CiAgICAgIGNoYXIgKiBlcnJtc2cgPSBOVUxMOwog
ICAgICBfX3NxbCA9IHNxbGl0ZV9vcGVuKGZpbGVuYW1lLnN0cmluZygpLmNfc3RyKCksIDA3
NTUsICZlcnJtc2cpOwogICAgICBpZiAoISBfX3NxbCkKICAgICAgICB0aHJvdyBvb3BzKHN0
cmluZygiY291bGQgbm90IG9wZW4gZGF0YWJhc2U6ICIpICsgZmlsZW5hbWUuc3RyaW5nKCkg
KyAKICAgICAgICAgICAgICAgICAgIChlcnJtc2cgPyAoIjogIiArIHN0cmluZyhlcnJtc2cp
KSA6ICIiKSk7CiAgICAgIGlmIChpbml0KQogICAgICAgIGV4ZWN1dGUoc2NoZW1hX2NvbnN0
YW50KTsKCiAgICAgIGNoZWNrX3NjaGVtYSgpOwogICAgICBpbnN0YWxsX2Z1bmN0aW9ucyhf
X2FwcCk7CiAgICAgIGluc3RhbGxfdmlld3MoKTsKICAgIH0KICByZXR1cm4gX19zcWw7Cn0K
CnZvaWQgCmRhdGFiYXNlOjppbml0aWFsaXplKCkKewogIGlmIChfX3NxbCkKICAgIHRocm93
IG9vcHMoImNhbm5vdCBpbml0aWFsaXplIGRhdGFiYXNlIHdoaWxlIGl0IGlzIG9wZW4iKTsK
CiAgTighZnM6OmV4aXN0cyhmaWxlbmFtZSksCiAgICBGKCJjb3VsZCBub3QgaW5pdGlhbGl6
ZSBkYXRhYmFzZTogJXM6IGFscmVhZHkgZXhpc3RzIikgCiAgICAlIGZpbGVuYW1lLnN0cmlu
ZygpKTsKCiAgZnM6OnBhdGggam91cm5hbCA9IG1rcGF0aChmaWxlbmFtZS5zdHJpbmcoKSAr
ICItam91cm5hbCIpOwogIE4oIWZzOjpleGlzdHMoam91cm5hbCksCiAgICBGKCJleGlzdGlu
ZyAocG9zc2libHkgc3RhbGUpIGpvdXJuYWwgZmlsZSAnJXMnIGhhcyBzYW1lIHN0ZW0gYXMg
bmV3IGRhdGFiYXNlICclcyciKQogICAgJSBqb3VybmFsLnN0cmluZygpICUgZmlsZW5hbWUu
c3RyaW5nKCkpOwoKICBzcWxpdGUgKnMgPSBzcWwodHJ1ZSk7CiAgSShzICE9IE5VTEwpOwp9
CgoKc3RydWN0IApkdW1wX3JlcXVlc3QKewogIGR1bXBfcmVxdWVzdCgpIHt9OwogIHN0cnVj
dCBzcWxpdGUgKnNxbDsKICBzdHJpbmcgdGFibGVfbmFtZTsKICBvc3RyZWFtICpvdXQ7Cn07
CgpzdGF0aWMgaW50IApkdW1wX3Jvd19jYih2b2lkICpkYXRhLCBpbnQgbiwgY2hhciAqKnZh
bHMsIGNoYXIgKipjb2xzKQp7CiAgZHVtcF9yZXF1ZXN0ICpkdW1wID0gcmVpbnRlcnByZXRf
Y2FzdDxkdW1wX3JlcXVlc3QgKj4oZGF0YSk7CiAgSShkdW1wICE9IE5VTEwpOwogIEkodmFs
cyAhPSBOVUxMKTsKICBJKGR1bXAtPm91dCAhPSBOVUxMKTsKICAqKGR1bXAtPm91dCkgPDwg
RigiSU5TRVJUIElOVE8gJXMgVkFMVUVTKCIpICUgZHVtcC0+dGFibGVfbmFtZTsKICBmb3Ig
KGludCBpID0gMDsgaSA8IG47ICsraSkKICAgIHsKICAgICAgaWYgKGkgIT0gMCkKICAgICAg
ICAqKGR1bXAtPm91dCkgPDwgJywnOwoKICAgICAgaWYgKHZhbHNbaV0gPT0gTlVMTCkKICAg
ICAgICAqKGR1bXAtPm91dCkgPDwgIk5VTEwiOwogICAgICBlbHNlCiAgICAgICAgewogICAg
ICAgICAgKihkdW1wLT5vdXQpIDw8ICInIjsKICAgICAgICAgIGZvciAoY2hhciAqY3AgPSB2
YWxzW2ldOyAqY3A7ICsrY3ApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBpZiAoKmNw
ID09ICdcJycpCiAgICAgICAgICAgICAgICAqKGR1bXAtPm91dCkgPDwgIicnIjsKICAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAqKGR1bXAtPm91dCkgPDwgKmNwOwogICAg
ICAgICAgICB9CiAgICAgICAgICAqKGR1bXAtPm91dCkgPDwgIiciOwogICAgICAgIH0KICAg
IH0KICAqKGR1bXAtPm91dCkgPDwgIik7XG4iOyAgCiAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBp
bnQgCmR1bXBfdGFibGVfY2Iodm9pZCAqZGF0YSwgaW50IG4sIGNoYXIgKip2YWxzLCBjaGFy
ICoqY29scykKewogIGR1bXBfcmVxdWVzdCAqZHVtcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZHVt
cF9yZXF1ZXN0ICo+KGRhdGEpOwogIEkoZHVtcCAhPSBOVUxMKTsKICBJKGR1bXAtPnNxbCAh
PSBOVUxMKTsKICBJKHZhbHMgIT0gTlVMTCk7CiAgSSh2YWxzWzBdICE9IE5VTEwpOwogIEko
dmFsc1sxXSAhPSBOVUxMKTsKICBJKHZhbHNbMl0gIT0gTlVMTCk7CiAgSShuID09IDMpOwog
IGlmIChzdHJpbmcodmFsc1sxXSkgPT0gInRhYmxlIikKICAgIHsKICAgICAgKihkdW1wLT5v
dXQpIDw8IHZhbHNbMl0gPDwgIjtcbiI7CiAgICAgIGR1bXAtPnRhYmxlX25hbWUgPSBzdHJp
bmcodmFsc1swXSk7CiAgICAgIHNxbGl0ZV9leGVjX3ByaW50ZihkdW1wLT5zcWwsICJTRUxF
Q1QgKiBGUk9NICclcSciLCAKICAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBfcm93X2Ni
LCBkYXRhLCBOVUxMLCB2YWxzWzBdKTsKICAgIH0KICByZXR1cm4gMDsKfQoKdm9pZCAKZGF0
YWJhc2U6OmR1bXAob3N0cmVhbSAmIG91dCkKewogIGR1bXBfcmVxdWVzdCByZXE7CiAgcmVx
Lm91dCA9ICZvdXQ7CiAgcmVxLnNxbCA9IHNxbCgpOwogIG91dCA8PCAiQkVHSU4gVFJBTlNB
Q1RJT047XG4iOwogIGludCByZXMgPSBzcWxpdGVfZXhlYyhyZXEuc3FsLAogICAgICAgICAg
ICAgICAgICAgICAgICAiU0VMRUNUIG5hbWUsIHR5cGUsIHNxbCBGUk9NIHNxbGl0ZV9tYXN0
ZXIgIgogICAgICAgICAgICAgICAgICAgICAgICAiV0hFUkUgdHlwZT0ndGFibGUnIEFORCBz
cWwgTk9UIE5VTEwgIgogICAgICAgICAgICAgICAgICAgICAgICAiT1JERVIgQlkgc3Vic3Ry
KHR5cGUsMiwxKSwgbmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBfdGFibGVf
Y2IsICZyZXEsIE5VTEwpOwogIEkocmVzID09IFNRTElURV9PSyk7CiAgb3V0IDw8ICJDT01N
SVQ7XG4iOwp9Cgp2b2lkIApkYXRhYmFzZTo6bG9hZChpc3RyZWFtICYgaW4pCnsKICBjaGFy
IGJ1Zltjb25zdGFudHM6OmJ1ZnN6XTsKICBzdHJpbmcgdG1wOwoKICBOKGZpbGVuYW1lLnN0
cmluZygpICE9ICIiLAogICAgRigibmVlZCBkYXRhYmFzZSBuYW1lIikpOwogIGNoYXIgKiBl
cnJtc2cgPSBOVUxMOwogIF9fc3FsID0gc3FsaXRlX29wZW4oZmlsZW5hbWUuc3RyaW5nKCku
Y19zdHIoKSwgMDc1NSwgJmVycm1zZyk7CiAgaWYgKCEgX19zcWwpCiAgICB0aHJvdyBvb3Bz
KHN0cmluZygiY291bGQgbm90IG9wZW4gZGF0YWJhc2U6ICIpICsgZmlsZW5hbWUuc3RyaW5n
KCkgKyAKICAgICAgICAgICAgICAgKGVycm1zZyA/ICgiOiAiICsgc3RyaW5nKGVycm1zZykp
IDogIiIpKTsKICAKICB3aGlsZShpbikKICAgIHsKICAgICAgaW4ucmVhZChidWYsIGNvbnN0
YW50czo6YnVmc3opOwogICAgICB0bXAuYXBwZW5kKGJ1ZiwgaW4uZ2NvdW50KCkpOwogICAg
fQoKICBleGVjdXRlKHRtcC5jX3N0cigpKTsKfQoKCnZvaWQgCmRhdGFiYXNlOjpkZWJ1Zyhz
dHJpbmcgY29uc3QgJiBzcWwsIG9zdHJlYW0gJiBvdXQpCnsKICByZXN1bHRzIHJlczsKICBm
ZXRjaChyZXMsIGFueV9jb2xzLCBhbnlfcm93cywgc3FsLmNfc3RyKCkpOwogIG91dCA8PCAi
JyIgPDwgc3FsIDw8ICInIC0+ICIgPDwgcmVzLnNpemUoKSA8PCAiIHJvd3NcbiIgPDwgZW5k
bDsKICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlcy5zaXplKCk7ICsraSkKICAgIHsKICAg
ICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCByZXNbaV0uc2l6ZSgpOyArK2opCiAgICAgICAg
ewogICAgICAgICAgaWYgKGogIT0gMCkKICAgICAgICAgICAgb3V0IDw8ICIgfCAiOwogICAg
ICAgICAgb3V0IDw8IHJlc1tpXVtqXTsKICAgICAgICB9CiAgICAgIG91dCA8PCBlbmRsOwog
ICAgfQp9Cgp1bnNpZ25lZCBsb25nIApkYXRhYmFzZTo6Z2V0X3N0YXRpc3RpYyhzdHJpbmcg
Y29uc3QgJiBxdWVyeSkKewogIHJlc3VsdHMgcmVzOwogIGZldGNoKHJlcywgMSwgMSwgcXVl
cnkuY19zdHIoKSk7CiAgcmV0dXJuIGxleGljYWxfY2FzdDx1bnNpZ25lZCBsb25nPihyZXNb
MF1bMF0pOwp9Cgp2b2lkIApkYXRhYmFzZTo6aW5mbyhvc3RyZWFtICYgb3V0KQp7CiAgc3Ry
aW5nIGlkOwogIGNhbGN1bGF0ZV9zY2hlbWFfaWQoc3FsKCksIGlkKTsKICBvdXQgPDwgInNj
aGVtYSB2ZXJzaW9uICA6ICIgPDwgaWQgPDwgZW5kbDsKICBvdXQgPDwgImZ1bGwgbWFuaWZl
c3RzICA6ICIgPDwgZ2V0X3N0YXRpc3RpYygiU0VMRUNUIENPVU5UKCopIEZST00gbWFuaWZl
c3RzIikgPDwgZW5kbDsKICBvdXQgPDwgIm1hbmlmZXN0IGRlbHRhcyA6ICIgPDwgZ2V0X3N0
YXRpc3RpYygiU0VMRUNUIENPVU5UKCopIEZST00gbWFuaWZlc3RfZGVsdGFzIikgPDwgZW5k
bDsKICBvdXQgPDwgImZ1bGwgZmlsZXMgICAgICA6ICIgPDwgZ2V0X3N0YXRpc3RpYygiU0VM
RUNUIENPVU5UKCopIEZST00gZmlsZXMiKSA8PCBlbmRsOwogIG91dCA8PCAiZmlsZSBkZWx0
YXMgICAgIDogIiA8PCBnZXRfc3RhdGlzdGljKCJTRUxFQ1QgQ09VTlQoKikgRlJPTSBmaWxl
X2RlbHRhcyIpIDw8IGVuZGw7Cn0KCnZvaWQgCmRhdGFiYXNlOjp2ZXJzaW9uKG9zdHJlYW0g
JiBvdXQpCnsKICBzdHJpbmcgaWQ7CiAgY2FsY3VsYXRlX3NjaGVtYV9pZChzcWwoKSwgaWQp
OwogIG91dCA8PCAiZGF0YWJhc2Ugc2NoZW1hIHZlcnNpb246ICIgPDwgaWQgPDwgZW5kbDsK
fQoKdm9pZCAKZGF0YWJhc2U6Om1pZ3JhdGUoKQp7ICAKICBOKGZpbGVuYW1lLnN0cmluZygp
ICE9ICIiLAogICAgRigibmVlZCBkYXRhYmFzZSBuYW1lIikpOwogIGNoYXIgKiBlcnJtc2cg
PSBOVUxMOwogIF9fc3FsID0gc3FsaXRlX29wZW4oZmlsZW5hbWUuc3RyaW5nKCkuY19zdHIo
KSwgMDc1NSwgJmVycm1zZyk7CiAgaWYgKCEgX19zcWwpCiAgICB0aHJvdyBvb3BzKHN0cmlu
ZygiY291bGQgbm90IG9wZW4gZGF0YWJhc2U6ICIpICsgZmlsZW5hbWUuc3RyaW5nKCkgKyAK
ICAgICAgICAgICAgICAgKGVycm1zZyA/ICgiOiAiICsgc3RyaW5nKGVycm1zZykpIDogIiIp
KTsKICBtaWdyYXRlX21vbm90b25lX3NjaGVtYShfX3NxbCk7CiAgc3FsaXRlX2Nsb3NlKF9f
c3FsKTsKfQoKdm9pZCAKZGF0YWJhc2U6OnJlaGFzaCgpCnsKICB0cmFuc2FjdGlvbl9ndWFy
ZCBndWFyZCgqdGhpcyk7CiAgdGlja2VyIG1jZXJ0cygibWNlcnRzIiwgIm0iLCAxKTsKICB0
aWNrZXIgZmNlcnRzKCJmY2VydHMiLCAiZiIsIDEpOwogIHRpY2tlciBwdWJrZXlzKCJwdWJr
ZXlzIiwgIisiLCAxKTsKICB0aWNrZXIgcHJpdmtleXMoInByaXZrZXlzIiwgIiEiLCAxKTsK
ICAKICB7CiAgICAvLyByZWhhc2ggYWxsIG1jZXJ0cwogICAgcmVzdWx0cyByZXM7CiAgICB2
ZWN0b3I8Y2VydD4gY2VydHM7CiAgICBmZXRjaChyZXMsIDUsIGFueV9yb3dzLCAKICAgICAg
ICAgICJTRUxFQ1QgaWQsIG5hbWUsIHZhbHVlLCBrZXlwYWlyLCBzaWduYXR1cmUgIgogICAg
ICAgICAgIkZST00gbWFuaWZlc3RfY2VydHMiKTsKICAgIHJlc3VsdHNfdG9fY2VydHMocmVz
LCBjZXJ0cyk7CiAgICBleGVjdXRlKCJERUxFVEUgRlJPTSBtYW5pZmVzdF9jZXJ0cyIpOwog
ICAgZm9yKHZlY3RvcjxjZXJ0Pjo6Y29uc3RfaXRlcmF0b3IgaSA9IGNlcnRzLmJlZ2luKCk7
IGkgIT0gY2VydHMuZW5kKCk7ICsraSkKICAgICAgewogICAgICAgIHB1dF9jZXJ0KCppLCAi
bWFuaWZlc3RfY2VydHMiKTsKICAgICAgICArK21jZXJ0czsKICAgICAgfQogIH0KCiAgewog
ICAgLy8gcmVoYXNoIGFsbCBmY2VydHMKICAgIHJlc3VsdHMgcmVzOwogICAgdmVjdG9yPGNl
cnQ+IGNlcnRzOyAgICAKICAgIGZldGNoKHJlcywgNSwgYW55X3Jvd3MsIAogICAgICAgICAg
IlNFTEVDVCBpZCwgbmFtZSwgdmFsdWUsIGtleXBhaXIsIHNpZ25hdHVyZSAiCiAgICAgICAg
ICAiRlJPTSBmaWxlX2NlcnRzIik7CiAgICByZXN1bHRzX3RvX2NlcnRzKHJlcywgY2VydHMp
OwogICAgZXhlY3V0ZSgiREVMRVRFIEZST00gZmlsZV9jZXJ0cyIpOwogICAgZm9yKHZlY3Rv
cjxjZXJ0Pjo6Y29uc3RfaXRlcmF0b3IgaSA9IGNlcnRzLmJlZ2luKCk7IGkgIT0gY2VydHMu
ZW5kKCk7ICsraSkKICAgICAgewogICAgICAgIHB1dF9jZXJ0KCppLCAiZmlsZV9jZXJ0cyIp
OwogICAgICAgICsrZmNlcnRzOwogICAgICB9CiAgfQogIAoKICB7CiAgICAvLyByZWhhc2gg
YWxsIHB1YmtleXMKICAgIHJlc3VsdHMgcmVzOwogICAgZmV0Y2gocmVzLCAyLCBhbnlfcm93
cywgIlNFTEVDVCBpZCwga2V5ZGF0YSBGUk9NIHB1YmxpY19rZXlzIik7CiAgICBleGVjdXRl
KCJERUxFVEUgRlJPTSBwdWJsaWNfa2V5cyIpOwogICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCByZXMuc2l6ZSgpOyArK2kpCiAgICAgIHsKICAgICAgICBoZXhlbmM8aWQ+IHRtcDsKICAg
ICAgICBrZXlfaGFzaF9jb2RlKHJzYV9rZXlwYWlyX2lkKHJlc1tpXVswXSksIGJhc2U2NDxy
c2FfcHViX2tleT4ocmVzW2ldWzFdKSwgdG1wKTsKICAgICAgICBleGVjdXRlKCJJTlNFUlQg
SU5UTyBwdWJsaWNfa2V5cyBWQUxVRVMoJyVxJywgJyVxJywgJyVxJykiLCAKICAgICAgICAg
ICAgICAgIHRtcCgpLmNfc3RyKCksIHJlc1tpXVswXS5jX3N0cigpLCByZXNbaV1bMV0uY19z
dHIoKSk7CiAgICAgICAgKytwdWJrZXlzOwogICAgICB9CiAgfQoKewogICAgLy8gcmVoYXNo
IGFsbCBwcml2a2V5cwogICAgcmVzdWx0cyByZXM7CiAgICBmZXRjaChyZXMsIDIsIGFueV9y
b3dzLCAiU0VMRUNUIGlkLCBrZXlkYXRhIEZST00gcHJpdmF0ZV9rZXlzIik7CiAgICBleGVj
dXRlKCJERUxFVEUgRlJPTSBwcml2YXRlX2tleXMiKTsKICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcmVzLnNpemUoKTsgKytpKQogICAgICB7CiAgICAgICAgaGV4ZW5jPGlkPiB0bXA7
CiAgICAgICAga2V5X2hhc2hfY29kZShyc2Ffa2V5cGFpcl9pZChyZXNbaV1bMF0pLCBiYXNl
NjQ8IGFyYzQ8cnNhX3ByaXZfa2V5PiA+KHJlc1tpXVsxXSksIHRtcCk7CiAgICAgICAgZXhl
Y3V0ZSgiSU5TRVJUIElOVE8gcHJpdmF0ZV9rZXlzIFZBTFVFUygnJXEnLCAnJXEnLCAnJXEn
KSIsIAogICAgICAgICAgICAgICAgdG1wKCkuY19zdHIoKSwgcmVzW2ldWzBdLmNfc3RyKCks
IHJlc1tpXVsxXS5jX3N0cigpKTsKICAgICAgICArK3ByaXZrZXlzOwogICAgICB9CiAgfQoK
ICBndWFyZC5jb21taXQoKTsKfQoKdm9pZCAKZGF0YWJhc2U6OmVuc3VyZV9vcGVuKCkKewog
IHNxbGl0ZSAqcyA9IHNxbCgpOwogIEkocyAhPSBOVUxMKTsKfQoKZGF0YWJhc2U6On5kYXRh
YmFzZSgpIAp7CiAgaWYgKF9fc3FsKQogICAgewogICAgICBzcWxpdGVfY2xvc2UoX19zcWwp
OwogICAgICBfX3NxbCA9IDA7CiAgICB9Cn0KCnN0YXRpYyB2b2lkIAphc3NlcnRfc3FsaXRl
X29rKGludCByZXMpCnsKICBzd2l0Y2ggKHJlcykKICAgIHsgICAgICAKICAgIGNhc2UgU1FM
SVRFX09LOiAKICAgICAgYnJlYWs7CgogICAgY2FzZSBTUUxJVEVfRVJST1I6CiAgICAgIHRo
cm93IG9vcHMoIlNRTCBlcnJvciBvciBtaXNzaW5nIGRhdGFiYXNlIik7CiAgICAgIGJyZWFr
OwoKICAgIGNhc2UgU1FMSVRFX0lOVEVSTkFMOgogICAgICB0aHJvdyBvb3BzKCJBbiBpbnRl
cm5hbCBsb2dpYyBlcnJvciBpbiBTUUxpdGUiKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBT
UUxJVEVfUEVSTToKICAgICAgdGhyb3cgb29wcygiQWNjZXNzIHBlcm1pc3Npb24gZGVuaWVk
Iik7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgU1FMSVRFX0FCT1JUOgogICAgICB0aHJvdyBv
b3BzKCJDYWxsYmFjayByb3V0aW5lIHJlcXVlc3RlZCBhbiBhYm9ydCIpOwogICAgICBicmVh
azsKCiAgICBjYXNlIFNRTElURV9CVVNZOgogICAgICB0aHJvdyBvb3BzKCJUaGUgZGF0YWJh
c2UgZmlsZSBpcyBsb2NrZWQiKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBTUUxJVEVfTE9D
S0VEOgogICAgICB0aHJvdyBvb3BzKCJBIHRhYmxlIGluIHRoZSBkYXRhYmFzZSBpcyBsb2Nr
ZWQiKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBTUUxJVEVfTk9NRU06CiAgICAgIHRocm93
IG9vcHMoIkEgbWFsbG9jKCkgZmFpbGVkIik7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgU1FM
SVRFX1JFQURPTkxZOgogICAgICB0aHJvdyBvb3BzKCJBdHRlbXB0IHRvIHdyaXRlIGEgcmVh
ZG9ubHkgZGF0YWJhc2UiKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBTUUxJVEVfSU5URVJS
VVBUOgogICAgICB0aHJvdyBvb3BzKCJPcGVyYXRpb24gdGVybWluYXRlZCBieSBzcWxpdGVf
aW50ZXJydXB0KCkiKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBTUUxJVEVfSU9FUlI6CiAg
ICAgIHRocm93IG9vcHMoIlNvbWUga2luZCBvZiBkaXNrIEkvTyBlcnJvciBvY2N1cnJlZCIp
OwogICAgICBicmVhazsKCiAgICBjYXNlIFNRTElURV9DT1JSVVBUOgogICAgICB0aHJvdyBv
b3BzKCJUaGUgZGF0YWJhc2UgZGlzayBpbWFnZSBpcyBtYWxmb3JtZWQiKTsKICAgICAgYnJl
YWs7CgogICAgY2FzZSBTUUxJVEVfTk9URk9VTkQ6CiAgICAgIHRocm93IG9vcHMoIihJbnRl
cm5hbCBPbmx5KSBUYWJsZSBvciByZWNvcmQgbm90IGZvdW5kIik7CiAgICAgIGJyZWFrOwoK
ICAgIGNhc2UgU1FMSVRFX0ZVTEw6CiAgICAgIHRocm93IG9vcHMoIkluc2VydGlvbiBmYWls
ZWQgYmVjYXVzZSBkYXRhYmFzZSBpcyBmdWxsIik7CiAgICAgIGJyZWFrOwoKICAgIGNhc2Ug
U1FMSVRFX0NBTlRPUEVOOgogICAgICB0aHJvdyBvb3BzKCJVbmFibGUgdG8gb3BlbiB0aGUg
ZGF0YWJhc2UgZmlsZSIpOwogICAgICBicmVhazsKCiAgICBjYXNlIFNRTElURV9QUk9UT0NP
TDoKICAgICAgdGhyb3cgb29wcygiZGF0YWJhc2UgbG9jayBwcm90b2NvbCBlcnJvciIpOwog
ICAgICBicmVhazsKCiAgICBjYXNlIFNRTElURV9FTVBUWToKICAgICAgdGhyb3cgb29wcygi
KEludGVybmFsIE9ubHkpIGRhdGFiYXNlIHRhYmxlIGlzIGVtcHR5Iik7CiAgICAgIGJyZWFr
OwoKICAgIGNhc2UgU1FMSVRFX1NDSEVNQToKICAgICAgdGhyb3cgb29wcygiVGhlIGRhdGFi
YXNlIHNjaGVtYSBjaGFuZ2VkIik7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgU1FMSVRFX1RP
T0JJRzoKICAgICAgdGhyb3cgb29wcygiVG9vIG11Y2ggZGF0YSBmb3Igb25lIHJvdyBvZiBh
IHRhYmxlIik7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgU1FMSVRFX0NPTlNUUkFJTlQ6CiAg
ICAgIHRocm93IG9vcHMoIkFib3J0IGR1ZSB0byBjb250cmFpbnQgdmlvbGF0aW9uIik7CiAg
ICAgIGJyZWFrOwoKICAgIGNhc2UgU1FMSVRFX01JU01BVENIOgogICAgICB0aHJvdyBvb3Bz
KCJEYXRhIHR5cGUgbWlzbWF0Y2giKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBTUUxJVEVf
TUlTVVNFOgogICAgICB0aHJvdyBvb3BzKCJMaWJyYXJ5IHVzZWQgaW5jb3JyZWN0bHkiKTsK
ICAgICAgYnJlYWs7CgogICAgZGVmYXVsdDoKICAgICAgdGhyb3cgb29wcyhzdHJpbmcoIlVu
a25vd24gREIgcmVzdWx0IGNvZGU6ICIpICsgbGV4aWNhbF9jYXN0PHN0cmluZz4ocmVzKSk7
CiAgICAgIGJyZWFrOwogICAgfQp9Cgp2b2lkIApkYXRhYmFzZTo6ZXhlY3V0ZShjaGFyIGNv
bnN0ICogcXVlcnksIC4uLikKewogIHZhX2xpc3QgYXA7CiAgaW50IHJlczsKICBjaGFyICog
ZXJybXNnID0gTlVMTDsKCiAgdmFfc3RhcnQoYXAsIHF1ZXJ5KTsKCiAgLy8gbG9nIGl0CiAg
Y2hhciAqIGZvcm1hdHRlZCA9IHNxbGl0ZV92bXByaW50ZihxdWVyeSwgYXApOwogIHN0cmlu
ZyBxcShmb3JtYXR0ZWQpOwogIGlmIChxcS5zaXplKCkgPiBjb25zdGFudHM6OmRiX2xvZ19s
aW5lX3N6KSAKICAgIHFxID0gcXEuc3Vic3RyKDAsIGNvbnN0YW50czo6ZGJfbG9nX2xpbmVf
c3opICsgc3RyaW5nKCIgLi4uIik7CiAgTChGKCJkYi5leGVjdXRlKFwiJXNcIilcbiIpICUg
cXEpOwogIHNxbGl0ZV9mcmVlbWVtKGZvcm1hdHRlZCk7CgogIHZhX2VuZChhcCk7CiAgdmFf
c3RhcnQoYXAsIHF1ZXJ5KTsKCiAgLy8gZG8gaXQKICByZXMgPSBzcWxpdGVfZXhlY192cHJp
bnRmKHNxbCgpLCBxdWVyeSwgTlVMTCwgTlVMTCwgJmVycm1zZywgYXApOwoKICB2YV9lbmQo
YXApOwoKICBpZiAoZXJybXNnKQogICAgdGhyb3cgb29wcyhzdHJpbmcoInNxbGl0ZSBleGVj
IGVycm9yICIpICsgZXJybXNnKTsKCiAgYXNzZXJ0X3NxbGl0ZV9vayhyZXMpOwoKfQoKdm9p
ZCAKZGF0YWJhc2U6OmZldGNoKHJlc3VsdHMgJiByZXMsIAogICAgICAgICAgICAgICAgaW50
IGNvbnN0IHdhbnRfY29scywgCiAgICAgICAgICAgICAgICBpbnQgY29uc3Qgd2FudF9yb3dz
LCAKICAgICAgICAgICAgICAgIGNoYXIgY29uc3QgKiBxdWVyeSwgLi4uKQp7CiAgY2hhciAq
KiByZXN1bHQgPSBOVUxMOwogIGludCBucm93OwogIGludCBuY29sOwogIGNoYXIgKiBlcnJt
c2cgPSBOVUxMOwogIGludCByZXNjb2RlOwoKICB2YV9saXN0IGFwOwogIHJlcy5jbGVhcigp
OwogIHJlcy5yZXNpemUoMCk7CiAgdmFfc3RhcnQoYXAsIHF1ZXJ5KTsKCiAgLy8gbG9nIGl0
CiAgY2hhciAqIGZvcm1hdHRlZCA9IHNxbGl0ZV92bXByaW50ZihxdWVyeSwgYXApOwogIHN0
cmluZyBxcShmb3JtYXR0ZWQpOwogIGlmIChxcS5zaXplKCkgPiBjb25zdGFudHM6OmxvZ19s
aW5lX3N6KSAKICAgIHFxID0gcXEuc3Vic3RyKDAsIGNvbnN0YW50czo6bG9nX2xpbmVfc3op
ICsgc3RyaW5nKCIgLi4uIik7CiAgTChGKCJkYi5mZXRjaChcIiVzXCIpXG4iKSAlIHFxKTsK
ICBzcWxpdGVfZnJlZW1lbShmb3JtYXR0ZWQpOwoKICB2YV9lbmQoYXApOwogIHZhX3N0YXJ0
KGFwLCBxdWVyeSk7CgogIC8vIGRvIGl0CiAgcmVzY29kZSA9IHNxbGl0ZV9nZXRfdGFibGVf
dnByaW50ZihzcWwoKSwgcXVlcnksICZyZXN1bHQsICZucm93LCAmbmNvbCwgJmVycm1zZywg
YXApOwoKICB2YV9lbmQoYXApOwoKICBjbGVhbnVwX3B0cjxjaGFyICoqLCB2b2lkPiAKICAg
IHJlc3VsdF9ndWFyZChyZXN1bHQsICZzcWxpdGVfZnJlZV90YWJsZSk7CgogIHN0cmluZyBj
dHggPSBzdHJpbmcoImRiIHF1ZXJ5IFsiKSArIHN0cmluZyhxdWVyeSkgKyAiXTogIjsKCiAg
aWYgKGVycm1zZykKICAgIHRocm93IG9vcHMoY3R4ICsgc3RyaW5nKCJzcWxpdGUgZXJyb3Ig
IikgKyBlcnJtc2cpOwogIGFzc2VydF9zcWxpdGVfb2socmVzY29kZSk7CgogIGlmICh3YW50
X2NvbHMgPT0gMCAmJiBuY29sID09IDApIHJldHVybjsKICBpZiAod2FudF9yb3dzID09IDAg
JiYgbnJvdyA9PSAwKSByZXR1cm47CiAgaWYgKHdhbnRfY29scyA9PSBhbnlfcm93cyAmJiBu
Y29sID09IDApIHJldHVybjsKICBpZiAod2FudF9yb3dzID09IGFueV9yb3dzICYmIG5yb3cg
PT0gMCkgcmV0dXJuOwoKICBpZiAod2FudF9jb2xzICE9IGFueV9jb2xzICYmCiAgICAgIG5j
b2wgIT0gd2FudF9jb2xzKQogICAgdGhyb3cgb29wcygoRigiJXMgd2FudGVkICVkIGNvbHVt
bnMsIGdvdCAlcyIpCiAgICAgICAgICAgICAgICAlIGN0eCAlIHdhbnRfY29scyAlIG5jb2wp
LnN0cigpKTsKCiAgaWYgKHdhbnRfcm93cyAhPSBhbnlfcm93cyAmJgogICAgICBucm93ICE9
IHdhbnRfcm93cykKICAgIHRocm93IG9vcHMoKEYoIiVzIHdhbnRlZCAlZCByb3dzLCBnb3Qg
JXMiKQogICAgICAgICAgICAgICAgJSBjdHggJSB3YW50X3Jvd3MgJSBucm93KS5zdHIoKSk7
CgogIGlmICghcmVzdWx0KQogICAgdGhyb3cgb29wcyhjdHggKyAibnVsbCByZXN1bHQgc2V0
Iik7CgogIGZvciAoaW50IGkgPSAwOyBpIDwgbmNvbDsgKytpKSAKICAgIGlmICghcmVzdWx0
W2ldKQogICAgICB0aHJvdyBvb3BzKGN0eCArICJudWxsIGNvbHVtbiBuYW1lIik7CgogIGZv
ciAoaW50IHJvdyA9IDA7IHJvdyA8IG5yb3c7ICsrcm93KSAKICAgIHsKICAgICAgdmVjdG9y
PHN0cmluZz4gcm93dmVjOwogICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBuY29sOyAr
K2NvbCkKICAgICAgICB7CiAgICAgICAgICBpbnQgaSA9ICgoMSArIHJvdykgKiBuY29sKSAr
IGNvbDsKICAgICAgICAgIGlmICghcmVzdWx0W2ldKQogICAgICAgICAgICB0aHJvdyBvb3Bz
KGN0eCArICJudWxsIHJlc3VsdCB2YWx1ZSIpOwogICAgICAgICAgZWxzZQogICAgICAgICAg
ICByb3d2ZWMucHVzaF9iYWNrKHJlc3VsdFtpXSk7CiAgICAgICAgfQogICAgICByZXMucHVz
aF9iYWNrKHJvd3ZlYyk7CiAgICB9Cn0KCi8vIGdlbmVyYWwgYXBwbGljYXRpb24tbGV2ZWwg
bG9naWMKCnZvaWQgCmRhdGFiYXNlOjpzZXRfZmlsZW5hbWUoZnM6OnBhdGggY29uc3QgJiBm
aWxlKQp7CiAgaWYgKF9fc3FsKQogICAgewogICAgICB0aHJvdyBvb3BzKCJjYW5ub3QgY2hh
bmdlIGZpbGVuYW1lIHRvICIgKyBmaWxlLnN0cmluZygpICsgIiB3aGlsZSBkYiBpcyBvcGVu
Iik7CiAgICB9CiAgZmlsZW5hbWUgPSBmaWxlOwp9Cgp2b2lkIApkYXRhYmFzZTo6YmVnaW5f
dHJhbnNhY3Rpb24oKSAKewogIGlmICh0cmFuc2FjdGlvbl9sZXZlbCA9PSAwKQogICAgICBl
eGVjdXRlKCJCRUdJTiIpOwogIHRyYW5zYWN0aW9uX2xldmVsKys7Cn0KCnZvaWQgCmRhdGFi
YXNlOjpjb21taXRfdHJhbnNhY3Rpb24oKQp7CiAgaWYgKHRyYW5zYWN0aW9uX2xldmVsID09
IDEpCiAgICBleGVjdXRlKCJDT01NSVQiKTsKICB0cmFuc2FjdGlvbl9sZXZlbC0tOwp9Cgp2
b2lkIApkYXRhYmFzZTo6cm9sbGJhY2tfdHJhbnNhY3Rpb24oKQp7CiAgaWYgKHRyYW5zYWN0
aW9uX2xldmVsID09IDEpCiAgICBleGVjdXRlKCJST0xMQkFDSyIpOwogIHRyYW5zYWN0aW9u
X2xldmVsLS07Cn0KCgpib29sIApkYXRhYmFzZTo6ZXhpc3RzKGhleGVuYzxpZD4gY29uc3Qg
JiBpZGVudCwKICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBjb25zdCAmIHRhYmxlKQp7
CiAgcmVzdWx0cyByZXM7CiAgZmV0Y2gocmVzLCBvbmVfY29sLCBhbnlfcm93cywgCiAgICAg
ICAgIlNFTEVDVCBpZCBGUk9NICclcScgV0hFUkUgaWQgPSAnJXEnIiwKICAgICAgICB0YWJs
ZS5jX3N0cigpLCBpZGVudCgpLmNfc3RyKCkpOwogIEkoKHJlcy5zaXplKCkgPT0gMSkgfHwg
KHJlcy5zaXplKCkgPT0gMCkpOwogIHJldHVybiByZXMuc2l6ZSgpID09IDE7Cn0KCgpib29s
IApkYXRhYmFzZTo6ZGVsdGFfZXhpc3RzKGhleGVuYzxpZD4gY29uc3QgJiBpZGVudCwKICAg
ICAgICAgICAgICAgICAgICAgICBzdHJpbmcgY29uc3QgJiB0YWJsZSkKewogIHJlc3VsdHMg
cmVzOwogIGZldGNoKHJlcywgb25lX2NvbCwgYW55X3Jvd3MsIAogICAgICAgICJTRUxFQ1Qg
aWQgRlJPTSAnJXEnIFdIRVJFIGlkID0gJyVxJyIsCiAgICAgICAgdGFibGUuY19zdHIoKSwg
aWRlbnQoKS5jX3N0cigpKTsKICByZXR1cm4gcmVzLnNpemUoKSA+IDA7Cn0KCmJvb2wgCmRh
dGFiYXNlOjpkZWx0YV9leGlzdHMoaGV4ZW5jPGlkPiBjb25zdCAmIGlkZW50LAogICAgICAg
ICAgICAgICAgICAgICAgIGhleGVuYzxpZD4gY29uc3QgJiBiYXNlLAogICAgICAgICAgICAg
ICAgICAgICAgIHN0cmluZyBjb25zdCAmIHRhYmxlKQp7CiAgcmVzdWx0cyByZXM7CiAgZmV0
Y2gocmVzLCBvbmVfY29sLCBhbnlfcm93cywgCiAgICAgICAgIlNFTEVDVCBpZCBGUk9NICcl
cScgV0hFUkUgaWQgPSAnJXEnIEFORCBiYXNlID0gJyVxJyIsCiAgICAgICAgdGFibGUuY19z
dHIoKSwgaWRlbnQoKS5jX3N0cigpLCBiYXNlKCkuY19zdHIoKSk7CiAgSSgocmVzLnNpemUo
KSA9PSAxKSB8fCAocmVzLnNpemUoKSA9PSAwKSk7CiAgcmV0dXJuIHJlcy5zaXplKCkgPT0g
MTsKfQoKaW50IApkYXRhYmFzZTo6Y291bnQoc3RyaW5nIGNvbnN0ICYgdGFibGUpCnsKICBy
ZXN1bHRzIHJlczsKICBmZXRjaChyZXMsIG9uZV9jb2wsIG9uZV9yb3csIAogICAgICAgICJT
RUxFQ1QgQ09VTlQoKikgRlJPTSAnJXEnIiwgCiAgICAgICAgdGFibGUuY19zdHIoKSk7CiAg
cmV0dXJuIGxleGljYWxfY2FzdDxpbnQ+KHJlc1swXVswXSk7ICAKfQoKdm9pZCAKZGF0YWJh
c2U6OmdldChoZXhlbmM8aWQ+IGNvbnN0ICYgaWRlbnQsCiAgICAgICAgICAgICAgYmFzZTY0
PCBnemlwPGRhdGE+ID4gJiBkYXQsCiAgICAgICAgICAgICAgc3RyaW5nIGNvbnN0ICYgdGFi
bGUpCnsKICByZXN1bHRzIHJlczsKICBmZXRjaChyZXMsIG9uZV9jb2wsIG9uZV9yb3csCiAg
ICAgICAgIlNFTEVDVCBkYXRhIEZST00gJyVxJyBXSEVSRSBpZCA9ICclcSciLCAKICAgICAg
ICB0YWJsZS5jX3N0cigpLCBpZGVudCgpLmNfc3RyKCkpOwoKICAvLyBjb25zaXN0ZW5jeSBj
aGVjawogIGJhc2U2NDxnemlwPGRhdGE+ID4gcmRhdGEocmVzWzBdWzBdKTsKICBoZXhlbmM8
aWQ+IHRpZDsKICBjYWxjdWxhdGVfaWRlbnQocmRhdGEsIHRpZCk7CiAgSSh0aWQgPT0gaWRl
bnQpOwoKICBkYXQgPSByZGF0YTsKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9kZWx0YShoZXhl
bmM8aWQ+IGNvbnN0ICYgaWRlbnQsCiAgICAgICAgICAgICAgICAgICAgaGV4ZW5jPGlkPiBj
b25zdCAmIGJhc2UsCiAgICAgICAgICAgICAgICAgICAgYmFzZTY0PCBnemlwPGRlbHRhPiA+
ICYgZGVsLAogICAgICAgICAgICAgICAgICAgIHN0cmluZyBjb25zdCAmIHRhYmxlKQp7CiAg
SShpZGVudCgpICE9ICIiKTsKICBJKGJhc2UoKSAhPSAiIik7CiAgcmVzdWx0cyByZXM7CiAg
ZmV0Y2gocmVzLCBvbmVfY29sLCBvbmVfcm93LAogICAgICAgICJTRUxFQ1QgZGVsdGEgRlJP
TSAnJXEnIFdIRVJFIGlkID0gJyVxJyBBTkQgYmFzZSA9ICclcSciLCAKICAgICAgICB0YWJs
ZS5jX3N0cigpLCBpZGVudCgpLmNfc3RyKCksIGJhc2UoKS5jX3N0cigpKTsKICBkZWwgPSBy
ZXNbMF1bMF07Cn0KCnZvaWQgCmRhdGFiYXNlOjpwdXQoaGV4ZW5jPGlkPiBjb25zdCAmIGlk
ZW50LAogICAgICAgICAgICAgIGJhc2U2NDwgZ3ppcDxkYXRhPiA+IGNvbnN0ICYgZGF0LAog
ICAgICAgICAgICAgIHN0cmluZyBjb25zdCAmIHRhYmxlKQp7CiAgLy8gY29uc2lzdGVuY3kg
Y2hlY2sKICBJKGlkZW50KCkgIT0gIiIpOwogIGhleGVuYzxpZD4gdGlkOwogIGNhbGN1bGF0
ZV9pZGVudChkYXQsIHRpZCk7CiAgSSh0aWQgPT0gaWRlbnQpOwogIAogIGV4ZWN1dGUoIklO
U0VSVCBJTlRPICclcScgVkFMVUVTKCclcScsICclcScpIiwgCiAgICAgICAgICB0YWJsZS5j
X3N0cigpLCBpZGVudCgpLmNfc3RyKCksIGRhdCgpLmNfc3RyKCkpOwp9CgoKdm9pZCAKZGF0
YWJhc2U6OnB1dF9kZWx0YShoZXhlbmM8aWQ+IGNvbnN0ICYgaWRlbnQsCiAgICAgICAgICAg
ICAgICAgICAgaGV4ZW5jPGlkPiBjb25zdCAmIGJhc2UsCiAgICAgICAgICAgICAgICAgICAg
YmFzZTY0PGd6aXA8ZGVsdGE+ID4gY29uc3QgJiBkZWwsCiAgICAgICAgICAgICAgICAgICAg
c3RyaW5nIGNvbnN0ICYgdGFibGUpCnsKICAvLyBuYjogZGVsdGEgc2NoZW1hIGlzIChpZCwg
YmFzZSwgZGVsdGEpCiAgSShpZGVudCgpICE9ICIiKTsKICBJKGJhc2UoKSAhPSAiIik7CiAg
ZXhlY3V0ZSgiSU5TRVJUIElOVE8gJyVxJyBWQUxVRVMoJyVxJywgJyVxJywgJyVxJykiLCAK
ICAgICAgICAgIHRhYmxlLmNfc3RyKCksIAogICAgICAgICAgaWRlbnQoKS5jX3N0cigpLCBi
YXNlKCkuY19zdHIoKSwgZGVsKCkuY19zdHIoKSk7Cn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRf
dmVyc2lvbihoZXhlbmM8aWQ+IGNvbnN0ICYgaWRlbnQsCiAgICAgICAgICAgICAgICAgICAg
ICBiYXNlNjQ8IGd6aXA8ZGF0YT4gPiAmIGRhdCwKICAgICAgICAgICAgICAgICAgICAgIHN0
cmluZyBjb25zdCAmIGRhdGFfdGFibGUsCiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcg
Y29uc3QgJiBkZWx0YV90YWJsZSkKewogIEkoaWRlbnQoKSAhPSAiIik7CiAgaWYgKGV4aXN0
cyhpZGVudCwgZGF0YV90YWJsZSkpCiAgICB7CiAgICAgIC8vIGVhc3kgcGF0aAogICAgICBn
ZXQoaWRlbnQsIGRhdCwgZGF0YV90YWJsZSk7CiAgICB9CiAgZWxzZQogICAgewogICAgICAv
LyB0cmlja3kgcGF0aAoKICAgICAgLy8gd2Ugc3RhcnQgZnJvbSB0aGUgZmlsZSB3ZSB3YW50
IHRvIHJlY29uc3RydWN0IGFuZCB3b3JrICpmb3J3YXJkcyoKICAgICAgLy8gdGhyb3VnaCB0
aGUgZGF0YWJhc2UsIHVudGlsIHdlIGdldCB0byBhIGZ1bGwgZGF0YSBvYmplY3QuIHdlIHRo
ZW4KICAgICAgLy8gdHJhY2UgYmFjayB0aHJvdWdoIHRoZSBsaXN0IG9mIGVkZ2VzIHdlIGZv
bGxvd2VkIHRvIGdldCB0byB0aGUgZGF0YQogICAgICAvLyBvYmplY3QsIGFwcGx5aW5nIHJl
dmVyc2UgZGVsdGFzLgogICAgICAvLwogICAgICAvLyB0aGUgZWZmZWN0IG9mIHRoaXMgYWxn
b3JpdGhtIGlzIGJyZWFkdGgtZmlyc3Qgc2VhcmNoLCBiYWNrd2FyZHMKICAgICAgLy8gdGhy
b3VnaCB0aGUgc3RvcmFnZSBncmFwaCwgdG8gZGlzY292ZXIgYSBmb3J3YXJkcyBzaG9ydGVz
dCBwYXRoLCBhbmQKICAgICAgLy8gdGhlbiBmb2xsb3dpbmcgdGhhdCBzaG9ydGVzdCBwYXRo
IHdpdGggZGVsdGEgYXBwbGljYXRpb24uCiAgICAgIC8vCiAgICAgIC8vIHdlIHVzZWQgdG8g
ZG8gdGhpcyB3aXRoIHRoZSBib29zdCBncmFwaCBsaWJyYXJ5LCBidXQgaXQgaW52b3ZsZWQK
ICAgICAgLy8gbG9hZGluZyB0b28gbXVjaCBvZiB0aGUgc3RvcmFnZSBncmFwaCBpbnRvIG1l
bW9yeSBhdCBhbnkgbW9tZW50LiB0aGlzCiAgICAgIC8vIGltcGVyYXRpdmUgdmVyc2lvbiBv
bmx5IGxvYWRzIHRoZSBkZXNjZW5kZW50cyBvZiB0aGUgcmVjb25zdHJ1Y3Rpb24KICAgICAg
Ly8gbm9kZSwgc28gaXQgbXVjaCBjaGVhcGVyIGluIHRlcm1zIG9mIG1lbW9yeS4KICAgICAg
Ly8KICAgICAgLy8gd2UgYWxzbyBtYWludGFpbiBhIGN5Y2xlLWRldGVjdGluZyBzZXQsIGp1
c3QgdG8gYmUgc2FmZQogICAgICAKICAgICAgTChGKCJyZWNvbnN0cnVjdGluZyAlcyBpbiAl
c1xuIikgJSBpZGVudCAlIGRlbHRhX3RhYmxlKTsKICAgICAgSShkZWx0YV9leGlzdHMoaWRl
bnQsIGRlbHRhX3RhYmxlKSk7CiAgICAgIAogICAgICAvLyBuYjogYW4gZWRnZSBtYXAgZ29l
cyBpbiB0aGUgZGlyZWN0aW9uIG9mIHRoZQogICAgICAvLyBkZWx0YSwgKm5vdCogdGhlIGRp
cmVjdGlvbiB3ZSBkaXNjb3ZlciB0aGluZ3MgaW4sCiAgICAgIC8vIGkuZS4gZWFjaCBtYXAg
aXMgb2YgdGhlIGZvcm0gW25ld2lkXSAtPiBbb2xkaWRdCgogICAgICB0eXBlZGVmIG1hcDwg
aGV4ZW5jPGlkPiwgaGV4ZW5jPGlkPiA+IGVkZ2VtYXA7CiAgICAgIGxpc3Q8IHNoYXJlZF9w
dHI8ZWRnZW1hcD4gPiBwYXRoczsKCiAgICAgIHNldDwgaGV4ZW5jPGlkPiA+IGZyb250aWVy
LCBjeWNsZXM7CiAgICAgIGZyb250aWVyLmluc2VydChpZGVudCk7CgogICAgICBib29sIGZv
dW5kX3Jvb3QgPSBmYWxzZTsKICAgICAgaGV4ZW5jPGlkPiByb290KCIiKTsKCiAgICAgIHdo
aWxlICghIGZvdW5kX3Jvb3QpCiAgICAgICAgewogICAgICAgICAgc2V0PCBoZXhlbmM8aWQ+
ID4gbmV4dF9mcm9udGllcjsKICAgICAgICAgIHNoYXJlZF9wdHI8ZWRnZW1hcD4gZnJvbnRp
ZXJfbWFwKG5ldyBlZGdlbWFwKCkpOwoKICAgICAgICAgIEkoIWZyb250aWVyLmVtcHR5KCkp
OwoKICAgICAgICAgIGZvciAoc2V0PCBoZXhlbmM8aWQ+ID46OmNvbnN0X2l0ZXJhdG9yIGkg
PSBmcm9udGllci5iZWdpbigpOwogICAgICAgICAgICAgICBpICE9IGZyb250aWVyLmVuZCgp
OyArK2kpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBpZiAoZXhpc3RzKCppLCBkYXRh
X3RhYmxlKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgcm9vdCA9ICpp
OwogICAgICAgICAgICAgICAgICBmb3VuZF9yb290ID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICBjeWNsZXMuaW5zZXJ0KCppKTsKICAgICAg
ICAgICAgICAgICAgcmVzdWx0cyByZXM7CiAgICAgICAgICAgICAgICAgIGZldGNoKHJlcywg
b25lX2NvbCwgYW55X3Jvd3MsICJTRUxFQ1QgYmFzZSBmcm9tICclcScgV0hFUkUgaWQgPSAn
JXEnIiwKICAgICAgICAgICAgICAgICAgICAgICAgZGVsdGFfdGFibGUuY19zdHIoKSwgKCpp
KSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBrID0gMDsgayA8
IHJlcy5zaXplKCk7ICsraykKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgICBoZXhlbmM8aWQ+IGNvbnN0IG54dChyZXNba11bMF0pOwoKICAgICAgICAgICAg
ICAgICAgICAgIGlmIChjeWNsZXMuZmluZChueHQpICE9IGN5Y2xlcy5lbmQoKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgdGhyb3cgb29wcygiY3ljbGUgaW4gdGFibGUgJyIgKyBkZWx0
YV90YWJsZSArICInLCBhdCBub2RlICIgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKyAoKmkpKCkgKyAiIDwtICIgKyBueHQoKSk7CgogICAgICAgICAgICAgICAgICAg
ICAgbmV4dF9mcm9udGllci5pbnNlcnQobnh0KTsKCiAgICAgICAgICAgICAgICAgICAgICBp
ZiAoZnJvbnRpZXJfbWFwLT5maW5kKG54dCkgPT0gZnJvbnRpZXJfbWFwLT5lbmQoKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgIEwoRigi
aW5zZXJ0aW5nIGVkZ2U6ICVzIDwtICVzXG4iKSAlICgqaSkgJSBueHQpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgIGZyb250aWVyX21hcC0+aW5zZXJ0KG1ha2VfcGFpcihueHQsICpp
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICAgICAgICAgTChGKCJza2lwcGluZyBtZXJnZSBlZGdlICVz
IDwtICVzXG4iKSAlICgqaSkgJSBueHQpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgaWYgKCFmb3VuZF9yb290KQog
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgZnJvbnRpZXIgPSBuZXh0X2Zyb250aWVyOwog
ICAgICAgICAgICAgIHBhdGhzLnB1c2hfZnJvbnQoZnJvbnRpZXJfbWFwKTsKICAgICAgICAg
ICAgfQogICAgICAgIH0KCiAgICAgIC8vIHBhdGggYnVpbHQsIG5vdyBhbGwgd2UgbmVlZCB0
byBkbyBpcyBmb2xsb3cgaXQgYmFjawoKICAgICAgSShmb3VuZF9yb290KTsKICAgICAgSShy
b290KCkgIT0gIiIpOwogICAgICBiYXNlNjQ8IGd6aXA8ZGF0YT4gPiBiZWdpbl9wYWNrZWQ7
CiAgICAgIGRhdGEgYmVnaW47ICAgICAgCiAgICAgIGdldChyb290LCBiZWdpbl9wYWNrZWQs
IGRhdGFfdGFibGUpOwogICAgICB1bnBhY2soYmVnaW5fcGFja2VkLCBiZWdpbik7CiAgICAg
IGhleGVuYzxpZD4gY3VyciA9IHJvb3Q7CgogICAgICBib29zdDo6c2hhcmVkX3B0cjxkZWx0
YV9hcHBsaWNhdG9yPiBhcHAgPSBuZXdfcGllY2V3aXNlX2FwcGxpY2F0b3IoKTsKICAgICAg
YXBwLT5iZWdpbihiZWdpbigpKTsKICAgICAgCiAgICAgIGZvciAobGlzdDwgc2hhcmVkX3B0
cjxlZGdlbWFwPiA+Ojpjb25zdF9pdGVyYXRvciBwID0gcGF0aHMuYmVnaW4oKTsKICAgICAg
ICAgICBwICE9IHBhdGhzLmVuZCgpOyArK3ApCiAgICAgICAgewogICAgICAgICAgc2hhcmVk
X3B0cjxlZGdlbWFwPiBpID0gKnA7CiAgICAgICAgICBJKGktPmZpbmQoY3VycikgIT0gaS0+
ZW5kKCkpOwogICAgICAgICAgaGV4ZW5jPGlkPiBjb25zdCBueHQgPSBpLT5maW5kKGN1cnIp
LT5zZWNvbmQ7CgogICAgICAgICAgTChGKCJmb2xsb3dpbmcgZGVsdGEgJXMgLT4gJXNcbiIp
ICUgY3VyciAlIG54dCk7CiAgICAgICAgICBiYXNlNjQ8IGd6aXA8ZGVsdGE+ID4gZGVsX3Bh
Y2tlZDsKICAgICAgICAgIGdldF9kZWx0YShueHQsIGN1cnIsIGRlbF9wYWNrZWQsIGRlbHRh
X3RhYmxlKTsKICAgICAgICAgIGRlbHRhIGRlbDsKICAgICAgICAgIHVucGFjayhkZWxfcGFj
a2VkLCBkZWwpOwogICAgICAgICAgYXBwbHlfZGVsdGEgKGFwcCwgZGVsKCkpOwogICAgICAg
ICAgYXBwLT5uZXh0KCk7CiAgICAgICAgICBjdXJyID0gbnh0OwogICAgICAgIH0KCiAgICAg
IHN0cmluZyB0bXA7CiAgICAgIGFwcC0+ZmluaXNoKHRtcCk7CiAgICAgIGRhdGEgZW5kKHRt
cCk7CgogICAgICBoZXhlbmM8aWQ+IGZpbmFsOwogICAgICBjYWxjdWxhdGVfaWRlbnQoZW5k
LCBmaW5hbCk7CiAgICAgIEkoZmluYWwgPT0gaWRlbnQpOwogICAgICBwYWNrKGVuZCwgZGF0
KTsKICAgIH0KfQoKCnZvaWQgCmRhdGFiYXNlOjpkcm9wKGhleGVuYzxpZD4gY29uc3QgJiBp
ZGVudCwgCiAgICAgICAgICAgICAgIHN0cmluZyBjb25zdCAmIHRhYmxlKQp7CiAgZXhlY3V0
ZSgiREVMRVRFIEZST00gJyVxJyBXSEVSRSBpZCA9ICclcSciLCAgCiAgICAgICAgICB0YWJs
ZS5jX3N0cigpLAogICAgICAgICAgaWRlbnQoKS5jX3N0cigpKTsKfQoKdm9pZCAKZGF0YWJh
c2U6OnB1dF92ZXJzaW9uKGhleGVuYzxpZD4gY29uc3QgJiBvbGRfaWQsCiAgICAgICAgICAg
ICAgICAgICAgICBoZXhlbmM8aWQ+IGNvbnN0ICYgbmV3X2lkLAogICAgICAgICAgICAgICAg
ICAgICAgYmFzZTY0PCBnemlwPGRlbHRhPiA+IGNvbnN0ICYgZGVsLAogICAgICAgICAgICAg
ICAgICAgICAgc3RyaW5nIGNvbnN0ICYgZGF0YV90YWJsZSwKICAgICAgICAgICAgICAgICAg
ICAgIHN0cmluZyBjb25zdCAmIGRlbHRhX3RhYmxlKQp7CgogIGJhc2U2NDwgZ3ppcDxkYXRh
PiA+IG9sZF9kYXRhLCBuZXdfZGF0YTsKICBiYXNlNjQ8IGd6aXA8ZGVsdGE+ID4gcmV2ZXJz
ZV9kZWx0YTsKICAKICBnZXRfdmVyc2lvbihvbGRfaWQsIG9sZF9kYXRhLCBkYXRhX3RhYmxl
LCBkZWx0YV90YWJsZSk7CiAgcGF0Y2gob2xkX2RhdGEsIGRlbCwgbmV3X2RhdGEpOwogIGRp
ZmYobmV3X2RhdGEsIG9sZF9kYXRhLCByZXZlcnNlX2RlbHRhKTsKICAgICAgCiAgdHJhbnNh
Y3Rpb25fZ3VhcmQgZ3VhcmQoKnRoaXMpOwogIGlmIChleGlzdHMob2xkX2lkLCBkYXRhX3Rh
YmxlKSkKICAgIHsKICAgICAgLy8gZGVzY2VuZGVudCBvZiBhIGhlYWQgdmVyc2lvbiByZXBs
YWNlcyB0aGUgaGVhZCwgdGhlcmVmb3JlIG9sZCBoZWFkCiAgICAgIC8vIG11c3QgYmUgZGlz
cG9zZWQgb2YKICAgICAgZHJvcChvbGRfaWQsIGRhdGFfdGFibGUpOwogICAgfQogIHB1dChu
ZXdfaWQsIG5ld19kYXRhLCBkYXRhX3RhYmxlKTsKICBwdXRfZGVsdGEob2xkX2lkLCBuZXdf
aWQsIHJldmVyc2VfZGVsdGEsIGRlbHRhX3RhYmxlKTsKICBndWFyZC5jb21taXQoKTsKfQoK
dm9pZCAKZGF0YWJhc2U6OnB1dF9yZXZlcnNlX3ZlcnNpb24oaGV4ZW5jPGlkPiBjb25zdCAm
IG5ld19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGV4ZW5jPGlkPiBjb25z
dCAmIG9sZF9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0PCBnemlw
PGRlbHRhPiA+IGNvbnN0ICYgcmV2ZXJzZV9kZWwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cmluZyBjb25zdCAmIGRhdGFfdGFibGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cmluZyBjb25zdCAmIGRlbHRhX3RhYmxlKQp7CiAgYmFzZTY0PCBnemlw
PGRhdGE+ID4gb2xkX2RhdGEsIG5ld19kYXRhOwogIAogIGdldF92ZXJzaW9uKG5ld19pZCwg
bmV3X2RhdGEsIGRhdGFfdGFibGUsIGRlbHRhX3RhYmxlKTsKICBwYXRjaChuZXdfZGF0YSwg
cmV2ZXJzZV9kZWwsIG9sZF9kYXRhKTsKICBoZXhlbmM8aWQ+IGNoZWNrOwogIGNhbGN1bGF0
ZV9pZGVudChvbGRfZGF0YSwgY2hlY2spOwogIEkob2xkX2lkID09IGNoZWNrKTsKICAgICAg
CiAgdHJhbnNhY3Rpb25fZ3VhcmQgZ3VhcmQoKnRoaXMpOwogIHB1dF9kZWx0YShvbGRfaWQs
IG5ld19pZCwgcmV2ZXJzZV9kZWwsIGRlbHRhX3RhYmxlKTsKICBndWFyZC5jb21taXQoKTsK
fQoKCgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLy8gLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC0tCi8vIC0tICAgICAgICAgICAgICBwdWJsaWMgaW50
ZXJmYWNlIGZvbGxvd3MgICAgICAgICAgICAgICAgICAtLQovLyAtLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Cgpib29sIApkYXRhYmFzZTo6ZmlsZV92ZXJzaW9uX2V4aXN0cyhmaWxlX2lkIGNvbnN0ICYg
aWQpCnsKICByZXR1cm4gZGVsdGFfZXhpc3RzKGlkLmlubmVyKCksICJmaWxlX2RlbHRhcyIp
IAogICAgfHwgZXhpc3RzKGlkLmlubmVyKCksICJmaWxlcyIpOwp9Cgpib29sIApkYXRhYmFz
ZTo6bWFuaWZlc3RfdmVyc2lvbl9leGlzdHMobWFuaWZlc3RfaWQgY29uc3QgJiBpZCkKewog
IHJldHVybiBkZWx0YV9leGlzdHMoaWQuaW5uZXIoKSwgIm1hbmlmZXN0X2RlbHRhcyIpIAog
ICAgfHwgZXhpc3RzKGlkLmlubmVyKCksICJtYW5pZmVzdHMiKTsKfQoKYm9vbCAKZGF0YWJh
c2U6OnJldmlzaW9uX2V4aXN0cyhyZXZpc2lvbl9pZCBjb25zdCAmIGlkKQp7CiAgcmV0dXJu
IGV4aXN0cyhpZC5pbm5lcigpLCAicmV2aXNpb25zIik7Cn0KCgp2b2lkIApkYXRhYmFzZTo6
Z2V0X2ZpbGVfdmVyc2lvbihmaWxlX2lkIGNvbnN0ICYgaWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZpbGVfZGF0YSAmIGRhdCkKewogIGJhc2U2NDwgZ3ppcDxkYXRhPiA+IHRt
cDsKICBnZXRfdmVyc2lvbihpZC5pbm5lcigpLCB0bXAsICJmaWxlcyIsICJmaWxlX2RlbHRh
cyIpOwogIGRhdCA9IHRtcDsKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9tYW5pZmVzdF92ZXJz
aW9uKG1hbmlmZXN0X2lkIGNvbnN0ICYgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtYW5pZmVzdF9kYXRhICYgZGF0KQp7CiAgYmFzZTY0PCBnemlwPGRhdGE+ID4gdG1w
OwogIGdldF92ZXJzaW9uKGlkLmlubmVyKCksIHRtcCwgIm1hbmlmZXN0cyIsICJtYW5pZmVz
dF9kZWx0YXMiKTsKICBkYXQgPSB0bXA7Cn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRfbWFuaWZl
c3QobWFuaWZlc3RfaWQgY29uc3QgJiBpZCwKICAgICAgICAgICAgICAgICAgICAgICBtYW5p
ZmVzdF9tYXAgJiBtbSkKewogIG1hbmlmZXN0X2RhdGEgbWRhdDsKICBnZXRfbWFuaWZlc3Rf
dmVyc2lvbihpZCwgbWRhdCk7CiAgcmVhZF9tYW5pZmVzdF9tYXAobWRhdCwgbW0pOwp9CgoK
dm9pZCAKZGF0YWJhc2U6OnB1dF9maWxlKGZpbGVfaWQgY29uc3QgJiBpZCwKICAgICAgICAg
ICAgICAgICAgIGZpbGVfZGF0YSBjb25zdCAmIGRhdCkKewogIHB1dChpZC5pbm5lcigpLCBk
YXQuaW5uZXIoKSwgImZpbGVzIik7Cn0KCnZvaWQgCmRhdGFiYXNlOjpwdXRfZmlsZV92ZXJz
aW9uKGZpbGVfaWQgY29uc3QgJiBvbGRfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZpbGVfaWQgY29uc3QgJiBuZXdfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZp
bGVfZGVsdGEgY29uc3QgJiBkZWwpCnsKICBwdXRfdmVyc2lvbihvbGRfaWQuaW5uZXIoKSwg
bmV3X2lkLmlubmVyKCksIGRlbC5pbm5lcigpLCAKICAgICAgICAgICAgICAiZmlsZXMiLCAi
ZmlsZV9kZWx0YXMiKTsKfQoKdm9pZCAKZGF0YWJhc2U6OnB1dF9maWxlX3JldmVyc2VfdmVy
c2lvbihmaWxlX2lkIGNvbnN0ICYgbmV3X2lkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZpbGVfaWQgY29uc3QgJiBvbGRfaWQsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9k
ZWx0YSBjb25zdCAmIGRlbCkKewogIHB1dF9yZXZlcnNlX3ZlcnNpb24obmV3X2lkLmlubmVy
KCksIG9sZF9pZC5pbm5lcigpLCBkZWwuaW5uZXIoKSwgCiAgICAgICAgICAgICAgICAgICAg
ICAiZmlsZXMiLCAiZmlsZV9kZWx0YXMiKTsKfQoKCnZvaWQgCmRhdGFiYXNlOjpwdXRfbWFu
aWZlc3QobWFuaWZlc3RfaWQgY29uc3QgJiBpZCwKICAgICAgICAgICAgICAgICAgICAgICBt
YW5pZmVzdF9kYXRhIGNvbnN0ICYgZGF0KQp7CiAgcHV0KGlkLmlubmVyKCksIGRhdC5pbm5l
cigpLCAibWFuaWZlc3RzIik7Cn0KCnZvaWQgCmRhdGFiYXNlOjpwdXRfbWFuaWZlc3RfdmVy
c2lvbihtYW5pZmVzdF9pZCBjb25zdCAmIG9sZF9pZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hbmlmZXN0X2lkIGNvbnN0ICYgbmV3X2lkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWFuaWZlc3RfZGVsdGEgY29uc3QgJiBkZWwpCnsKICBwdXRfdmVy
c2lvbihvbGRfaWQuaW5uZXIoKSwgbmV3X2lkLmlubmVyKCksIGRlbC5pbm5lcigpLCAKICAg
ICAgICAgICAgICAibWFuaWZlc3RzIiwgIm1hbmlmZXN0X2RlbHRhcyIpOwp9Cgp2b2lkIApk
YXRhYmFzZTo6cHV0X21hbmlmZXN0X3JldmVyc2VfdmVyc2lvbihtYW5pZmVzdF9pZCBjb25z
dCAmIG5ld19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFu
aWZlc3RfaWQgY29uc3QgJiBvbGRfaWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X2Rl
bHRhIGNvbnN0ICYgZGVsKQp7CiAgcHV0X3JldmVyc2VfdmVyc2lvbihuZXdfaWQuaW5uZXIo
KSwgb2xkX2lkLmlubmVyKCksIGRlbC5pbm5lcigpLCAKICAgICAgICAgICAgICAgICAgICAg
ICJtYW5pZmVzdHMiLCAibWFuaWZlc3RfZGVsdGFzIik7Cn0KCgp2b2lkIApkYXRhYmFzZTo6
Z2V0X3JldmlzaW9uX2FuY2VzdHJ5KHN0ZDo6c2V0PHN0ZDo6cGFpcjxyZXZpc2lvbl9pZCwg
cmV2aXNpb25faWQ+ID4gJiBncmFwaCkKewogIHJlc3VsdHMgcmVzOwogIGdyYXBoLmNsZWFy
KCk7CiAgZmV0Y2gocmVzLCAyLCBhbnlfcm93cywgCiAgICAgICAgIlNFTEVDVCBwYXJlbnQs
Y2hpbGQgRlJPTSByZXZpc2lvbl9hbmNlc3RyeSIpOwogIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcmVzLnNpemUoKTsgKytpKQogICAgZ3JhcGguaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKHJl
dmlzaW9uX2lkKHJlc1tpXVswXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV2aXNpb25faWQocmVzW2ldWzFdKSkpOwp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X3Jldmlz
aW9uX3BhcmVudHMocmV2aXNpb25faWQgY29uc3QgJiBpZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0PHJldmlzaW9uX2lkPiAmIHBhcmVudHMpCnsKICByZXN1bHRzIHJl
czsKICBwYXJlbnRzLmNsZWFyKCk7CiAgZmV0Y2gocmVzLCBvbmVfY29sLCBhbnlfcm93cywg
CiAgICAgICAgIlNFTEVDVCBwYXJlbnQgRlJPTSByZXZpc2lvbl9hbmNlc3RyeSBXSEVSRSBj
aGlsZCA9ICclcSciLAogICAgICAgIGlkLmlubmVyKCkoKS5jX3N0cigpKTsKICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHJlcy5zaXplKCk7ICsraSkKICAgIHBhcmVudHMuaW5zZXJ0KHJl
dmlzaW9uX2lkKHJlc1tpXVswXSkpOwp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X3JldmlzaW9u
X2NoaWxkcmVuKHJldmlzaW9uX2lkIGNvbnN0ICYgaWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0PHJldmlzaW9uX2lkPiAmIGNoaWxkcmVuKQp7CiAgcmVzdWx0cyBy
ZXM7CiAgY2hpbGRyZW4uY2xlYXIoKTsKICBmZXRjaChyZXMsIG9uZV9jb2wsIGFueV9yb3dz
LCAKICAgICAgICAiU0VMRUNUIGNoaWxkIEZST00gcmV2aXNpb25fYW5jZXN0cnkgV0hFUkUg
cGFyZW50ID0gJyVxJyIsCiAgICAgICAgaWQuaW5uZXIoKSgpLmNfc3RyKCkpOwogIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcmVzLnNpemUoKTsgKytpKQogICAgY2hpbGRyZW4uaW5zZXJ0
KHJldmlzaW9uX2lkKHJlc1tpXVswXSkpOwp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X3Jldmlz
aW9uX21hbmlmZXN0KHJldmlzaW9uX2lkIGNvbnN0ICYgcmlkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWFuaWZlc3RfaWQgJiBtaWQpCnsKICByZXZpc2lvbl9zZXQgcmV2
OwogIGdldF9yZXZpc2lvbihyaWQsIHJldik7CiAgbWlkID0gcmV2Lm5ld19tYW5pZmVzdDsK
fQoKdm9pZCAKZGF0YWJhc2U6OmdldF9yZXZpc2lvbihyZXZpc2lvbl9pZCBjb25zdCAmIGlk
LAogICAgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uX3NldCAmIHJldikKewogIHJldmlz
aW9uX2RhdGEgZDsKICBnZXRfcmV2aXNpb24oaWQsIGQpOwogIHJlYWRfcmV2aXNpb25fc2V0
KGQsIHJldik7Cn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRfcmV2aXNpb24ocmV2aXNpb25faWQg
Y29uc3QgJiBpZCwKICAgICAgICAgICAgICAgICAgICAgICByZXZpc2lvbl9kYXRhICYgZGF0
KQp7CiAgcmVzdWx0cyByZXM7CiAgZmV0Y2gocmVzLCBvbmVfY29sLCBvbmVfcm93LCAKICAg
ICAgICAiU0VMRUNUIGRhdGEgRlJPTSByZXZpc2lvbnMgV0hFUkUgaWQgPSAnJXEnIiwKICAg
ICAgICBpZC5pbm5lcigpKCkuY19zdHIoKSk7CgogIGRhdCA9IHJldmlzaW9uX2RhdGEocmVz
WzBdWzBdKTsKCiAgLy8gdmVyaWZ5IHRoYXQgd2UgZ290IGEgcmV2aXNpb24gd2l0aCB0aGUg
cmlnaHQgaWQKICB7CiAgICByZXZpc2lvbl9pZCB0bXA7CiAgICBjYWxjdWxhdGVfaWRlbnQo
ZGF0LCB0bXApOwogICAgSShpZCA9PSB0bXApOwogIH0KfQoKdm9pZCAKZGF0YWJhc2U6OnB1
dF9yZXZpc2lvbihyZXZpc2lvbl9pZCBjb25zdCAmIG5ld19pZCwKICAgICAgICAgICAgICAg
ICAgICAgICByZXZpc2lvbl9zZXQgY29uc3QgJiByZXYpCnsKCiAgSSghcmV2aXNpb25fZXhp
c3RzKG5ld19pZCkpOwogIHJldmlzaW9uX2RhdGEgZDsKCiAgd3JpdGVfcmV2aXNpb25fc2V0
KHJldiwgZCk7CiAgcmV2aXNpb25faWQgdG1wOwogIGNhbGN1bGF0ZV9pZGVudChkLCB0bXAp
OwogIEkodG1wID09IG5ld19pZCk7CgogIHRyYW5zYWN0aW9uX2d1YXJkIGd1YXJkKCp0aGlz
KTsKCiAgZXhlY3V0ZSgiSU5TRVJUIElOVE8gcmV2aXNpb25zIFZBTFVFUygnJXEnLCAnJXEn
KSIsIAogICAgICAgICAgbmV3X2lkLmlubmVyKCkoKS5jX3N0cigpLCAKICAgICAgICAgIGQu
aW5uZXIoKSgpLmNfc3RyKCkpOwoKICBmb3IgKGVkZ2VfbWFwOjpjb25zdF9pdGVyYXRvciBl
ID0gcmV2LmVkZ2VzLmJlZ2luKCk7CiAgICAgICBlICE9IHJldi5lZGdlcy5lbmQoKTsgKytl
KQogICAgewogICAgICBleGVjdXRlKCJJTlNFUlQgSU5UTyByZXZpc2lvbl9hbmNlc3RyeSBW
QUxVRVMoJyVxJywgJyVxJykiLCAKICAgICAgICAgICAgICBlZGdlX29sZF9yZXZpc2lvbihl
KS5pbm5lcigpKCkuY19zdHIoKSwKICAgICAgICAgICAgICBuZXdfaWQuaW5uZXIoKSgpLmNf
c3RyKCkpOwogICAgfQoKICBndWFyZC5jb21taXQoKTsKfQoKdm9pZCAKZGF0YWJhc2U6OnB1
dF9yZXZpc2lvbihyZXZpc2lvbl9pZCBjb25zdCAmIG5ld19pZCwKICAgICAgICAgICAgICAg
ICAgICAgICByZXZpc2lvbl9kYXRhIGNvbnN0ICYgZGF0KQp7CiAgcmV2aXNpb25fc2V0IHJl
djsKICByZWFkX3JldmlzaW9uX3NldChkYXQsIHJldik7CiAgcHV0X3JldmlzaW9uKG5ld19p
ZCwgcmV2KTsKfQoKCi8vIGNyeXB0byBrZXkgbWFuYWdlbWVudAoKdm9pZCAKZGF0YWJhc2U6
OmdldF9rZXlfaWRzKHN0cmluZyBjb25zdCAmIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAg
ICAgICB2ZWN0b3I8cnNhX2tleXBhaXJfaWQ+ICYgcHVia2V5cywKICAgICAgICAgICAgICAg
ICAgICAgIHZlY3Rvcjxyc2Ffa2V5cGFpcl9pZD4gJiBwcml2a2V5cykKewogIHB1YmtleXMu
Y2xlYXIoKTsKICBwcml2a2V5cy5jbGVhcigpOwogIHJlc3VsdHMgcmVzOwoKICBpZiAocGF0
dGVybiAhPSAiIikKICAgIGZldGNoKHJlcywgb25lX2NvbCwgYW55X3Jvd3MsIAogICAgICAg
ICAgIlNFTEVDVCBpZCBmcm9tIHB1YmxpY19rZXlzIFdIRVJFIGlkIEdMT0IgJyVxJyIsCiAg
ICAgICAgICBwYXR0ZXJuLmNfc3RyKCkpOwogIGVsc2UKICAgIGZldGNoKHJlcywgb25lX2Nv
bCwgYW55X3Jvd3MsIAogICAgICAgICAgIlNFTEVDVCBpZCBmcm9tIHB1YmxpY19rZXlzIik7
CgogIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzLnNpemUoKTsgKytpKQogICAgcHVia2V5
cy5wdXNoX2JhY2socmVzW2ldWzBdKTsKCiAgaWYgKHBhdHRlcm4gIT0gIiIpCiAgICBmZXRj
aChyZXMsIG9uZV9jb2wsIGFueV9yb3dzLCAKICAgICAgICAgICJTRUxFQ1QgaWQgZnJvbSBw
cml2YXRlX2tleXMgV0hFUkUgaWQgR0xPQiAnJXEnIiwKICAgICAgICAgIHBhdHRlcm4uY19z
dHIoKSk7CiAgZWxzZQogICAgZmV0Y2gocmVzLCBvbmVfY29sLCBhbnlfcm93cywgCiAgICAg
ICAgICAiU0VMRUNUIGlkIGZyb20gcHJpdmF0ZV9rZXlzIik7CgogIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcmVzLnNpemUoKTsgKytpKQogICAgcHJpdmtleXMucHVzaF9iYWNrKHJlc1tp
XVswXSk7Cn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRfcHJpdmF0ZV9rZXlzKHZlY3Rvcjxyc2Ff
a2V5cGFpcl9pZD4gJiBwcml2a2V5cykKewogIHByaXZrZXlzLmNsZWFyKCk7CiAgcmVzdWx0
cyByZXM7CiAgZmV0Y2gocmVzLCBvbmVfY29sLCBhbnlfcm93cywgICJTRUxFQ1QgaWQgZnJv
bSBwcml2YXRlX2tleXMiKTsKICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlcy5zaXplKCk7
ICsraSkKICAgIHByaXZrZXlzLnB1c2hfYmFjayhyZXNbaV1bMF0pOwp9Cgpib29sIApkYXRh
YmFzZTo6cHVibGljX2tleV9leGlzdHMoaGV4ZW5jPGlkPiBjb25zdCAmIGhhc2gpCnsKICBy
ZXN1bHRzIHJlczsKICBmZXRjaChyZXMsIG9uZV9jb2wsIGFueV9yb3dzLCAKICAgICAgICAi
U0VMRUNUIGlkIEZST00gcHVibGljX2tleXMgV0hFUkUgaGFzaCA9ICclcSciLAogICAgICAg
IGhhc2goKS5jX3N0cigpKTsKICBJKChyZXMuc2l6ZSgpID09IDEpIHx8IChyZXMuc2l6ZSgp
ID09IDApKTsKICBpZiAocmVzLnNpemUoKSA9PSAxKSAKICAgIHJldHVybiB0cnVlOwogIHJl
dHVybiBmYWxzZTsKfQoKYm9vbCAKZGF0YWJhc2U6OnB1YmxpY19rZXlfZXhpc3RzKHJzYV9r
ZXlwYWlyX2lkIGNvbnN0ICYgaWQpCnsKICByZXN1bHRzIHJlczsKICBmZXRjaChyZXMsIG9u
ZV9jb2wsIGFueV9yb3dzLCAKICAgICAgICAiU0VMRUNUIGlkIEZST00gcHVibGljX2tleXMg
V0hFUkUgaWQgPSAnJXEnIiwKICAgICAgICBpZCgpLmNfc3RyKCkpOwogIEkoKHJlcy5zaXpl
KCkgPT0gMSkgfHwgKHJlcy5zaXplKCkgPT0gMCkpOwogIGlmIChyZXMuc2l6ZSgpID09IDEp
IAogICAgcmV0dXJuIHRydWU7CiAgcmV0dXJuIGZhbHNlOwp9Cgpib29sIApkYXRhYmFzZTo6
cHJpdmF0ZV9rZXlfZXhpc3RzKHJzYV9rZXlwYWlyX2lkIGNvbnN0ICYgaWQpCnsKICByZXN1
bHRzIHJlczsKICBmZXRjaChyZXMsIG9uZV9jb2wsIGFueV9yb3dzLAogICAgICAgICJTRUxF
Q1QgaWQgRlJPTSBwcml2YXRlX2tleXMgV0hFUkUgaWQgPSAnJXEnIiwKICAgICAgICBpZCgp
LmNfc3RyKCkpOwogIEkoKHJlcy5zaXplKCkgPT0gMSkgfHwgKHJlcy5zaXplKCkgPT0gMCkp
OwogIGlmIChyZXMuc2l6ZSgpID09IDEpCiAgICByZXR1cm4gdHJ1ZTsKICByZXR1cm4gZmFs
c2U7Cn0KCmJvb2wgCmRhdGFiYXNlOjprZXlfZXhpc3RzKHJzYV9rZXlwYWlyX2lkIGNvbnN0
ICYgaWQpCnsKICByZXR1cm4gcHVibGljX2tleV9leGlzdHMoaWQpIHx8IHByaXZhdGVfa2V5
X2V4aXN0cyhpZCk7Cn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRfcHVia2V5KGhleGVuYzxpZD4g
Y29uc3QgJiBoYXNoLCAKICAgICAgICAgICAgICAgICAgICAgcnNhX2tleXBhaXJfaWQgJiBp
ZCwKICAgICAgICAgICAgICAgICAgICAgYmFzZTY0PHJzYV9wdWJfa2V5PiAmIHB1Yl9lbmNv
ZGVkKQp7CiAgcmVzdWx0cyByZXM7CiAgZmV0Y2gocmVzLCAyLCBvbmVfcm93LCAKICAgICAg
ICAiU0VMRUNUIGlkLCBrZXlkYXRhIEZST00gcHVibGljX2tleXMgd2hlcmUgaGFzaCA9ICcl
cSciLCAKICAgICAgICBoYXNoKCkuY19zdHIoKSk7CiAgaWQgPSByZXNbMF1bMF07CiAgcHVi
X2VuY29kZWQgPSByZXNbMF1bMV07Cn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRfa2V5KHJzYV9r
ZXlwYWlyX2lkIGNvbnN0ICYgcHViX2lkLCAKICAgICAgICAgICAgICAgICAgYmFzZTY0PHJz
YV9wdWJfa2V5PiAmIHB1Yl9lbmNvZGVkKQp7CiAgcmVzdWx0cyByZXM7CiAgZmV0Y2gocmVz
LCBvbmVfY29sLCBvbmVfcm93LCAKICAgICAgICAiU0VMRUNUIGtleWRhdGEgRlJPTSBwdWJs
aWNfa2V5cyB3aGVyZSBpZCA9ICclcSciLCAKICAgICAgICBwdWJfaWQoKS5jX3N0cigpKTsK
ICBwdWJfZW5jb2RlZCA9IHJlc1swXVswXTsKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9rZXko
cnNhX2tleXBhaXJfaWQgY29uc3QgJiBwcml2X2lkLCAKICAgICAgICAgICAgICAgICAgYmFz
ZTY0PCBhcmM0PHJzYV9wcml2X2tleT4gPiAmIHByaXZfZW5jb2RlZCkKewogIHJlc3VsdHMg
cmVzOwogIGZldGNoKHJlcywgb25lX2NvbCwgb25lX2NvbCwgCiAgICAgICAgIlNFTEVDVCBr
ZXlkYXRhIEZST00gcHJpdmF0ZV9rZXlzIHdoZXJlIGlkID0gJyVxJyIsIAogICAgICAgIHBy
aXZfaWQoKS5jX3N0cigpKTsKICBwcml2X2VuY29kZWQgPSByZXNbMF1bMF07Cn0KCgp2b2lk
IApkYXRhYmFzZTo6cHV0X2tleShyc2Ffa2V5cGFpcl9pZCBjb25zdCAmIHB1Yl9pZCwgCiAg
ICAgICAgICAgICAgICAgIGJhc2U2NDxyc2FfcHViX2tleT4gY29uc3QgJiBwdWJfZW5jb2Rl
ZCkKewogIGhleGVuYzxpZD4gdGhhc2g7CiAga2V5X2hhc2hfY29kZShwdWJfaWQsIHB1Yl9l
bmNvZGVkLCB0aGFzaCk7CiAgZXhlY3V0ZSgiSU5TRVJUIElOVE8gcHVibGljX2tleXMgVkFM
VUVTKCclcScsICclcScsICclcScpIiwgCiAgICAgICAgICB0aGFzaCgpLmNfc3RyKCksIHB1
Yl9pZCgpLmNfc3RyKCksIHB1Yl9lbmNvZGVkKCkuY19zdHIoKSk7Cn0KCnZvaWQgCmRhdGFi
YXNlOjpwdXRfa2V5KHJzYV9rZXlwYWlyX2lkIGNvbnN0ICYgcHJpdl9pZCwgCiAgICAgICAg
ICAgICAgICAgIGJhc2U2NDwgYXJjNDxyc2FfcHJpdl9rZXk+ID4gY29uc3QgJiBwcml2X2Vu
Y29kZWQpCnsKICAKICBoZXhlbmM8aWQ+IHRoYXNoOwogIGtleV9oYXNoX2NvZGUocHJpdl9p
ZCwgcHJpdl9lbmNvZGVkLCB0aGFzaCk7CiAgZXhlY3V0ZSgiSU5TRVJUIElOVE8gcHJpdmF0
ZV9rZXlzIFZBTFVFUygnJXEnLCAnJXEnLCAnJXEnKSIsIAogICAgICAgICAgdGhhc2goKS5j
X3N0cigpLCBwcml2X2lkKCkuY19zdHIoKSwgcHJpdl9lbmNvZGVkKCkuY19zdHIoKSk7Cn0K
CnZvaWQgCmRhdGFiYXNlOjpwdXRfa2V5X3BhaXIocnNhX2tleXBhaXJfaWQgY29uc3QgJiBp
ZCwgCiAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0PHJzYV9wdWJfa2V5PiBjb25zdCAm
IHB1Yl9lbmNvZGVkLAogICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NDwgYXJjNDxyc2Ff
cHJpdl9rZXk+ID4gY29uc3QgJiBwcml2X2VuY29kZWQpCnsKICB0cmFuc2FjdGlvbl9ndWFy
ZCBndWFyZCgqdGhpcyk7CiAgcHV0X2tleShpZCwgcHViX2VuY29kZWQpOwogIHB1dF9rZXko
aWQsIHByaXZfZW5jb2RlZCk7CiAgZ3VhcmQuY29tbWl0KCk7Cn0KCgovLyBjZXJ0IG1hbmFn
ZW1lbnQKCmJvb2wgCmRhdGFiYXNlOjpjZXJ0X2V4aXN0cyhjZXJ0IGNvbnN0ICYgdCwKICAg
ICAgICAgICAgICAgICAgICAgIHN0cmluZyBjb25zdCAmIHRhYmxlKQp7CiAgcmVzdWx0cyBy
ZXM7CiAgZmV0Y2gocmVzLCAxLCBhbnlfcm93cywKICAgICAgICAiU0VMRUNUIGlkIEZST00g
JyVxJyBXSEVSRSBpZCA9ICclcScgIgogICAgICAgICJBTkQgbmFtZSA9ICclcScgQU5EIHZh
bHVlID0gJyVxJyAiIAogICAgICAgICJBTkQga2V5cGFpciA9ICclcScgQU5EIHNpZ25hdHVy
ZSA9ICclcScgIiwKICAgICAgICB0YWJsZS5jX3N0cigpLAogICAgICAgIHQuaWRlbnQoKS5j
X3N0cigpLAogICAgICAgIHQubmFtZSgpLmNfc3RyKCksCiAgICAgICAgdC52YWx1ZSgpLmNf
c3RyKCksCiAgICAgICAgdC5rZXkoKS5jX3N0cigpLAogICAgICAgIHQuc2lnKCkuY19zdHIo
KSk7CiAgSShyZXMuc2l6ZSgpID09IDAgfHwgcmVzLnNpemUoKSA9PSAxKTsKICByZXR1cm4g
cmVzLnNpemUoKSA9PSAxOwp9Cgp2b2lkIApkYXRhYmFzZTo6cHV0X2NlcnQoY2VydCBjb25z
dCAmIHQsCiAgICAgICAgICAgICAgICAgICBzdHJpbmcgY29uc3QgJiB0YWJsZSkKewogIGhl
eGVuYzxpZD4gdGhhc2g7CiAgY2VydF9oYXNoX2NvZGUodCwgdGhhc2gpOwogIGV4ZWN1dGUo
IklOU0VSVCBJTlRPICclcScgVkFMVUVTKCclcScsICclcScsICclcScsICclcScsICclcScs
ICclcScpIiwgCiAgICAgICAgICB0YWJsZS5jX3N0cigpLAogICAgICAgICAgdGhhc2goKS5j
X3N0cigpLAogICAgICAgICAgdC5pZGVudCgpLmNfc3RyKCksCiAgICAgICAgICB0Lm5hbWUo
KS5jX3N0cigpLCAKICAgICAgICAgIHQudmFsdWUoKS5jX3N0cigpLAogICAgICAgICAgdC5r
ZXkoKS5jX3N0cigpLAogICAgICAgICAgdC5zaWcoKS5jX3N0cigpKTsKfQoKdm9pZCAKZGF0
YWJhc2U6OnJlc3VsdHNfdG9fY2VydHMocmVzdWx0cyBjb25zdCAmIHJlcywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmVjdG9yPGNlcnQ+ICYgY2VydHMpCnsKICBjZXJ0cy5jbGVh
cigpOwogIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzLnNpemUoKTsgKytpKQogICAgewog
ICAgICBjZXJ0IHQ7CiAgICAgIHQgPSBjZXJ0KGhleGVuYzxpZD4ocmVzW2ldWzBdKSwgCiAg
ICAgICAgICAgICAgY2VydF9uYW1lKHJlc1tpXVsxXSksCiAgICAgICAgICAgICAgYmFzZTY0
PGNlcnRfdmFsdWU+KHJlc1tpXVsyXSksCiAgICAgICAgICAgICAgcnNhX2tleXBhaXJfaWQo
cmVzW2ldWzNdKSwKICAgICAgICAgICAgICBiYXNlNjQ8cnNhX3NoYTFfc2lnbmF0dXJlPihy
ZXNbaV1bNF0pKTsKICAgICAgY2VydHMucHVzaF9iYWNrKHQpOwogICAgfQp9CgoKc3RydWN0
IHZhbGlkX2NlcnRzCnsKICBzZXQ8cnNhX2tleXBhaXJfaWQ+IHZhbGlkX3NpZ25lcnM7CiAg
aGV4ZW5jPGlkPiBpZGVudDsKICBjZXJ0X25hbWUgbmFtZTsKICBiYXNlNjQ8Y2VydF92YWx1
ZT4gdmFsOwogIHN0cmluZyBzaWduYXR1cmVfdHlwZTsKCiAgdmFsaWRfY2VydHMoc3RyaW5n
IGNvbnN0ICYgdHkpIAogICAgOiBzaWduYXR1cmVfdHlwZSh0eSkgCiAgewogICAgTChGKCJj
b25zdHJ1Y3RpbmcgdmFsaWRpdHkgY2hlY2tlciBmb3IgJXMgY2VydHNcbiIpICUgdHkpOwog
IH0KCiAgYm9vbCBjaGVja19zaWduZXJfdHJ1c3QoYXBwX3N0YXRlICYgYXBwKQogIHsKICAg
IGJvb2wgdHJ1c3RlZCA9IGZhbHNlOwoKICAgIEwoRigiY2hlY2tpbmcgJWQgc2lnbmVyICVz
IGNlcnQgdHJ1c3Qgc2V0XG4iKSAKICAgICAgJSB2YWxpZF9zaWduZXJzLnNpemUoKSAlIHNp
Z25hdHVyZV90eXBlKTsKICAgIHRyeQogICAgICB7CiAgICAgICAgY2VydF92YWx1ZSB2Owog
ICAgICAgIGRlY29kZV9iYXNlNjQodmFsLCB2KTsKICAgICAgICAvLyBGSVhNRTogbGFtZSBz
dHJpbmctbWFrZXMtdGhlLW1vZGUgYXJndW1lbnQKICAgICAgICBpZiAoc2lnbmF0dXJlX3R5
cGUgPT0gInJldmlzaW9uIikKICAgICAgICAgIHRydXN0ZWQgPSBhcHAubHVhLmhvb2tfZ2V0
X3JldmlzaW9uX2NlcnRfdHJ1c3QodmFsaWRfc2lnbmVycywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudCwgbmFtZSwgdik7
CiAgICAgICAgZWxzZSBpZiAoc2lnbmF0dXJlX3R5cGUgPT0gIm1hbmlmZXN0IikKICAgICAg
ICAgIHRydXN0ZWQgPSBhcHAubHVhLmhvb2tfZ2V0X21hbmlmZXN0X2NlcnRfdHJ1c3QodmFs
aWRfc2lnbmVycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWRlbnQsIG5hbWUsIHYpOwogICAgICAgIGVsc2UgaWYgKHNpZ25h
dHVyZV90eXBlID09ICJmaWxlIikKICAgICAgICAgIHRydXN0ZWQgPSBhcHAubHVhLmhvb2tf
Z2V0X2ZpbGVfY2VydF90cnVzdCh2YWxpZF9zaWduZXJzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50LCBuYW1lLCB2KTsKICAg
ICAgICBlbHNlCiAgICAgICAgICBJKGZhbHNlKTsgLy8gc2hvdWxkIGJlIGlsbGVnYWwKICAg
ICAgfQogICAgY2F0Y2ggKC4uLikKICAgICAgewogICAgICAgIFcoRigiZXhjZXB0aW9uIGlu
IHNxbGl0ZSB2YWxpZF9jZXJ0czo6Y2hlY2tfc2V0X3RydXN0XG4iKSk7CiAgICAgIH0KICAg
IAogICAgaWYgKHRydXN0ZWQpCiAgICAgIEwoRigidHJ1c3QgZnVuY3Rpb24gbGlrZWQgJWQg
JXMgc2lnbmVyc1xuIikgCiAgICAgICAgJSB2YWxpZF9zaWduZXJzLnNpemUoKSAlIHNpZ25h
dHVyZV90eXBlKTsKICAgIGVsc2UKICAgICAgTChGKCJ0cnVzdCBmdW5jdGlvbiBkaXNsaWtl
ZCAlZCAlcyBzaWduZXJzXG4iKSAKICAgICAgICAlIHZhbGlkX3NpZ25lcnMuc2l6ZSgpICUg
c2lnbmF0dXJlX3R5cGUpOwogICAgCiAgICByZXR1cm4gdHJ1c3RlZDsKICB9CgogIHZvaWQg
Y2hlY2tfc2luZ2xlX3NpZ25lcihhcHBfc3RhdGUgJiBhcHAsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBhcmdjLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBj
b25zdCAqKiBhcmd2KQogIHsKICAgIHRyeQogICAgICB7CiAgICAgICAgLy8gYXJncyBhcmU6
IGhhc2gsIGlkLCBuYW1lLCB2YWx1ZSwga2V5cGFpciwgcHVia2V5LCBzaWduYXR1cmUKICAg
ICAgICAvLyBMKEYoImVudHJpZXMgYXJlIFslc10gWyVzXSBbJXNdIFslc10gWyVzXSBbJXNd
IFslc11cbiIpIAogICAgICAgIC8vICAgICAgICAlIGFyZ3ZbMF0gJSBhcmd2WzFdICUgYXJn
dlsyXSAlIGFyZ3ZbM10gJSBhcmd2WzRdICUgYXJndls1XSAlIGFyZ3ZbNl0pOwoKICAgICAg
ICBjZXJ0IHRtcCA9IGNlcnQoaGV4ZW5jPGlkPihhcmd2WzFdKSwgCiAgICAgICAgICAgICAg
ICAgICAgICAgIGNlcnRfbmFtZShhcmd2WzJdKSwKICAgICAgICAgICAgICAgICAgICAgICAg
YmFzZTY0PGNlcnRfdmFsdWU+KGFyZ3ZbM10pLAogICAgICAgICAgICAgICAgICAgICAgICBy
c2Ffa2V5cGFpcl9pZChhcmd2WzRdKSwKICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0
PHJzYV9zaGExX3NpZ25hdHVyZT4oYXJndls2XSkpOwoKICAgICAgICBiYXNlNjQ8cnNhX3B1
Yl9rZXk+IHBrKGFyZ3ZbNV0pOwoKICAgICAgICBpZiAoaWRlbnQoKS5lbXB0eSgpKQogICAg
ICAgICAgaWRlbnQgPSB0bXAuaWRlbnQ7CiAgICAgICAgZWxzZQogICAgICAgICAgSShpZGVu
dCA9PSB0bXAuaWRlbnQpOwoKICAgICAgICBpZiAobmFtZSgpLmVtcHR5KCkpCiAgICAgICAg
ICBuYW1lID0gdG1wLm5hbWU7CiAgICAgICAgZWxzZQogICAgICAgICAgSShuYW1lID09IHRt
cC5uYW1lKTsKCiAgICAgICAgaWYgKHZhbCgpLmVtcHR5KCkpCiAgICAgICAgICB2YWwgPSB0
bXAudmFsdWU7CiAgICAgICAgZWxzZQogICAgICAgICAgSSh2YWwgPT0gdG1wLnZhbHVlKTsK
CiAgICAgICAgLy8gICAgICBMKEYoImV4YW1pbmluZyAnJXMnICVzIGNlcnQgZnJvbSAlc1xu
IikgCiAgICAgICAgLy8gICAgICAgICUgbmFtZSAlIHNpZ25hdHVyZV90eXBlICUgaWRlbnQp
OwoKICAgICAgICBzdHJpbmcgdHh0OwogICAgICAgIGNlcnRfc2lnbmFibGVfdGV4dCh0bXAs
IHR4dCk7CiAgICAgICAgaWYgKGNoZWNrX3NpZ25hdHVyZShhcHAubHVhLCB0bXAua2V5LCBw
aywgdHh0LCB0bXAuc2lnKSkKICAgICAgICAgIHsKICAgICAgICAgICAgTChGKCJvayAnJXMn
ICVzIGNlcnQgZnJvbSAlc1xuIikgCiAgICAgICAgICAgICAgJSBuYW1lICUgc2lnbmF0dXJl
X3R5cGUgJSB0bXAua2V5KTsKICAgICAgICAgICAgdmFsaWRfc2lnbmVycy5pbnNlcnQodG1w
LmtleSk7CiAgICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgICAgewogICAgICAgICAg
ICBXKEYoImJhZCAnJXMnICVzIGNlcnQgZnJvbSAlc1xuIikgCiAgICAgICAgICAgICAgJSBu
YW1lICUgc2lnbmF0dXJlX3R5cGUgJSB0bXAua2V5KTsKICAgICAgICAgIH0KICAgICAgfQog
ICAgY2F0Y2ggKHN0ZDo6ZXhjZXB0aW9uICYgZSkKICAgICAgewogICAgICAgIFcoRigic3Rk
OjpleGNlcHRpb24gaW4gc3FsaXRlIHZhbGlkX2NlcnRzOjpjaGVja19zaW5nbGVfc2lnbmVy
OiAlc1xuIikgJSBlLndoYXQoKSk7CiAgICAgIH0KICAgIGNhdGNoICguLi4pCiAgICAgIHsK
ICAgICAgICBXKEYoInVua25vd24gZXhjZXB0aW9uIGluIHNxbGl0ZSB2YWxpZF9jZXJ0czo6
Y2hlY2tfc2luZ2xlX3NpZ25lclxuIikpOwogICAgICB9CiAgfQp9OwoKZXh0ZXJuICJDIgp7
CgpzdGF0aWMgdm9pZAp0cnVzdGVkX3N0ZXBfY2FsbGJhY2soc3FsaXRlX2Z1bmMgKiBmbl9j
dHgsIAogICAgICAgICAgICAgICAgICAgICAgaW50IGFyZ2MsIAogICAgICAgICAgICAgICAg
ICAgICAgY2hhciBjb25zdCAqKiBhcmd2KQp7CiAgYXBwX3N0YXRlICogYXBwID0gTlVMTDsg
CiAgdmFsaWRfY2VydHMgKiogdnBwOwoKICBJKGZuX2N0eCk7CiAgSShhcmdjID09IDgpOwog
IEkoYXJndik7CiAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA4OyArK2kpCiAgICBJKGFyZ3Zb
aV0pOwoKICBhcHAgPSBzdGF0aWNfY2FzdDxhcHBfc3RhdGUgKj4oc3FsaXRlX3VzZXJfZGF0
YShmbl9jdHgpKTsKICBJKGFwcCk7CiAgdnBwID0gc3RhdGljX2Nhc3Q8dmFsaWRfY2VydHMg
Kio+KHNxbGl0ZV9hZ2dyZWdhdGVfY29udGV4dChmbl9jdHgsIHNpemVvZih2YWxpZF9jZXJ0
cyAqKSkpOwogIEkodnBwKTsKICBpZiAoISAoKnZwcCkpCiAgICAqdnBwID0gbmV3IHZhbGlk
X2NlcnRzKHN0cmluZyhhcmd2WzBdKSk7CiAgSSgqdnBwKTsKICAoKnZwcCktPmNoZWNrX3Np
bmdsZV9zaWduZXIoKmFwcCwgYXJnYy0xLCBhcmd2KzEpOyAgCn0KCnN0YXRpYyB2b2lkCnRy
dXN0ZWRfZmluYWxpemVfY2FsbGJhY2soc3FsaXRlX2Z1bmMgKiBmbl9jdHgpCnsKICBhcHBf
c3RhdGUgKiBhcHAgPSBOVUxMOyAKICB2YWxpZF9jZXJ0cyAqKiB2cHA7CiAgYXBwID0gc3Rh
dGljX2Nhc3Q8YXBwX3N0YXRlICo+KHNxbGl0ZV91c2VyX2RhdGEoZm5fY3R4KSk7CiAgSShh
cHApOwogIHZwcCA9IHN0YXRpY19jYXN0PHZhbGlkX2NlcnRzICoqPihzcWxpdGVfYWdncmVn
YXRlX2NvbnRleHQoZm5fY3R4LCBzaXplb2YodmFsaWRfY2VydHMgKikpKTsKCiAgSSh2cHAp
OwogIEkoKnZwcCk7CgogIGlmICgoKnZwcCktPmNoZWNrX3NpZ25lcl90cnVzdCgqYXBwKSkK
ICAgIHNxbGl0ZV9zZXRfcmVzdWx0X2ludChmbl9jdHgsIDEpOwogIGVsc2UKICAgIHNxbGl0
ZV9zZXRfcmVzdWx0X2ludChmbl9jdHgsIDApOwoKICBkZWxldGUgKCp2cHApOwp9Cn0KCgp2
b2lkCmRhdGFiYXNlOjppbnN0YWxsX2Z1bmN0aW9ucyhhcHBfc3RhdGUgKiBhcHApCnsKICAv
LyByZWdpc3RlciBhbnkgZnVuY3Rpb25zIHdlJ3JlIGdvaW5nIHRvIHVzZQogIEkoc3FsaXRl
X2NyZWF0ZV9mdW5jdGlvbihzcWwoKSwgInVuYmFzZTY0IiwgLTEsIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAmc3FsaXRlX3VuYmFzZTY0X2ZuLCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTlVMTCkgPT0gMCk7CgogIEkoc3FsaXRlX2NyZWF0ZV9hZ2dyZWdhdGUoc3Fs
KCksICJ0cnVzdGVkIiwgOCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHJ1c3Rl
ZF9zdGVwX2NhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRydXN0ZWRf
ZmluYWxpemVfY2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHApID09
IDApOwp9Cgp2b2lkCmRhdGFiYXNlOjppbnN0YWxsX3ZpZXdzKCkKewogIC8vIGRlbGV0ZSBh
bnkgZXhpc3Rpbmcgdmlld3MKICByZXN1bHRzIHJlczsKICBmZXRjaChyZXMsIG9uZV9jb2ws
IGFueV9yb3dzLAogICAgICAgICJTRUxFQ1QgbmFtZSBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hF
UkUgdHlwZT0ndmlldyciKTsKICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlcy5zaXplKCk7
ICsraSkKICAgIHsKICAgICAgZXhlY3V0ZSgiRFJPUCBWSUVXICclcSciLCByZXNbaV1bMF0u
Y19zdHIoKSk7CiAgICB9CiAgLy8gcmVnaXN0ZXIgYW55IHZpZXdzIHdlJ3JlIGdvaW5nIHRv
IHVzZQogIGV4ZWN1dGUodmlld3NfY29uc3RhbnQpOwp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0
X2hlYWRzKGJhc2U2NDxjZXJ0X3ZhbHVlPiBjb25zdCAmIGJyYW5jaCwKICAgICAgICAgICAg
ICAgICAgICBzdGQ6OnNldDxyZXZpc2lvbl9pZD4gJiBoZWFkcykKewogIHJlc3VsdHMgcmVz
OwogIGZldGNoKHJlcywgb25lX2NvbCwgYW55X3Jvd3MsCiAgICAgICAgIlNFTEVDVCBwYXJl
bnQgIgogICAgICAgICJGUk9NIGJyYW5jaF9oZWFkcyAiCiAgICAgICAgIldIRVJFIHZhbHVl
ID0gJyVxJyIsCiAgICAgICAgYnJhbmNoKCkuY19zdHIoKSk7CiAgaGVhZHMuY2xlYXIoKTsK
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlcy5zaXplKCk7ICsraSkKICAgIHsKICAgICAg
aGVhZHMuaW5zZXJ0KHJldmlzaW9uX2lkKHJlc1tpXVswXSkpOwogICAgfQp9Cgp2b2lkIApk
YXRhYmFzZTo6Z2V0X2NlcnRzKGhleGVuYzxpZD4gY29uc3QgJiBpZGVudCwgCiAgICAgICAg
ICAgICAgICAgICAgdmVjdG9yPGNlcnQ+ICYgY2VydHMsICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICBzdHJpbmcgY29uc3QgJiB0YWJsZSkKewogIHJlc3Vs
dHMgcmVzOwogIGZldGNoKHJlcywgNSwgYW55X3Jvd3MsIAogICAgICAgICJTRUxFQ1QgaWQs
IG5hbWUsIHZhbHVlLCBrZXlwYWlyLCBzaWduYXR1cmUgRlJPTSAnJXEnICIKICAgICAgICAi
V0hFUkUgaWQgPSAnJXEnIiwgCiAgICAgICAgdGFibGUuY19zdHIoKSwgIAogICAgICAgIGlk
ZW50KCkuY19zdHIoKSk7CiAgcmVzdWx0c190b19jZXJ0cyhyZXMsIGNlcnRzKTsKfQoKCnZv
aWQgCmRhdGFiYXNlOjpnZXRfY2VydHMoY2VydF9uYW1lIGNvbnN0ICYgbmFtZSwgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgIHZlY3RvcjxjZXJ0PiAmIGNlcnRzLAogICAgICAg
ICAgICAgICAgICAgIHN0cmluZyBjb25zdCAmIHRhYmxlKQp7CiAgcmVzdWx0cyByZXM7CiAg
ZmV0Y2gocmVzLCA1LCBhbnlfcm93cywgCiAgICAgICAgIlNFTEVDVCBpZCwgbmFtZSwgdmFs
dWUsIGtleXBhaXIsIHNpZ25hdHVyZSAiCiAgICAgICAgIkZST00gJyVxJyBXSEVSRSBuYW1l
ID0gJyVxJyIsIAogICAgICAgIHRhYmxlLmNfc3RyKCksICAKICAgICAgICBuYW1lKCkuY19z
dHIoKSk7CiAgcmVzdWx0c190b19jZXJ0cyhyZXMsIGNlcnRzKTsKfQoKCnZvaWQgCmRhdGFi
YXNlOjpnZXRfY2VydHMoaGV4ZW5jPGlkPiBjb25zdCAmIGlkZW50LCAKICAgICAgICAgICAg
ICAgICAgICBjZXJ0X25hbWUgY29uc3QgJiBuYW1lLCAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgICAgdmVjdG9yPGNlcnQ+ICYgY2VydHMsCiAgICAgICAgICAgICAgICAgICAgc3Ry
aW5nIGNvbnN0ICYgdGFibGUpCnsKICByZXN1bHRzIHJlczsKICBmZXRjaChyZXMsIDUsIGFu
eV9yb3dzLCAKICAgICAgICAiU0VMRUNUIGlkLCBuYW1lLCB2YWx1ZSwga2V5cGFpciwgc2ln
bmF0dXJlICIKICAgICAgICAiRlJPTSAnJXEnICIKICAgICAgICAiV0hFUkUgaWQgPSAnJXEn
IEFORCBuYW1lID0gJyVxJyIsIAogICAgICAgIHRhYmxlLmNfc3RyKCksICAKICAgICAgICBp
ZGVudCgpLmNfc3RyKCksCiAgICAgICAgbmFtZSgpLmNfc3RyKCkpOwogIHJlc3VsdHNfdG9f
Y2VydHMocmVzLCBjZXJ0cyk7Cn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRfY2VydHMoY2VydF9u
YW1lIGNvbnN0ICYgbmFtZSwKICAgICAgICAgICAgICAgICAgICBiYXNlNjQ8Y2VydF92YWx1
ZT4gY29uc3QgJiB2YWwsIAogICAgICAgICAgICAgICAgICAgIHZlY3RvcjxjZXJ0PiAmIGNl
cnRzLAogICAgICAgICAgICAgICAgICAgIHN0cmluZyBjb25zdCAmIHRhYmxlKQp7CiAgcmVz
dWx0cyByZXM7CiAgZmV0Y2gocmVzLCA1LCBhbnlfcm93cywgCiAgICAgICAgIlNFTEVDVCBp
ZCwgbmFtZSwgdmFsdWUsIGtleXBhaXIsIHNpZ25hdHVyZSAiCiAgICAgICAgIkZST00gJyVx
JyAiCiAgICAgICAgIldIRVJFIG5hbWUgPSAnJXEnIEFORCB2YWx1ZSA9ICclcSciLCAKICAg
ICAgICB0YWJsZS5jX3N0cigpLCAgCiAgICAgICAgbmFtZSgpLmNfc3RyKCksCiAgICAgICAg
dmFsKCkuY19zdHIoKSk7CiAgcmVzdWx0c190b19jZXJ0cyhyZXMsIGNlcnRzKTsKfQoKCnZv
aWQgCmRhdGFiYXNlOjpnZXRfY2VydHMoaGV4ZW5jPGlkPiBjb25zdCAmIGlkZW50LCAKICAg
ICAgICAgICAgICAgICAgICBjZXJ0X25hbWUgY29uc3QgJiBuYW1lLCAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgYmFzZTY0PGNlcnRfdmFsdWU+IGNvbnN0ICYgdmFsdWUsCiAg
ICAgICAgICAgICAgICAgICAgdmVjdG9yPGNlcnQ+ICYgY2VydHMsCiAgICAgICAgICAgICAg
ICAgICAgc3RyaW5nIGNvbnN0ICYgdGFibGUpCnsKICByZXN1bHRzIHJlczsKICBmZXRjaChy
ZXMsIDUsIGFueV9yb3dzLCAKICAgICAgICAiU0VMRUNUIGlkLCBuYW1lLCB2YWx1ZSwga2V5
cGFpciwgc2lnbmF0dXJlICIKICAgICAgICAiRlJPTSAnJXEnICIKICAgICAgICAiV0hFUkUg
aWQgPSAnJXEnIEFORCBuYW1lID0gJyVxJyBBTkQgdmFsdWUgPSAnJXEnIiwgCiAgICAgICAg
dGFibGUuY19zdHIoKSwgIAogICAgICAgIGlkZW50KCkuY19zdHIoKSwKICAgICAgICBuYW1l
KCkuY19zdHIoKSwKICAgICAgICB2YWx1ZSgpLmNfc3RyKCkpOwogIHJlc3VsdHNfdG9fY2Vy
dHMocmVzLCBjZXJ0cyk7Cn0KCgoKYm9vbCAKZGF0YWJhc2U6OnJldmlzaW9uX2NlcnRfZXhp
c3RzKHJldmlzaW9uPGNlcnQ+IGNvbnN0ICYgY2VydCkKeyAKICByZXR1cm4gY2VydF9leGlz
dHMoY2VydC5pbm5lcigpLCAicmV2aXNpb25fY2VydHMiKTsgCn0KCmJvb2wgCmRhdGFiYXNl
OjptYW5pZmVzdF9jZXJ0X2V4aXN0cyhtYW5pZmVzdDxjZXJ0PiBjb25zdCAmIGNlcnQpCnsg
CiAgcmV0dXJuIGNlcnRfZXhpc3RzKGNlcnQuaW5uZXIoKSwgIm1hbmlmZXN0X2NlcnRzIik7
IAp9Cgpib29sIApkYXRhYmFzZTo6ZmlsZV9jZXJ0X2V4aXN0cyhmaWxlPGNlcnQ+IGNvbnN0
ICYgY2VydCkKeyAKICByZXR1cm4gY2VydF9leGlzdHMoY2VydC5pbm5lcigpLCAiZmlsZV9j
ZXJ0cyIpOyAKfQoKdm9pZCAKZGF0YWJhc2U6OnB1dF9tYW5pZmVzdF9jZXJ0KG1hbmlmZXN0
PGNlcnQ+IGNvbnN0ICYgY2VydCkKeyAKICBwdXRfY2VydChjZXJ0LmlubmVyKCksICJtYW5p
ZmVzdF9jZXJ0cyIpOyAKfQoKdm9pZCAKZGF0YWJhc2U6OnB1dF9yZXZpc2lvbl9jZXJ0KHJl
dmlzaW9uPGNlcnQ+IGNvbnN0ICYgY2VydCkKeyAKICBwdXRfY2VydChjZXJ0LmlubmVyKCks
ICJyZXZpc2lvbl9jZXJ0cyIpOyAKfQoKdm9pZCAKZGF0YWJhc2U6OnB1dF9maWxlX2NlcnQo
ZmlsZTxjZXJ0PiBjb25zdCAmIGNlcnQpCnsgCiAgcHV0X2NlcnQoY2VydC5pbm5lcigpLCAi
ZmlsZV9jZXJ0cyIpOyAKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9maWxlX2NlcnRzKGNlcnRf
bmFtZSBjb25zdCAmIG5hbWUsIAogICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yPCBm
aWxlPGNlcnQ+ID4gJiB0cykKewogIHZlY3RvcjxjZXJ0PiBjZXJ0czsKICBnZXRfY2VydHMo
bmFtZSwgY2VydHMsICJmaWxlX2NlcnRzIik7CiAgdHMuY2xlYXIoKTsKICBjb3B5KGNlcnRz
LmJlZ2luKCksIGNlcnRzLmVuZCgpLCBiYWNrX2luc2VydGVyKHRzKSk7ICAKfQoKdm9pZCAK
ZGF0YWJhc2U6OmdldF9maWxlX2NlcnRzKGZpbGVfaWQgY29uc3QgJiBpZCwgCiAgICAgICAg
ICAgICAgICAgICAgICAgICBjZXJ0X25hbWUgY29uc3QgJiBuYW1lLCAKICAgICAgICAgICAg
ICAgICAgICAgICAgIHZlY3RvcjwgZmlsZTxjZXJ0PiA+ICYgdHMpCnsKICB2ZWN0b3I8Y2Vy
dD4gY2VydHM7CiAgZ2V0X2NlcnRzKGlkLmlubmVyKCksIG5hbWUsIGNlcnRzLCAiZmlsZV9j
ZXJ0cyIpOwogIHRzLmNsZWFyKCk7CiAgY29weShjZXJ0cy5iZWdpbigpLCBjZXJ0cy5lbmQo
KSwgYmFja19pbnNlcnRlcih0cykpOyAgICAKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9maWxl
X2NlcnRzKGNlcnRfbmFtZSBjb25zdCAmIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBiYXNlNjQ8Y2VydF92YWx1ZT4gY29uc3QgJiB2YWwsIAogICAgICAgICAgICAgICAgICAg
ICAgICAgdmVjdG9yPCBmaWxlPGNlcnQ+ID4gJiB0cykKewogIHZlY3RvcjxjZXJ0PiBjZXJ0
czsKICBnZXRfY2VydHMobmFtZSwgdmFsLCBjZXJ0cywgImZpbGVfY2VydHMiKTsKICB0cy5j
bGVhcigpOwogIGNvcHkoY2VydHMuYmVnaW4oKSwgY2VydHMuZW5kKCksIGJhY2tfaW5zZXJ0
ZXIodHMpKTsgIAp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X2ZpbGVfY2VydHMoZmlsZV9pZCBj
b25zdCAmIGlkLCAKICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfbmFtZSBjb25zdCAm
IG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlNjQ8Y2VydF92YWx1ZT4gY29u
c3QgJiB2YWwsIAogICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yPCBmaWxlPGNlcnQ+
ID4gJiB0cykKewogIHZlY3RvcjxjZXJ0PiBjZXJ0czsKICBnZXRfY2VydHMoaWQuaW5uZXIo
KSwgbmFtZSwgdmFsLCBjZXJ0cywgImZpbGVfY2VydHMiKTsKICB0cy5jbGVhcigpOwogIGNv
cHkoY2VydHMuYmVnaW4oKSwgY2VydHMuZW5kKCksIGJhY2tfaW5zZXJ0ZXIodHMpKTsgIAp9
Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X2ZpbGVfY2VydHMoZmlsZV9pZCBjb25zdCAmIGlkLCAK
ICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvcjwgZmlsZTxjZXJ0PiA+ICYgdHMpCnsg
CiAgdmVjdG9yPGNlcnQ+IGNlcnRzOwogIGdldF9jZXJ0cyhpZC5pbm5lcigpLCBjZXJ0cywg
ImZpbGVfY2VydHMiKTsgCiAgdHMuY2xlYXIoKTsKICBjb3B5KGNlcnRzLmJlZ2luKCksIGNl
cnRzLmVuZCgpLCBiYWNrX2luc2VydGVyKHRzKSk7Cn0KCgpib29sIApkYXRhYmFzZTo6Zmls
ZV9jZXJ0X2V4aXN0cyhoZXhlbmM8aWQ+IGNvbnN0ICYgaGFzaCkKewogIHJlc3VsdHMgcmVz
OwogIHZlY3RvcjxjZXJ0PiBjZXJ0czsKICBmZXRjaChyZXMsIG9uZV9jb2wsIGFueV9yb3dz
LCAKICAgICAgICAiU0VMRUNUIGlkICIKICAgICAgICAiRlJPTSBmaWxlX2NlcnRzICIKICAg
ICAgICAiV0hFUkUgaGFzaCA9ICclcSciLCAKICAgICAgICBoYXNoKCkuY19zdHIoKSk7CiAg
SShyZXMuc2l6ZSgpID09IDAgfHwgcmVzLnNpemUoKSA9PSAxKTsKICByZXR1cm4gKHJlcy5z
aXplKCkgPT0gMSk7Cn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRfZmlsZV9jZXJ0KGhleGVuYzxp
ZD4gY29uc3QgJiBoYXNoLAogICAgICAgICAgICAgICAgICAgICAgICBmaWxlPGNlcnQ+ICYg
YykKewogIHJlc3VsdHMgcmVzOwogIHZlY3RvcjxjZXJ0PiBjZXJ0czsKICBmZXRjaChyZXMs
IDUsIG9uZV9yb3csIAogICAgICAgICJTRUxFQ1QgaWQsIG5hbWUsIHZhbHVlLCBrZXlwYWly
LCBzaWduYXR1cmUgIgogICAgICAgICJGUk9NIGZpbGVfY2VydHMgIgogICAgICAgICJXSEVS
RSBoYXNoID0gJyVxJyIsIAogICAgICAgIGhhc2goKS5jX3N0cigpKTsKICByZXN1bHRzX3Rv
X2NlcnRzKHJlcywgY2VydHMpOwogIEkoY2VydHMuc2l6ZSgpID09IDEpOwogIGMgPSBmaWxl
PGNlcnQ+KGNlcnRzWzBdKTsKfQoKCgp2b2lkIApkYXRhYmFzZTo6Z2V0X3JldmlzaW9uX2Nl
cnRzKGNlcnRfbmFtZSBjb25zdCAmIG5hbWUsIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmVjdG9yPCByZXZpc2lvbjxjZXJ0PiA+ICYgdHMpCnsKICB2ZWN0b3I8Y2VydD4gY2Vy
dHM7CiAgZ2V0X2NlcnRzKG5hbWUsIGNlcnRzLCAicmV2aXNpb25fY2VydHMiKTsKICB0cy5j
bGVhcigpOwogIGNvcHkoY2VydHMuYmVnaW4oKSwgY2VydHMuZW5kKCksIGJhY2tfaW5zZXJ0
ZXIodHMpKTsgIAp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X3JldmlzaW9uX2NlcnRzKHJldmlz
aW9uX2lkIGNvbnN0ICYgaWQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9u
YW1lIGNvbnN0ICYgbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3I8
IHJldmlzaW9uPGNlcnQ+ID4gJiB0cykKewogIHZlY3RvcjxjZXJ0PiBjZXJ0czsKICBnZXRf
Y2VydHMoaWQuaW5uZXIoKSwgbmFtZSwgY2VydHMsICJyZXZpc2lvbl9jZXJ0cyIpOwogIHRz
LmNsZWFyKCk7CiAgY29weShjZXJ0cy5iZWdpbigpLCBjZXJ0cy5lbmQoKSwgYmFja19pbnNl
cnRlcih0cykpOyAgCn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRfcmV2aXNpb25fY2VydHMocmV2
aXNpb25faWQgY29uc3QgJiBpZCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0
X25hbWUgY29uc3QgJiBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0
PGNlcnRfdmFsdWU+IGNvbnN0ICYgdmFsLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZlY3RvcjwgcmV2aXNpb248Y2VydD4gPiAmIHRzKQp7CiAgdmVjdG9yPGNlcnQ+IGNlcnRz
OwogIGdldF9jZXJ0cyhpZC5pbm5lcigpLCBuYW1lLCB2YWwsIGNlcnRzLCAicmV2aXNpb25f
Y2VydHMiKTsKICB0cy5jbGVhcigpOwogIGNvcHkoY2VydHMuYmVnaW4oKSwgY2VydHMuZW5k
KCksIGJhY2tfaW5zZXJ0ZXIodHMpKTsgIAp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X3Jldmlz
aW9uX2NlcnRzKGNlcnRfbmFtZSBjb25zdCAmIG5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBiYXNlNjQ8Y2VydF92YWx1ZT4gY29uc3QgJiB2YWwsIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmVjdG9yPCByZXZpc2lvbjxjZXJ0PiA+ICYgdHMpCnsKICB2ZWN0
b3I8Y2VydD4gY2VydHM7CiAgZ2V0X2NlcnRzKG5hbWUsIHZhbCwgY2VydHMsICJyZXZpc2lv
bl9jZXJ0cyIpOwogIHRzLmNsZWFyKCk7CiAgY29weShjZXJ0cy5iZWdpbigpLCBjZXJ0cy5l
bmQoKSwgYmFja19pbnNlcnRlcih0cykpOyAgCn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRfcmV2
aXNpb25fY2VydHMocmV2aXNpb25faWQgY29uc3QgJiBpZCwgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2ZWN0b3I8IHJldmlzaW9uPGNlcnQ+ID4gJiB0cykKeyAKICB2ZWN0b3I8
Y2VydD4gY2VydHM7CiAgZ2V0X2NlcnRzKGlkLmlubmVyKCksIGNlcnRzLCAicmV2aXNpb25f
Y2VydHMiKTsgCiAgdHMuY2xlYXIoKTsKICBjb3B5KGNlcnRzLmJlZ2luKCksIGNlcnRzLmVu
ZCgpLCBiYWNrX2luc2VydGVyKHRzKSk7Cn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRfcmV2aXNp
b25fY2VydChoZXhlbmM8aWQ+IGNvbnN0ICYgaGFzaCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV2aXNpb248Y2VydD4gJiBjKQp7CiAgcmVzdWx0cyByZXM7CiAgdmVjdG9yPGNl
cnQ+IGNlcnRzOwogIGZldGNoKHJlcywgNSwgb25lX3JvdywgCiAgICAgICAgIlNFTEVDVCBp
ZCwgbmFtZSwgdmFsdWUsIGtleXBhaXIsIHNpZ25hdHVyZSAiCiAgICAgICAgIkZST00gcmV2
aXNpb25fY2VydHMgIgogICAgICAgICJXSEVSRSBoYXNoID0gJyVxJyIsIAogICAgICAgIGhh
c2goKS5jX3N0cigpKTsKICByZXN1bHRzX3RvX2NlcnRzKHJlcywgY2VydHMpOwogIEkoY2Vy
dHMuc2l6ZSgpID09IDEpOwogIGMgPSByZXZpc2lvbjxjZXJ0PihjZXJ0c1swXSk7Cn0KCmJv
b2wgCmRhdGFiYXNlOjpyZXZpc2lvbl9jZXJ0X2V4aXN0cyhoZXhlbmM8aWQ+IGNvbnN0ICYg
aGFzaCkKewogIHJlc3VsdHMgcmVzOwogIHZlY3RvcjxjZXJ0PiBjZXJ0czsKICBmZXRjaChy
ZXMsIG9uZV9jb2wsIGFueV9yb3dzLCAKICAgICAgICAiU0VMRUNUIGlkICIKICAgICAgICAi
RlJPTSByZXZpc2lvbl9jZXJ0cyAiCiAgICAgICAgIldIRVJFIGhhc2ggPSAnJXEnIiwgCiAg
ICAgICAgaGFzaCgpLmNfc3RyKCkpOwogIEkocmVzLnNpemUoKSA9PSAwIHx8IHJlcy5zaXpl
KCkgPT0gMSk7CiAgcmV0dXJuIChyZXMuc2l6ZSgpID09IDEpOwp9Cgpib29sIApkYXRhYmFz
ZTo6bWFuaWZlc3RfY2VydF9leGlzdHMoaGV4ZW5jPGlkPiBjb25zdCAmIGhhc2gpCnsKICBy
ZXN1bHRzIHJlczsKICB2ZWN0b3I8Y2VydD4gY2VydHM7CiAgZmV0Y2gocmVzLCBvbmVfY29s
LCBhbnlfcm93cywgCiAgICAgICAgIlNFTEVDVCBpZCAiCiAgICAgICAgIkZST00gbWFuaWZl
c3RfY2VydHMgIgogICAgICAgICJXSEVSRSBoYXNoID0gJyVxJyIsIAogICAgICAgIGhhc2go
KS5jX3N0cigpKTsKICBJKHJlcy5zaXplKCkgPT0gMCB8fCByZXMuc2l6ZSgpID09IDEpOwog
IHJldHVybiAocmVzLnNpemUoKSA9PSAxKTsKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9tYW5p
ZmVzdF9jZXJ0KGhleGVuYzxpZD4gY29uc3QgJiBoYXNoLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWFuaWZlc3Q8Y2VydD4gJiBjKQp7CiAgcmVzdWx0cyByZXM7CiAgdmVjdG9y
PGNlcnQ+IGNlcnRzOwogIGZldGNoKHJlcywgNSwgb25lX3JvdywgCiAgICAgICAgIlNFTEVD
VCBpZCwgbmFtZSwgdmFsdWUsIGtleXBhaXIsIHNpZ25hdHVyZSAiCiAgICAgICAgIkZST00g
bWFuaWZlc3RfY2VydHMgIgogICAgICAgICJXSEVSRSBoYXNoID0gJyVxJyIsIAogICAgICAg
IGhhc2goKS5jX3N0cigpKTsKICByZXN1bHRzX3RvX2NlcnRzKHJlcywgY2VydHMpOwogIEko
Y2VydHMuc2l6ZSgpID09IDEpOwogIGMgPSBtYW5pZmVzdDxjZXJ0PihjZXJ0c1swXSk7Cn0K
CnZvaWQgCmRhdGFiYXNlOjpnZXRfbWFuaWZlc3RfY2VydHMobWFuaWZlc3RfaWQgY29uc3Qg
JiBpZCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yPCBtYW5pZmVzdDxj
ZXJ0PiA+ICYgdHMpCnsgCiAgdmVjdG9yPGNlcnQ+IGNlcnRzOwogIGdldF9jZXJ0cyhpZC5p
bm5lcigpLCBjZXJ0cywgIm1hbmlmZXN0X2NlcnRzIik7IAogIHRzLmNsZWFyKCk7CiAgY29w
eShjZXJ0cy5iZWdpbigpLCBjZXJ0cy5lbmQoKSwgYmFja19pbnNlcnRlcih0cykpOwp9CgoK
dm9pZCAKZGF0YWJhc2U6OmdldF9tYW5pZmVzdF9jZXJ0cyhjZXJ0X25hbWUgY29uc3QgJiBu
YW1lLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvcjwgbWFuaWZlc3Q8Y2Vy
dD4gPiAmIHRzKQp7CiAgdmVjdG9yPGNlcnQ+IGNlcnRzOwogIGdldF9jZXJ0cyhuYW1lLCBj
ZXJ0cywgIm1hbmlmZXN0X2NlcnRzIik7CiAgdHMuY2xlYXIoKTsKICBjb3B5KGNlcnRzLmJl
Z2luKCksIGNlcnRzLmVuZCgpLCBiYWNrX2luc2VydGVyKHRzKSk7ICAKfQoKdm9pZCAKZGF0
YWJhc2U6OmdldF9tYW5pZmVzdF9jZXJ0cyhtYW5pZmVzdF9pZCBjb25zdCAmIGlkLCAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X25hbWUgY29uc3QgJiBuYW1lLCAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3I8IG1hbmlmZXN0PGNlcnQ+ID4gJiB0
cykKewogIHZlY3RvcjxjZXJ0PiBjZXJ0czsKICBnZXRfY2VydHMoaWQuaW5uZXIoKSwgbmFt
ZSwgY2VydHMsICJtYW5pZmVzdF9jZXJ0cyIpOwogIHRzLmNsZWFyKCk7CiAgY29weShjZXJ0
cy5iZWdpbigpLCBjZXJ0cy5lbmQoKSwgYmFja19pbnNlcnRlcih0cykpOyAgCn0KCgovLyBj
b21wbGV0aW9ucwp2b2lkIApkYXRhYmFzZTo6Y29tcGxldGUoc3RyaW5nIGNvbnN0ICYgcGFy
dGlhbCwKICAgICAgICAgICAgICAgICAgIHNldDxyZXZpc2lvbl9pZD4gJiBjb21wbGV0aW9u
cykKewogIHJlc3VsdHMgcmVzOwogIGNvbXBsZXRpb25zLmNsZWFyKCk7CgogIGZldGNoKHJl
cywgMSwgYW55X3Jvd3MsCiAgICAgICAgIlNFTEVDVCBpZCBGUk9NIHJldmlzaW9ucyBXSEVS
RSBpZCBHTE9CICclcSonIiwKICAgICAgICBwYXJ0aWFsLmNfc3RyKCkpOwoKICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHJlcy5zaXplKCk7ICsraSkKICAgIGNvbXBsZXRpb25zLmluc2Vy
dChyZXZpc2lvbl9pZChyZXNbaV1bMF0pKTsgIAp9CgoKdm9pZCAKZGF0YWJhc2U6OmNvbXBs
ZXRlKHN0cmluZyBjb25zdCAmIHBhcnRpYWwsCiAgICAgICAgICAgICAgICAgICBzZXQ8bWFu
aWZlc3RfaWQ+ICYgY29tcGxldGlvbnMpCnsKICByZXN1bHRzIHJlczsKICBjb21wbGV0aW9u
cy5jbGVhcigpOwoKICBmZXRjaChyZXMsIDEsIGFueV9yb3dzLAogICAgICAgICJTRUxFQ1Qg
aWQgRlJPTSBtYW5pZmVzdHMgV0hFUkUgaWQgR0xPQiAnJXEqJyIsCiAgICAgICAgcGFydGlh
bC5jX3N0cigpKTsKCiAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXMuc2l6ZSgpOyArK2kp
CiAgICBjb21wbGV0aW9ucy5pbnNlcnQobWFuaWZlc3RfaWQocmVzW2ldWzBdKSk7ICAKICAK
ICByZXMuY2xlYXIoKTsKCiAgZmV0Y2gocmVzLCAxLCBhbnlfcm93cywKICAgICAgICAiU0VM
RUNUIGlkIEZST00gbWFuaWZlc3RfZGVsdGFzIFdIRVJFIGlkIEdMT0IgJyVxKiciLAogICAg
ICAgIHBhcnRpYWwuY19zdHIoKSk7CgogIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzLnNp
emUoKTsgKytpKQogICAgY29tcGxldGlvbnMuaW5zZXJ0KG1hbmlmZXN0X2lkKHJlc1tpXVsw
XSkpOyAgCn0KCnZvaWQgCmRhdGFiYXNlOjpjb21wbGV0ZShzdHJpbmcgY29uc3QgJiBwYXJ0
aWFsLAogICAgICAgICAgICAgICAgICAgc2V0PGZpbGVfaWQ+ICYgY29tcGxldGlvbnMpCnsK
ICByZXN1bHRzIHJlczsKICBjb21wbGV0aW9ucy5jbGVhcigpOwoKICBmZXRjaChyZXMsIDEs
IGFueV9yb3dzLAogICAgICAgICJTRUxFQ1QgaWQgRlJPTSBmaWxlcyBXSEVSRSBpZCBHTE9C
ICclcSonIiwKICAgICAgICBwYXJ0aWFsLmNfc3RyKCkpOwoKICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHJlcy5zaXplKCk7ICsraSkKICAgIGNvbXBsZXRpb25zLmluc2VydChmaWxlX2lk
KHJlc1tpXVswXSkpOyAgCiAgCiAgcmVzLmNsZWFyKCk7CgogIGZldGNoKHJlcywgMSwgYW55
X3Jvd3MsCiAgICAgICAgIlNFTEVDVCBpZCBGUk9NIGZpbGVfZGVsdGFzIFdIRVJFIGlkIEdM
T0IgJyVxKiciLAogICAgICAgIHBhcnRpYWwuY19zdHIoKSk7CgogIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcmVzLnNpemUoKTsgKytpKQogICAgY29tcGxldGlvbnMuaW5zZXJ0KGZpbGVf
aWQocmVzW2ldWzBdKSk7ICAKfQoKdXNpbmcgY29tbWFuZHM6OnNlbGVjdG9yX3R5cGU7Cgpz
dGF0aWMgdm9pZCBzZWxlY3Rvcl90b19jZXJ0bmFtZShzZWxlY3Rvcl90eXBlIHR5LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgJiBzKQp7CiAgc3dpdGNoICh0
eSkKICAgIHsKICAgIGNhc2UgY29tbWFuZHM6OnNlbF9hdXRob3I6CiAgICAgIHMgPSBhdXRo
b3JfY2VydF9uYW1lOwogICAgICBicmVhazsKICAgIGNhc2UgY29tbWFuZHM6OnNlbF9icmFu
Y2g6CiAgICAgIHMgPSBicmFuY2hfY2VydF9uYW1lOwogICAgICBicmVhazsKICAgIGNhc2Ug
Y29tbWFuZHM6OnNlbF9kYXRlOgogICAgICBzID0gZGF0ZV9jZXJ0X25hbWU7CiAgICAgIGJy
ZWFrOwogICAgY2FzZSBjb21tYW5kczo6c2VsX3RhZzoKICAgICAgcyA9IHRhZ19jZXJ0X25h
bWU7CiAgICAgIGJyZWFrOwogICAgY2FzZSBjb21tYW5kczo6c2VsX2lkZW50OgogICAgY2Fz
ZSBjb21tYW5kczo6c2VsX3Vua25vd246CiAgICAgIEkoZmFsc2UpOyAvLyBkb24ndCBkbyB0
aGlzLgogICAgICBicmVhazsKICAgIH0KfQoKdm9pZCBkYXRhYmFzZTo6Y29tcGxldGUoc2Vs
ZWN0b3JfdHlwZSB0eSwKICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nIGNvbnN0ICYg
cGFydGlhbCwKICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yPHBhaXI8c2VsZWN0b3Jf
dHlwZSwgc3RyaW5nPiA+IGNvbnN0ICYgbGltaXQsCiAgICAgICAgICAgICAgICAgICAgICAg
IHNldDxzdHJpbmc+ICYgY29tcGxldGlvbnMpCnsKICBjb21wbGV0aW9ucy5jbGVhcigpOwoK
ICAvLyBzdGVwIDE6IHRoZSBsaW1pdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIGFuIFNRTCBzZWxl
Y3Qgc3RhdGVtZW50IHdoaWNoCiAgLy8gc2VsZWN0cyBhIHNldCBvZiBJRHMgZnJvbSB0aGUg
bWFuaWZlc3RfY2VydHMgdGFibGUgd2hpY2ggbWF0Y2ggdGhlCiAgLy8gbGltaXQuICB0aGlz
IGlzIGRvbmUgYnkgYnVpbGRpbmcgYW4gU1FMIHNlbGVjdCBzdGF0ZW1lbnQgZm9yIGVhY2gg
dGVybQogIC8vIGluIHRoZSBsaW1pdCBhbmQgdGhlbiBJTlRFUlNFQ1RpbmcgdGhlbSBhbGwu
CgogIHN0cmluZyBsaW0gPSAiKCI7CiAgYm9vbCBmaXJzdF9saW1pdCA9IHRydWU7CiAgZm9y
ICh2ZWN0b3I8cGFpcjxzZWxlY3Rvcl90eXBlLCBzdHJpbmc+ID46OmNvbnN0X2l0ZXJhdG9y
IGkgPSBsaW1pdC5iZWdpbigpOwogICAgICAgaSAhPSBsaW1pdC5lbmQoKTsgKytpKQogICAg
ewogICAgICBpZiAoZmlyc3RfbGltaXQpCiAgICAgICAgZmlyc3RfbGltaXQgPSBmYWxzZTsK
ICAgICAgZWxzZQogICAgICAgIGxpbSArPSAiIElOVEVSU0VDVCAiOwogICAgICAKICAgICAg
aWYgKGktPmZpcnN0ID09IGNvbW1hbmRzOjpzZWxfaWRlbnQpCiAgICAgICAgewogICAgICAg
ICAgbGltICs9ICJTRUxFQ1QgaWQgRlJPTSByZXZpc2lvbl9jZXJ0cyAiOwogICAgICAgICAg
bGltICs9IChGKCJXSEVSRSBpZCBHTE9CICclcyonIikgCiAgICAgICAgICAgICAgICAgICUg
aS0+c2Vjb25kKS5zdHIoKTsKICAgICAgICB9CiAgICAgIGVsc2UgaWYgKGktPmZpcnN0ID09
IGNvbW1hbmRzOjpzZWxfdW5rbm93bikKICAgICAgICB7CiAgICAgICAgICBsaW0gKz0gIlNF
TEVDVCBpZCBGUk9NIHJldmlzaW9uX2NlcnRzICI7CiAgICAgICAgICBsaW0gKz0gKEYoIiBX
SEVSRSAobmFtZT0nJXMnIE9SIG5hbWU9JyVzJyBPUiBuYW1lPSclcycpIikKICAgICAgICAg
ICAgICAgICAgJSBhdXRob3JfY2VydF9uYW1lIAogICAgICAgICAgICAgICAgICAlIHRhZ19j
ZXJ0X25hbWUgCiAgICAgICAgICAgICAgICAgICUgYnJhbmNoX2NlcnRfbmFtZSkuc3RyKCk7
CiAgICAgICAgICBsaW0gKz0gKEYoIiBBTkQgdW5iYXNlNjQodmFsdWUpIGdsb2IgJyolcyon
IikKICAgICAgICAgICAgICAgICAgJSBpLT5zZWNvbmQpLnN0cigpOyAgICAgCiAgICAgICAg
fQogICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgc3RyaW5nIGNlcnRuYW1lOwogICAg
ICAgICAgc2VsZWN0b3JfdG9fY2VydG5hbWUoaS0+Zmlyc3QsIGNlcnRuYW1lKTsKICAgICAg
ICAgIGxpbSArPSAiU0VMRUNUIGlkIEZST00gcmV2aXNpb25fY2VydHMgIjsKICAgICAgICAg
IGxpbSArPSAoRigiV0hFUkUgbmFtZT0nJXMnIEFORCB1bmJhc2U2NCh2YWx1ZSkgZ2xvYiAn
KiVzKiciKQogICAgICAgICAgICAgICAgICAlIGNlcnRuYW1lICUgaS0+c2Vjb25kKS5zdHIo
KTsKICAgICAgICB9CiAgICB9CiAgbGltICs9ICIpIjsKICAKICAvLyBzdGVwIDI6IGRlcGVu
ZGluZyBvbiB3aGF0IHdlJ3ZlIGJlZW4gYXNrZWQgdG8gZGlzYW1iaWd1YXRlLCB3ZQogIC8v
IHdpbGwgY29tcGxldGUgZWl0aGVyIHNvbWUgaWRlbnRzLCBvciBjZXJ0IHZhbHVlcywgb3Ig
InVua25vd24iCiAgLy8gd2hpY2ggZ2VuZXJhbGx5IG1lYW5zICJhdXRob3IsIHRhZyBvciBi
cmFuY2giCgogIHN0cmluZyBxdWVyeTsKICBpZiAodHkgPT0gY29tbWFuZHM6OnNlbF9pZGVu
dCkKICAgIHsKICAgICAgcXVlcnkgPSAoRigiU0VMRUNUIGlkIEZST00gJXMiKSAlIGxpbSku
c3RyKCk7CiAgICB9CiAgZWxzZSAKICAgIHsKICAgICAgcXVlcnkgPSAiU0VMRUNUIHZhbHVl
IEZST00gcmV2aXNpb25fY2VydHMgV0hFUkUiOwogICAgICBpZiAodHkgPT0gY29tbWFuZHM6
OnNlbF91bmtub3duKQogICAgICAgIHsgICAgICAgICAgICAgICAKICAgICAgICAgIHF1ZXJ5
ICs9IAogICAgICAgICAgICAoRigiIChuYW1lPSclcycgT1IgbmFtZT0nJXMnIE9SIG5hbWU9
JyVzJykiKQogICAgICAgICAgICAgJSBhdXRob3JfY2VydF9uYW1lIAogICAgICAgICAgICAg
JSB0YWdfY2VydF9uYW1lIAogICAgICAgICAgICAgJSBicmFuY2hfY2VydF9uYW1lKS5zdHIo
KTsKICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICBzdHJpbmcgY2Vy
dG5hbWU7CiAgICAgICAgICBzZWxlY3Rvcl90b19jZXJ0bmFtZSh0eSwgY2VydG5hbWUpOwog
ICAgICAgICAgcXVlcnkgKz0gCiAgICAgICAgICAgIChGKCIgKG5hbWU9JyVzJykiKSAlIGNl
cnRuYW1lKS5zdHIoKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgIHF1ZXJ5ICs9IChGKCIg
QU5EICh1bmJhc2U2NCh2YWx1ZSkgR0xPQiAnKiVzKicpIikgJSBwYXJ0aWFsKS5zdHIoKTsK
ICAgICAgcXVlcnkgKz0gKEYoIiBBTkQgKGlkIElOICVzKSIpICUgbGltKS5zdHIoKTsKICAg
IH0KCiAgcmVzdWx0cyByZXM7CiAgZmV0Y2gocmVzLCBvbmVfY29sLCBhbnlfcm93cywgcXVl
cnkuY19zdHIoKSk7CiAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXMuc2l6ZSgpOyArK2kp
CiAgICB7CiAgICAgIGlmICh0eSA9PSBjb21tYW5kczo6c2VsX2lkZW50KQogICAgICAgIGNv
bXBsZXRpb25zLmluc2VydChyZXNbaV1bMF0pOwogICAgICBlbHNlCiAgICAgICAgewogICAg
ICAgICAgYmFzZTY0PGRhdGE+IHJvd19lbmNvZGVkKHJlc1tpXVswXSk7CiAgICAgICAgICBk
YXRhIHJvd19kZWNvZGVkOwogICAgICAgICAgZGVjb2RlX2Jhc2U2NChyb3dfZW5jb2RlZCwg
cm93X2RlY29kZWQpOwogICAgICAgICAgY29tcGxldGlvbnMuaW5zZXJ0KHJvd19kZWNvZGVk
KCkpOwogICAgICAgIH0KICAgIH0KfQoKCi8vIG1lcmtsZSBub2RlcwoKYm9vbCAKZGF0YWJh
c2U6Om1lcmtsZV9ub2RlX2V4aXN0cyhzdHJpbmcgY29uc3QgJiB0eXBlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHV0ZjggY29uc3QgJiBjb2xsZWN0aW9uLCAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaGV4ZW5jPHByZWZpeD4gY29uc3QgJiBwcmVmaXgpCnsKICByZXN1bHRzIHJl
czsKICBmZXRjaChyZXMsIG9uZV9jb2wsIG9uZV9yb3csIAogICAgICAgICJTRUxFQ1QgQ09V
TlQoKikgIgogICAgICAgICJGUk9NIG1lcmtsZV9ub2RlcyAiCiAgICAgICAgIldIRVJFIHR5
cGUgPSAnJXEnICIKICAgICAgICAiQU5EIGNvbGxlY3Rpb24gPSAnJXEnICIKICAgICAgICAi
QU5EIGxldmVsID0gJWQgIgogICAgICAgICJBTkQgcHJlZml4ID0gJyVxJyAiLAogICAgICAg
IHR5cGUuY19zdHIoKSwgY29sbGVjdGlvbigpLmNfc3RyKCksIGxldmVsLCBwcmVmaXgoKS5j
X3N0cigpKTsKICBzaXplX3Qgbl9ub2RlcyA9IGxleGljYWxfY2FzdDxzaXplX3Q+KHJlc1sw
XVswXSk7CiAgSShuX25vZGVzID09IDAgfHwgbl9ub2RlcyA9PSAxKTsKICByZXR1cm4gbl9u
b2RlcyA9PSAxOwp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X21lcmtsZV9ub2RlKHN0cmluZyBj
b25zdCAmIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdXRmOCBjb25zdCAmIGNv
bGxlY3Rpb24sIAogICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICBoZXhlbmM8cHJlZml4PiBjb25zdCAmIHByZWZpeCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlNjQ8bWVya2xlPiAmIG5vZGUpCnsKICBy
ZXN1bHRzIHJlczsKICBmZXRjaChyZXMsIG9uZV9jb2wsIG9uZV9yb3csIAogICAgICAgICJT
RUxFQ1QgYm9keSAiCiAgICAgICAgIkZST00gbWVya2xlX25vZGVzICIKICAgICAgICAiV0hF
UkUgdHlwZSA9ICclcScgIgogICAgICAgICJBTkQgY29sbGVjdGlvbiA9ICclcScgIgogICAg
ICAgICJBTkQgbGV2ZWwgPSAlZCAiCiAgICAgICAgIkFORCBwcmVmaXggPSAnJXEnIiwKICAg
ICAgICB0eXBlLmNfc3RyKCksIGNvbGxlY3Rpb24oKS5jX3N0cigpLCBsZXZlbCwgcHJlZml4
KCkuY19zdHIoKSk7CiAgbm9kZSA9IHJlc1swXVswXTsKfQoKdm9pZCAKZGF0YWJhc2U6OnB1
dF9tZXJrbGVfbm9kZShzdHJpbmcgY29uc3QgJiB0eXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgIHV0ZjggY29uc3QgJiBjb2xsZWN0aW9uLCAKICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaGV4ZW5jPHBy
ZWZpeD4gY29uc3QgJiBwcmVmaXgsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0PG1lcmtsZT4gY29uc3Qg
JiBub2RlKQp7CiAgZXhlY3V0ZSgiSU5TRVJUIE9SIFJFUExBQ0UgIgogICAgICAgICAgIklO
VE8gbWVya2xlX25vZGVzICIKICAgICAgICAgICJWQUxVRVMgKCclcScsICclcScsICVkLCAn
JXEnLCAnJXEnKSIsCiAgICAgICAgICB0eXBlLmNfc3RyKCksIGNvbGxlY3Rpb24oKS5jX3N0
cigpLCBsZXZlbCwgcHJlZml4KCkuY19zdHIoKSwgbm9kZSgpLmNfc3RyKCkpOwp9Cgp2b2lk
IApkYXRhYmFzZTo6ZXJhc2VfbWVya2xlX25vZGVzKHN0cmluZyBjb25zdCAmIHR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRmOCBjb25zdCAmIGNvbGxlY3Rpb24pCnsK
ICBleGVjdXRlKCJERUxFVEUgRlJPTSBtZXJrbGVfbm9kZXMgIgogICAgICAgICAgIldIRVJF
IHR5cGUgPSAnJXEnICIKICAgICAgICAgICJBTkQgY29sbGVjdGlvbiA9ICclcSciLAogICAg
ICAgICAgdHlwZS5jX3N0cigpLCBjb2xsZWN0aW9uKCkuY19zdHIoKSk7Cn0KCi8vIHRyYW5z
YWN0aW9uIGd1YXJkcwoKdHJhbnNhY3Rpb25fZ3VhcmQ6OnRyYW5zYWN0aW9uX2d1YXJkKGRh
dGFiYXNlICYgZCkgOiBjb21taXR0ZWQoZmFsc2UpLCBkYihkKSAKewogIGRiLmJlZ2luX3Ry
YW5zYWN0aW9uKCk7Cn0KdHJhbnNhY3Rpb25fZ3VhcmQ6On50cmFuc2FjdGlvbl9ndWFyZCgp
CnsKICBpZiAoY29tbWl0dGVkKQogICAgZGIuY29tbWl0X3RyYW5zYWN0aW9uKCk7CiAgZWxz
ZQogICAgZGIucm9sbGJhY2tfdHJhbnNhY3Rpb24oKTsKfQoKdm9pZCAKdHJhbnNhY3Rpb25f
Z3VhcmQ6OmNvbW1pdCgpCnsKICBjb21taXR0ZWQgPSB0cnVlOwp9Cgo=
_ATEOF


cat >right.b64 <<'_ATEOF'
Ly8gY29weXJpZ2h0IChDKSAyMDAyLCAyMDAzIGdyYXlkb24gaG9hcmUgPGdyYXlkb25AcG9i
b3guY29tPgovLyBhbGwgcmlnaHRzIHJlc2VydmVkLgovLyBsaWNlbnNlZCB0byB0aGUgcHVi
bGljIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdQTCAoPj0gMikKLy8gc2VlIHRoZSBm
aWxlIENPUFlJTkcgZm9yIGRldGFpbHMKCiNpbmNsdWRlIDxpdGVyYXRvcj4KI2luY2x1ZGUg
PGxpc3Q+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDxzc3RyZWFtPgojaW5jbHVkZSA8dmVj
dG9yPgoKI2luY2x1ZGUgPHN0ZGFyZy5oPgoKI2luY2x1ZGUgPGJvb3N0L3NoYXJlZF9wdHIu
aHBwPgojaW5jbHVkZSA8Ym9vc3QvbGV4aWNhbF9jYXN0LmhwcD4KI2luY2x1ZGUgPGJvb3N0
L2ZpbGVzeXN0ZW0vcGF0aC5ocHA+CiNpbmNsdWRlIDxib29zdC9maWxlc3lzdGVtL29wZXJh
dGlvbnMuaHBwPgoKI2luY2x1ZGUgPHNxbGl0ZS5oPgoKI2luY2x1ZGUgImFwcF9zdGF0ZS5o
aCIKI2luY2x1ZGUgImNlcnQuaGgiCiNpbmNsdWRlICJjbGVhbnVwLmhoIgojaW5jbHVkZSAi
Y29uc3RhbnRzLmhoIgojaW5jbHVkZSAiZGF0YWJhc2UuaGgiCiNpbmNsdWRlICJrZXlzLmho
IgojaW5jbHVkZSAic2FuaXR5LmhoIgojaW5jbHVkZSAic2NoZW1hX21pZ3JhdGlvbi5oaCIK
I2luY2x1ZGUgImNlcnQuaGgiCiNpbmNsdWRlICJ0cmFuc2Zvcm1zLmhoIgojaW5jbHVkZSAi
dWkuaGgiCiNpbmNsdWRlICJ2b2NhYi5oaCIKI2luY2x1ZGUgInhkZWx0YS5oaCIKCi8vIGRl
ZmluZWQgaW4gc2NoZW1hLnNxbCwgY29udmVydGVkIHRvIGhlYWRlcjoKI2luY2x1ZGUgInNj
aGVtYS5oIgoKLy8gZGVmaW5lZCBpbiB2aWV3cy5zcWwsIGNvbnZlcnRlZCB0byBoZWFkZXI6
CiNpbmNsdWRlICJ2aWV3cy5oIgoKLy8gdGhpcyBmaWxlIGRlZmluZXMgYSBwdWJsaWMsIHR5
cGVkIGludGVyZmFjZSB0byB0aGUgZGF0YWJhc2UuCi8vIHRoZSBkYXRhYmFzZSBjbGFzcyBl
bmNhcHN1bGF0ZXMgYWxsIGtub3dsZWRnZSBhYm91dCBzcWxpdGUsCi8vIHRoZSBzY2hlbWEs
IGFuZCBhbGwgU1FMIHN0YXRlbWVudHMgdXNlZCB0byBhY2Nlc3MgdGhlIHNjaGVtYS4KLy8K
Ly8gc2VlIGZpbGUgc2NoZW1hLnNxbCBmb3IgdGhlIHRleHQgb2YgdGhlIHNjaGVtYS4KCnVz
aW5nIGJvb3N0OjpzaGFyZWRfcHRyOwp1c2luZyBib29zdDo6bGV4aWNhbF9jYXN0Owp1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGNvbnN0IG9uZV9yb3cgPSAxOwppbnQgY29uc3Qgb25l
X2NvbCA9IDE7CmludCBjb25zdCBhbnlfcm93cyA9IC0xOwppbnQgY29uc3QgYW55X2NvbHMg
PSAtMTsKCmV4dGVybiAiQyIgewogIC8vIHN0cmFuZ2VseSB0aGlzIGlzbid0IGRlY2xhcmVk
LCBldmVuIHRob3VnaCBpdCdzIHByZXNlbnQgaW4gbXkgc3FsaXRlLgogIGNoYXIgKnNxbGl0
ZV92bXByaW50Zihjb25zdCBjaGFyICp6Rm9ybWF0LCB2YV9saXN0KTsKfQoKZGF0YWJhc2U6
OmRhdGFiYXNlKGZzOjpwYXRoIGNvbnN0ICYgZm4pIDoKICBmaWxlbmFtZShmbiksCiAgLy8g
bmIuIHVwZGF0ZSB0aGlzIGlmIHlvdSBjaGFuZ2UgdGhlIHNjaGVtYS4gdW5mb3J0dW5hdGVs
eSB3ZSBhcmUgbm90CiAgLy8gdXNpbmcgc2VsZi1kaWdlc3Rpbmcgc2NoZW1hcyBkdWUgdG8g
Y29tbWVudCBpcnJlZ3VsYXJpdGllcyBhbmQKICAvLyBub24tYWxwaGFiZXRpYyBvcmRlcmlu
ZyBvZiB0YWJsZXMgaW4gc3FsIHNvdXJjZSBmaWxlcy4gd2UgY291bGQgY3JlYXRlCiAgLy8g
YSB0ZW1wb3JhcnkgZGIsIHdyaXRlIG91ciBpbnRlbmRlZCBzY2hlbWEgaW50byBpdCwgYW5k
IHJlYWQgaXQgYmFjaywKICAvLyBidXQgdGhpcyBzZWVtcyBsaWtlIGl0IHdvdWxkIGJlIHRv
byBydWRlLiBwb3NzaWJseSByZXZpc2l0IHRoaXMgaXNzdWUuCiAgc2NoZW1hKCJjMWU4NjU4
OGUxMWFkMDdmYTUzZTVkMjk0ZWRjMDQzY2UxZDQwMDVhIiksCiAgX19zcWwoTlVMTCksCiAg
dHJhbnNhY3Rpb25fbGV2ZWwoMCkKe30KCnZvaWQgCmRhdGFiYXNlOjpjaGVja19zY2hlbWEo
KQp7CiAgc3RyaW5nIGRiX3NjaGVtYV9pZDsgIAogIGNhbGN1bGF0ZV9zY2hlbWFfaWQgKF9f
c3FsLCBkYl9zY2hlbWFfaWQpOwogIE4gKHNjaGVtYSA9PSBkYl9zY2hlbWFfaWQsCiAgICAg
RigiZGF0YWJhc2Ugc2NoZW1hcyBkbyBub3QgbWF0Y2g6ICIKICAgICAgICJ3YW50ZWQgJXMs
IGdvdCAlcy4gdHJ5IG1pZ3JhdGluZyBkYXRhYmFzZSIpIAogICAgICUgc2NoZW1hICUgZGJf
c2NoZW1hX2lkKTsKfQoKc3RhdGljIHZvaWQgCnNxbGl0ZV91bmJhc2U2NF9mbihzcWxpdGVf
ZnVuYyAqZiwgaW50IG5hcmdzLCBjaGFyIGNvbnN0ICoqIGFyZ3MpCnsKICBpZiAobmFyZ3Mg
IT0gMSkKICAgIHsKICAgICAgc3FsaXRlX3NldF9yZXN1bHRfZXJyb3IoZiwgIm5lZWQgZXhh
Y3RseSAxIGFyZyB0byB1bmJhc2U2NCgpIiwgLTEpOwogICAgICByZXR1cm47CiAgICB9CiAg
ZGF0YSBkZWNvZGVkOwogIGRlY29kZV9iYXNlNjQoYmFzZTY0PGRhdGE+KHN0cmluZyhhcmdz
WzBdKSksIGRlY29kZWQpOwogIHNxbGl0ZV9zZXRfcmVzdWx0X3N0cmluZyhmLCBkZWNvZGVk
KCkuY19zdHIoKSwgZGVjb2RlZCgpLnNpemUoKSk7Cn0KCnZvaWQgCmRhdGFiYXNlOjpzZXRf
YXBwKGFwcF9zdGF0ZSAqIGFwcCkKewogIF9fYXBwID0gYXBwOwp9CgpzdHJ1Y3Qgc3FsaXRl
ICogCmRhdGFiYXNlOjpzcWwoYm9vbCBpbml0KQp7CiAgaWYgKCEgX19zcWwpCiAgICB7CiAg
ICAgIGlmICghIGluaXQpCgl7CgkgIGlmIChmaWxlbmFtZS5zdHJpbmcoKSA9PSAiIikKCSAg
ICB0aHJvdyBpbmZvcm1hdGl2ZV9mYWlsdXJlKHN0cmluZygibm8gZGF0YWJhc2Ugc3BlY2lm
aWVkIikpOwoJICBlbHNlIGlmICghIGZzOjpleGlzdHMoZmlsZW5hbWUpKQoJICAgIHRocm93
IGluZm9ybWF0aXZlX2ZhaWx1cmUoc3RyaW5nKCJkYXRhYmFzZSAiKSArIGZpbGVuYW1lLnN0
cmluZygpICsKCQkJCSAgICAgIHN0cmluZygiIGRvZXMgbm90IGV4aXN0IikpOwoJfQogICAg
ICBOKGZpbGVuYW1lLnN0cmluZygpICE9ICIiLAoJRigibmVlZCBkYXRhYmFzZSBuYW1lIikp
OwogICAgICBjaGFyICogZXJybXNnID0gTlVMTDsKICAgICAgX19zcWwgPSBzcWxpdGVfb3Bl
bihmaWxlbmFtZS5zdHJpbmcoKS5jX3N0cigpLCAwNzU1LCAmZXJybXNnKTsKICAgICAgaWYg
KCEgX19zcWwpCgl0aHJvdyBvb3BzKHN0cmluZygiY291bGQgbm90IG9wZW4gZGF0YWJhc2U6
ICIpICsgZmlsZW5hbWUuc3RyaW5nKCkgKyAKCQkgICAoZXJybXNnID8gKCI6ICIgKyBzdHJp
bmcoZXJybXNnKSkgOiAiIikpOwogICAgICBpZiAoaW5pdCkKCWV4ZWN1dGUoc2NoZW1hX2Nv
bnN0YW50KTsKCiAgICAgIGNoZWNrX3NjaGVtYSgpOwogICAgICBpbnN0YWxsX2Z1bmN0aW9u
cyhfX2FwcCk7CiAgICAgIGluc3RhbGxfdmlld3MoKTsKICAgIH0KICByZXR1cm4gX19zcWw7
Cn0KCnZvaWQgCmRhdGFiYXNlOjppbml0aWFsaXplKCkKewogIGlmIChfX3NxbCkKICAgIHRo
cm93IG9vcHMoImNhbm5vdCBpbml0aWFsaXplIGRhdGFiYXNlIHdoaWxlIGl0IGlzIG9wZW4i
KTsKCiAgTighZnM6OmV4aXN0cyhmaWxlbmFtZSksCiAgICBGKCJjb3VsZCBub3QgaW5pdGlh
bGl6ZSBkYXRhYmFzZTogJXM6IGFscmVhZHkgZXhpc3RzIikgCiAgICAlIGZpbGVuYW1lLnN0
cmluZygpKTsKCiAgZnM6OnBhdGggam91cm5hbCA9IG1rcGF0aChmaWxlbmFtZS5zdHJpbmco
KSArICItam91cm5hbCIpOwogIE4oIWZzOjpleGlzdHMoam91cm5hbCksCiAgICBGKCJleGlz
dGluZyAocG9zc2libHkgc3RhbGUpIGpvdXJuYWwgZmlsZSAnJXMnIGhhcyBzYW1lIHN0ZW0g
YXMgbmV3IGRhdGFiYXNlICclcyciKQogICAgJSBqb3VybmFsLnN0cmluZygpICUgZmlsZW5h
bWUuc3RyaW5nKCkpOwoKICBzcWxpdGUgKnMgPSBzcWwodHJ1ZSk7CiAgSShzICE9IE5VTEwp
Owp9CgoKc3RydWN0IApkdW1wX3JlcXVlc3QKewogIGR1bXBfcmVxdWVzdCgpIHt9OwogIHN0
cnVjdCBzcWxpdGUgKnNxbDsKICBzdHJpbmcgdGFibGVfbmFtZTsKICBvc3RyZWFtICpvdXQ7
Cn07CgpzdGF0aWMgaW50IApkdW1wX3Jvd19jYih2b2lkICpkYXRhLCBpbnQgbiwgY2hhciAq
KnZhbHMsIGNoYXIgKipjb2xzKQp7CiAgZHVtcF9yZXF1ZXN0ICpkdW1wID0gcmVpbnRlcnBy
ZXRfY2FzdDxkdW1wX3JlcXVlc3QgKj4oZGF0YSk7CiAgSShkdW1wICE9IE5VTEwpOwogIEko
dmFscyAhPSBOVUxMKTsKICBJKGR1bXAtPm91dCAhPSBOVUxMKTsKICAqKGR1bXAtPm91dCkg
PDwgRigiSU5TRVJUIElOVE8gJXMgVkFMVUVTKCIpICUgZHVtcC0+dGFibGVfbmFtZTsKICBm
b3IgKGludCBpID0gMDsgaSA8IG47ICsraSkKICAgIHsKICAgICAgaWYgKGkgIT0gMCkKCSoo
ZHVtcC0+b3V0KSA8PCAnLCc7CgogICAgICBpZiAodmFsc1tpXSA9PSBOVUxMKQoJKihkdW1w
LT5vdXQpIDw8ICJOVUxMIjsKICAgICAgZWxzZQoJewoJICAqKGR1bXAtPm91dCkgPDwgIici
OwoJICBmb3IgKGNoYXIgKmNwID0gdmFsc1tpXTsgKmNwOyArK2NwKQoJICAgIHsKCSAgICAg
IGlmICgqY3AgPT0gJ1wnJykKCQkqKGR1bXAtPm91dCkgPDwgIicnIjsKCSAgICAgIGVsc2UK
CQkqKGR1bXAtPm91dCkgPDwgKmNwOwoJICAgIH0KCSAgKihkdW1wLT5vdXQpIDw8ICInIjsK
CX0KICAgIH0KICAqKGR1bXAtPm91dCkgPDwgIik7XG4iOyAgCiAgcmV0dXJuIDA7Cn0KCnN0
YXRpYyBpbnQgCmR1bXBfdGFibGVfY2Iodm9pZCAqZGF0YSwgaW50IG4sIGNoYXIgKip2YWxz
LCBjaGFyICoqY29scykKewogIGR1bXBfcmVxdWVzdCAqZHVtcCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8ZHVtcF9yZXF1ZXN0ICo+KGRhdGEpOwogIEkoZHVtcCAhPSBOVUxMKTsKICBJKGR1bXAt
PnNxbCAhPSBOVUxMKTsKICBJKHZhbHMgIT0gTlVMTCk7CiAgSSh2YWxzWzBdICE9IE5VTEwp
OwogIEkodmFsc1sxXSAhPSBOVUxMKTsKICBJKHZhbHNbMl0gIT0gTlVMTCk7CiAgSShuID09
IDMpOwogIGlmIChzdHJpbmcodmFsc1sxXSkgPT0gInRhYmxlIikKICAgIHsKICAgICAgKihk
dW1wLT5vdXQpIDw8IHZhbHNbMl0gPDwgIjtcbiI7CiAgICAgIGR1bXAtPnRhYmxlX25hbWUg
PSBzdHJpbmcodmFsc1swXSk7CiAgICAgIHNxbGl0ZV9leGVjX3ByaW50ZihkdW1wLT5zcWws
ICJTRUxFQ1QgKiBGUk9NICclcSciLCAKCQkJIGR1bXBfcm93X2NiLCBkYXRhLCBOVUxMLCB2
YWxzWzBdKTsKICAgIH0KICByZXR1cm4gMDsKfQoKdm9pZCAKZGF0YWJhc2U6OmR1bXAob3N0
cmVhbSAmIG91dCkKewogIGR1bXBfcmVxdWVzdCByZXE7CiAgcmVxLm91dCA9ICZvdXQ7CiAg
cmVxLnNxbCA9IHNxbCgpOwogIG91dCA8PCAiQkVHSU4gVFJBTlNBQ1RJT047XG4iOwogIGlu
dCByZXMgPSBzcWxpdGVfZXhlYyhyZXEuc3FsLAoJCQkiU0VMRUNUIG5hbWUsIHR5cGUsIHNx
bCBGUk9NIHNxbGl0ZV9tYXN0ZXIgIgoJCQkiV0hFUkUgdHlwZT0ndGFibGUnIEFORCBzcWwg
Tk9UIE5VTEwgIgoJCQkiT1JERVIgQlkgc3Vic3RyKHR5cGUsMiwxKSwgbmFtZSIsCgkJCWR1
bXBfdGFibGVfY2IsICZyZXEsIE5VTEwpOwogIEkocmVzID09IFNRTElURV9PSyk7CiAgb3V0
IDw8ICJDT01NSVQ7XG4iOwp9Cgp2b2lkIApkYXRhYmFzZTo6bG9hZChpc3RyZWFtICYgaW4p
CnsKICBjaGFyIGJ1Zltjb25zdGFudHM6OmJ1ZnN6XTsKICBzdHJpbmcgdG1wOwoKICBOKGZp
bGVuYW1lLnN0cmluZygpICE9ICIiLAogICAgRigibmVlZCBkYXRhYmFzZSBuYW1lIikpOwog
IGNoYXIgKiBlcnJtc2cgPSBOVUxMOwogIF9fc3FsID0gc3FsaXRlX29wZW4oZmlsZW5hbWUu
c3RyaW5nKCkuY19zdHIoKSwgMDc1NSwgJmVycm1zZyk7CiAgaWYgKCEgX19zcWwpCiAgICB0
aHJvdyBvb3BzKHN0cmluZygiY291bGQgbm90IG9wZW4gZGF0YWJhc2U6ICIpICsgZmlsZW5h
bWUuc3RyaW5nKCkgKyAKCSAgICAgICAoZXJybXNnID8gKCI6ICIgKyBzdHJpbmcoZXJybXNn
KSkgOiAiIikpOwogIAogIHdoaWxlKGluKQogICAgewogICAgICBpbi5yZWFkKGJ1ZiwgY29u
c3RhbnRzOjpidWZzeik7CiAgICAgIHRtcC5hcHBlbmQoYnVmLCBpbi5nY291bnQoKSk7CiAg
ICB9CgogIGV4ZWN1dGUodG1wLmNfc3RyKCkpOwp9CgoKdm9pZCAKZGF0YWJhc2U6OmRlYnVn
KHN0cmluZyBjb25zdCAmIHNxbCwgb3N0cmVhbSAmIG91dCkKewogIHJlc3VsdHMgcmVzOwog
IGZldGNoKHJlcywgYW55X2NvbHMsIGFueV9yb3dzLCBzcWwuY19zdHIoKSk7CiAgb3V0IDw8
ICInIiA8PCBzcWwgPDwgIicgLT4gIiA8PCByZXMuc2l6ZSgpIDw8ICIgcm93c1xuIiA8PCBl
bmRsOwogIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzLnNpemUoKTsgKytpKQogICAgewog
ICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHJlc1tpXS5zaXplKCk7ICsraikKCXsKCSAg
aWYgKGogIT0gMCkKCSAgICBvdXQgPDwgIiB8ICI7CgkgIG91dCA8PCByZXNbaV1bal07Cgl9
CiAgICAgIG91dCA8PCBlbmRsOwogICAgfQp9Cgp1bnNpZ25lZCBsb25nIApkYXRhYmFzZTo6
Z2V0X3N0YXRpc3RpYyhzdHJpbmcgY29uc3QgJiBxdWVyeSkKewogIHJlc3VsdHMgcmVzOwog
IGZldGNoKHJlcywgMSwgMSwgcXVlcnkuY19zdHIoKSk7CiAgcmV0dXJuIGxleGljYWxfY2Fz
dDx1bnNpZ25lZCBsb25nPihyZXNbMF1bMF0pOwp9Cgp2b2lkIApkYXRhYmFzZTo6aW5mbyhv
c3RyZWFtICYgb3V0KQp7CiAgc3RyaW5nIGlkOwogIGNhbGN1bGF0ZV9zY2hlbWFfaWQoc3Fs
KCksIGlkKTsKICBvdXQgPDwgInNjaGVtYSB2ZXJzaW9uICA6ICIgPDwgaWQgPDwgZW5kbDsK
ICBvdXQgPDwgImZ1bGwgbWFuaWZlc3RzICA6ICIgPDwgZ2V0X3N0YXRpc3RpYygiU0VMRUNU
IENPVU5UKCopIEZST00gbWFuaWZlc3RzIikgPDwgZW5kbDsKICBvdXQgPDwgIm1hbmlmZXN0
IGRlbHRhcyA6ICIgPDwgZ2V0X3N0YXRpc3RpYygiU0VMRUNUIENPVU5UKCopIEZST00gbWFu
aWZlc3RfZGVsdGFzIikgPDwgZW5kbDsKICBvdXQgPDwgImZ1bGwgZmlsZXMgICAgICA6ICIg
PDwgZ2V0X3N0YXRpc3RpYygiU0VMRUNUIENPVU5UKCopIEZST00gZmlsZXMiKSA8PCBlbmRs
OwogIG91dCA8PCAiZmlsZSBkZWx0YXMgICAgIDogIiA8PCBnZXRfc3RhdGlzdGljKCJTRUxF
Q1QgQ09VTlQoKikgRlJPTSBmaWxlX2RlbHRhcyIpIDw8IGVuZGw7Cn0KCnZvaWQgCmRhdGFi
YXNlOjp2ZXJzaW9uKG9zdHJlYW0gJiBvdXQpCnsKICBzdHJpbmcgaWQ7CiAgY2FsY3VsYXRl
X3NjaGVtYV9pZChzcWwoKSwgaWQpOwogIG91dCA8PCAiZGF0YWJhc2Ugc2NoZW1hIHZlcnNp
b246ICIgPDwgaWQgPDwgZW5kbDsKfQoKdm9pZCAKZGF0YWJhc2U6Om1pZ3JhdGUoKQp7ICAK
ICBOKGZpbGVuYW1lLnN0cmluZygpICE9ICIiLAogICAgRigibmVlZCBkYXRhYmFzZSBuYW1l
IikpOwogIGNoYXIgKiBlcnJtc2cgPSBOVUxMOwogIF9fc3FsID0gc3FsaXRlX29wZW4oZmls
ZW5hbWUuc3RyaW5nKCkuY19zdHIoKSwgMDc1NSwgJmVycm1zZyk7CiAgaWYgKCEgX19zcWwp
CiAgICB0aHJvdyBvb3BzKHN0cmluZygiY291bGQgbm90IG9wZW4gZGF0YWJhc2U6ICIpICsg
ZmlsZW5hbWUuc3RyaW5nKCkgKyAKCSAgICAgICAoZXJybXNnID8gKCI6ICIgKyBzdHJpbmco
ZXJybXNnKSkgOiAiIikpOwogIG1pZ3JhdGVfbW9ub3RvbmVfc2NoZW1hKF9fc3FsKTsKICBz
cWxpdGVfY2xvc2UoX19zcWwpOwp9Cgp2b2lkIApkYXRhYmFzZTo6cmVoYXNoKCkKewogIHRy
YW5zYWN0aW9uX2d1YXJkIGd1YXJkKCp0aGlzKTsKICB0aWNrZXIgbWNlcnRzKCJtY2VydHMi
LCAibSIsIDEpOwogIHRpY2tlciBmY2VydHMoImZjZXJ0cyIsICJmIiwgMSk7CiAgdGlja2Vy
IHB1YmtleXMoInB1YmtleXMiLCAiKyIsIDEpOwogIHRpY2tlciBwcml2a2V5cygicHJpdmtl
eXMiLCAiISIsIDEpOwogIAogIHsKICAgIC8vIHJlaGFzaCBhbGwgbWNlcnRzCiAgICByZXN1
bHRzIHJlczsKICAgIHZlY3RvcjxjZXJ0PiBjZXJ0czsKICAgIGZldGNoKHJlcywgNSwgYW55
X3Jvd3MsIAoJICAiU0VMRUNUIGlkLCBuYW1lLCB2YWx1ZSwga2V5cGFpciwgc2lnbmF0dXJl
ICIKCSAgIkZST00gbWFuaWZlc3RfY2VydHMiKTsKICAgIHJlc3VsdHNfdG9fY2VydHMocmVz
LCBjZXJ0cyk7CiAgICBleGVjdXRlKCJERUxFVEUgRlJPTSBtYW5pZmVzdF9jZXJ0cyIpOwog
ICAgZm9yKHZlY3RvcjxjZXJ0Pjo6Y29uc3RfaXRlcmF0b3IgaSA9IGNlcnRzLmJlZ2luKCk7
IGkgIT0gY2VydHMuZW5kKCk7ICsraSkKICAgICAgewoJcHV0X2NlcnQoKmksICJtYW5pZmVz
dF9jZXJ0cyIpOwoJKyttY2VydHM7CiAgICAgIH0KICB9CgogIHsKICAgIC8vIHJlaGFzaCBh
bGwgZmNlcnRzCiAgICByZXN1bHRzIHJlczsKICAgIHZlY3RvcjxjZXJ0PiBjZXJ0czsgICAg
CiAgICBmZXRjaChyZXMsIDUsIGFueV9yb3dzLCAKCSAgIlNFTEVDVCBpZCwgbmFtZSwgdmFs
dWUsIGtleXBhaXIsIHNpZ25hdHVyZSAiCgkgICJGUk9NIGZpbGVfY2VydHMiKTsKICAgIHJl
c3VsdHNfdG9fY2VydHMocmVzLCBjZXJ0cyk7CiAgICBleGVjdXRlKCJERUxFVEUgRlJPTSBm
aWxlX2NlcnRzIik7CiAgICBmb3IodmVjdG9yPGNlcnQ+Ojpjb25zdF9pdGVyYXRvciBpID0g
Y2VydHMuYmVnaW4oKTsgaSAhPSBjZXJ0cy5lbmQoKTsgKytpKQogICAgICB7CglwdXRfY2Vy
dCgqaSwgImZpbGVfY2VydHMiKTsKCSsrZmNlcnRzOwogICAgICB9CiAgfQogIAoKICB7CiAg
ICAvLyByZWhhc2ggYWxsIHB1YmtleXMKICAgIHJlc3VsdHMgcmVzOwogICAgZmV0Y2gocmVz
LCAyLCBhbnlfcm93cywgIlNFTEVDVCBpZCwga2V5ZGF0YSBGUk9NIHB1YmxpY19rZXlzIik7
CiAgICBleGVjdXRlKCJERUxFVEUgRlJPTSBwdWJsaWNfa2V5cyIpOwogICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCByZXMuc2l6ZSgpOyArK2kpCiAgICAgIHsKCWhleGVuYzxpZD4gdG1w
OwoJa2V5X2hhc2hfY29kZShyc2Ffa2V5cGFpcl9pZChyZXNbaV1bMF0pLCBiYXNlNjQ8cnNh
X3B1Yl9rZXk+KHJlc1tpXVsxXSksIHRtcCk7CglleGVjdXRlKCJJTlNFUlQgSU5UTyBwdWJs
aWNfa2V5cyBWQUxVRVMoJyVxJywgJyVxJywgJyVxJykiLCAKCQl0bXAoKS5jX3N0cigpLCBy
ZXNbaV1bMF0uY19zdHIoKSwgcmVzW2ldWzFdLmNfc3RyKCkpOwoJKytwdWJrZXlzOwogICAg
ICB9CiAgfQoKewogICAgLy8gcmVoYXNoIGFsbCBwcml2a2V5cwogICAgcmVzdWx0cyByZXM7
CiAgICBmZXRjaChyZXMsIDIsIGFueV9yb3dzLCAiU0VMRUNUIGlkLCBrZXlkYXRhIEZST00g
cHJpdmF0ZV9rZXlzIik7CiAgICBleGVjdXRlKCJERUxFVEUgRlJPTSBwcml2YXRlX2tleXMi
KTsKICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzLnNpemUoKTsgKytpKQogICAgICB7
CgloZXhlbmM8aWQ+IHRtcDsKCWtleV9oYXNoX2NvZGUocnNhX2tleXBhaXJfaWQocmVzW2ld
WzBdKSwgYmFzZTY0PCBhcmM0PHJzYV9wcml2X2tleT4gPihyZXNbaV1bMV0pLCB0bXApOwoJ
ZXhlY3V0ZSgiSU5TRVJUIElOVE8gcHJpdmF0ZV9rZXlzIFZBTFVFUygnJXEnLCAnJXEnLCAn
JXEnKSIsIAoJCXRtcCgpLmNfc3RyKCksIHJlc1tpXVswXS5jX3N0cigpLCByZXNbaV1bMV0u
Y19zdHIoKSk7CgkrK3ByaXZrZXlzOwogICAgICB9CiAgfQoKICBndWFyZC5jb21taXQoKTsK
fQoKdm9pZCAKZGF0YWJhc2U6OmVuc3VyZV9vcGVuKCkKewogIHNxbGl0ZSAqcyA9IHNxbCgp
OwogIEkocyAhPSBOVUxMKTsKfQoKZGF0YWJhc2U6On5kYXRhYmFzZSgpIAp7CiAgaWYgKF9f
c3FsKQogICAgewogICAgICBzcWxpdGVfY2xvc2UoX19zcWwpOwogICAgICBfX3NxbCA9IDA7
CiAgICB9Cn0KCnN0YXRpYyB2b2lkIAphc3NlcnRfc3FsaXRlX29rKGludCByZXMpCnsKICBz
d2l0Y2ggKHJlcykKICAgIHsgICAgICAKICAgIGNhc2UgU1FMSVRFX09LOiAKICAgICAgYnJl
YWs7CgogICAgY2FzZSBTUUxJVEVfRVJST1I6CiAgICAgIHRocm93IG9vcHMoIlNRTCBlcnJv
ciBvciBtaXNzaW5nIGRhdGFiYXNlIik7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgU1FMSVRF
X0lOVEVSTkFMOgogICAgICB0aHJvdyBvb3BzKCJBbiBpbnRlcm5hbCBsb2dpYyBlcnJvciBp
biBTUUxpdGUiKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBTUUxJVEVfUEVSTToKICAgICAg
dGhyb3cgb29wcygiQWNjZXNzIHBlcm1pc3Npb24gZGVuaWVkIik7CiAgICAgIGJyZWFrOwoK
ICAgIGNhc2UgU1FMSVRFX0FCT1JUOgogICAgICB0aHJvdyBvb3BzKCJDYWxsYmFjayByb3V0
aW5lIHJlcXVlc3RlZCBhbiBhYm9ydCIpOwogICAgICBicmVhazsKCiAgICBjYXNlIFNRTElU
RV9CVVNZOgogICAgICB0aHJvdyBvb3BzKCJUaGUgZGF0YWJhc2UgZmlsZSBpcyBsb2NrZWQi
KTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBTUUxJVEVfTE9DS0VEOgogICAgICB0aHJvdyBv
b3BzKCJBIHRhYmxlIGluIHRoZSBkYXRhYmFzZSBpcyBsb2NrZWQiKTsKICAgICAgYnJlYWs7
CgogICAgY2FzZSBTUUxJVEVfTk9NRU06CiAgICAgIHRocm93IG9vcHMoIkEgbWFsbG9jKCkg
ZmFpbGVkIik7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgU1FMSVRFX1JFQURPTkxZOgogICAg
ICB0aHJvdyBvb3BzKCJBdHRlbXB0IHRvIHdyaXRlIGEgcmVhZG9ubHkgZGF0YWJhc2UiKTsK
ICAgICAgYnJlYWs7CgogICAgY2FzZSBTUUxJVEVfSU5URVJSVVBUOgogICAgICB0aHJvdyBv
b3BzKCJPcGVyYXRpb24gdGVybWluYXRlZCBieSBzcWxpdGVfaW50ZXJydXB0KCkiKTsKICAg
ICAgYnJlYWs7CgogICAgY2FzZSBTUUxJVEVfSU9FUlI6CiAgICAgIHRocm93IG9vcHMoIlNv
bWUga2luZCBvZiBkaXNrIEkvTyBlcnJvciBvY2N1cnJlZCIpOwogICAgICBicmVhazsKCiAg
ICBjYXNlIFNRTElURV9DT1JSVVBUOgogICAgICB0aHJvdyBvb3BzKCJUaGUgZGF0YWJhc2Ug
ZGlzayBpbWFnZSBpcyBtYWxmb3JtZWQiKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBTUUxJ
VEVfTk9URk9VTkQ6CiAgICAgIHRocm93IG9vcHMoIihJbnRlcm5hbCBPbmx5KSBUYWJsZSBv
ciByZWNvcmQgbm90IGZvdW5kIik7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgU1FMSVRFX0ZV
TEw6CiAgICAgIHRocm93IG9vcHMoIkluc2VydGlvbiBmYWlsZWQgYmVjYXVzZSBkYXRhYmFz
ZSBpcyBmdWxsIik7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgU1FMSVRFX0NBTlRPUEVOOgog
ICAgICB0aHJvdyBvb3BzKCJVbmFibGUgdG8gb3BlbiB0aGUgZGF0YWJhc2UgZmlsZSIpOwog
ICAgICBicmVhazsKCiAgICBjYXNlIFNRTElURV9QUk9UT0NPTDoKICAgICAgdGhyb3cgb29w
cygiZGF0YWJhc2UgbG9jayBwcm90b2NvbCBlcnJvciIpOwogICAgICBicmVhazsKCiAgICBj
YXNlIFNRTElURV9FTVBUWToKICAgICAgdGhyb3cgb29wcygiKEludGVybmFsIE9ubHkpIGRh
dGFiYXNlIHRhYmxlIGlzIGVtcHR5Iik7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgU1FMSVRF
X1NDSEVNQToKICAgICAgdGhyb3cgb29wcygiVGhlIGRhdGFiYXNlIHNjaGVtYSBjaGFuZ2Vk
Iik7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgU1FMSVRFX1RPT0JJRzoKICAgICAgdGhyb3cg
b29wcygiVG9vIG11Y2ggZGF0YSBmb3Igb25lIHJvdyBvZiBhIHRhYmxlIik7CiAgICAgIGJy
ZWFrOwoKICAgIGNhc2UgU1FMSVRFX0NPTlNUUkFJTlQ6CiAgICAgIHRocm93IG9vcHMoIkFi
b3J0IGR1ZSB0byBjb250cmFpbnQgdmlvbGF0aW9uIik7CiAgICAgIGJyZWFrOwoKICAgIGNh
c2UgU1FMSVRFX01JU01BVENIOgogICAgICB0aHJvdyBvb3BzKCJEYXRhIHR5cGUgbWlzbWF0
Y2giKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBTUUxJVEVfTUlTVVNFOgogICAgICB0aHJv
dyBvb3BzKCJMaWJyYXJ5IHVzZWQgaW5jb3JyZWN0bHkiKTsKICAgICAgYnJlYWs7CgogICAg
ZGVmYXVsdDoKICAgICAgdGhyb3cgb29wcyhzdHJpbmcoIlVua25vd24gREIgcmVzdWx0IGNv
ZGU6ICIpICsgbGV4aWNhbF9jYXN0PHN0cmluZz4ocmVzKSk7CiAgICAgIGJyZWFrOwogICAg
fQp9Cgp2b2lkIApkYXRhYmFzZTo6ZXhlY3V0ZShjaGFyIGNvbnN0ICogcXVlcnksIC4uLikK
ewogIHZhX2xpc3QgYXA7CiAgaW50IHJlczsKICBjaGFyICogZXJybXNnID0gTlVMTDsKCiAg
dmFfc3RhcnQoYXAsIHF1ZXJ5KTsKCiAgLy8gbG9nIGl0CiAgY2hhciAqIGZvcm1hdHRlZCA9
IHNxbGl0ZV92bXByaW50ZihxdWVyeSwgYXApOwogIHN0cmluZyBxcShmb3JtYXR0ZWQpOwog
IGlmIChxcS5zaXplKCkgPiBjb25zdGFudHM6OmRiX2xvZ19saW5lX3N6KSAKICAgIHFxID0g
cXEuc3Vic3RyKDAsIGNvbnN0YW50czo6ZGJfbG9nX2xpbmVfc3opICsgc3RyaW5nKCIgLi4u
Iik7CiAgTChGKCJkYi5leGVjdXRlKFwiJXNcIilcbiIpICUgcXEpOwogIHNxbGl0ZV9mcmVl
bWVtKGZvcm1hdHRlZCk7CgogIHZhX2VuZChhcCk7CiAgdmFfc3RhcnQoYXAsIHF1ZXJ5KTsK
CiAgLy8gZG8gaXQKICByZXMgPSBzcWxpdGVfZXhlY192cHJpbnRmKHNxbCgpLCBxdWVyeSwg
TlVMTCwgTlVMTCwgJmVycm1zZywgYXApOwoKICB2YV9lbmQoYXApOwoKICBpZiAoZXJybXNn
KQogICAgdGhyb3cgb29wcyhzdHJpbmcoInNxbGl0ZSBleGVjIGVycm9yICIpICsgZXJybXNn
KTsKCiAgYXNzZXJ0X3NxbGl0ZV9vayhyZXMpOwoKfQoKdm9pZCAKZGF0YWJhc2U6OmZldGNo
KHJlc3VsdHMgJiByZXMsIAoJCWludCBjb25zdCB3YW50X2NvbHMsIAoJCWludCBjb25zdCB3
YW50X3Jvd3MsIAoJCWNoYXIgY29uc3QgKiBxdWVyeSwgLi4uKQp7CiAgY2hhciAqKiByZXN1
bHQgPSBOVUxMOwogIGludCBucm93OwogIGludCBuY29sOwogIGNoYXIgKiBlcnJtc2cgPSBO
VUxMOwogIGludCByZXNjb2RlOwoKICB2YV9saXN0IGFwOwogIHJlcy5jbGVhcigpOwogIHJl
cy5yZXNpemUoMCk7CiAgdmFfc3RhcnQoYXAsIHF1ZXJ5KTsKCiAgLy8gbG9nIGl0CiAgY2hh
ciAqIGZvcm1hdHRlZCA9IHNxbGl0ZV92bXByaW50ZihxdWVyeSwgYXApOwogIHN0cmluZyBx
cShmb3JtYXR0ZWQpOwogIGlmIChxcS5zaXplKCkgPiBjb25zdGFudHM6OmxvZ19saW5lX3N6
KSAKICAgIHFxID0gcXEuc3Vic3RyKDAsIGNvbnN0YW50czo6bG9nX2xpbmVfc3opICsgc3Ry
aW5nKCIgLi4uIik7CiAgTChGKCJkYi5mZXRjaChcIiVzXCIpXG4iKSAlIHFxKTsKICBzcWxp
dGVfZnJlZW1lbShmb3JtYXR0ZWQpOwoKICB2YV9lbmQoYXApOwogIHZhX3N0YXJ0KGFwLCBx
dWVyeSk7CgogIC8vIGRvIGl0CiAgcmVzY29kZSA9IHNxbGl0ZV9nZXRfdGFibGVfdnByaW50
ZihzcWwoKSwgcXVlcnksICZyZXN1bHQsICZucm93LCAmbmNvbCwgJmVycm1zZywgYXApOwoK
ICB2YV9lbmQoYXApOwoKICBjbGVhbnVwX3B0cjxjaGFyICoqLCB2b2lkPiAKICAgIHJlc3Vs
dF9ndWFyZChyZXN1bHQsICZzcWxpdGVfZnJlZV90YWJsZSk7CgogIHN0cmluZyBjdHggPSBz
dHJpbmcoImRiIHF1ZXJ5IFsiKSArIHN0cmluZyhxdWVyeSkgKyAiXTogIjsKCiAgaWYgKGVy
cm1zZykKICAgIHRocm93IG9vcHMoY3R4ICsgc3RyaW5nKCJzcWxpdGUgZXJyb3IgIikgKyBl
cnJtc2cpOwogIGFzc2VydF9zcWxpdGVfb2socmVzY29kZSk7CgogIGlmICh3YW50X2NvbHMg
PT0gMCAmJiBuY29sID09IDApIHJldHVybjsKICBpZiAod2FudF9yb3dzID09IDAgJiYgbnJv
dyA9PSAwKSByZXR1cm47CiAgaWYgKHdhbnRfY29scyA9PSBhbnlfcm93cyAmJiBuY29sID09
IDApIHJldHVybjsKICBpZiAod2FudF9yb3dzID09IGFueV9yb3dzICYmIG5yb3cgPT0gMCkg
cmV0dXJuOwoKICBpZiAod2FudF9jb2xzICE9IGFueV9jb2xzICYmCiAgICAgIG5jb2wgIT0g
d2FudF9jb2xzKQogICAgdGhyb3cgb29wcygoRigiJXMgd2FudGVkICVkIGNvbHVtbnMsIGdv
dCAlcyIpCgkJJSBjdHggJSB3YW50X2NvbHMgJSBuY29sKS5zdHIoKSk7CgogIGlmICh3YW50
X3Jvd3MgIT0gYW55X3Jvd3MgJiYKICAgICAgbnJvdyAhPSB3YW50X3Jvd3MpCiAgICB0aHJv
dyBvb3BzKChGKCIlcyB3YW50ZWQgJWQgcm93cywgZ290ICVzIikKCQklIGN0eCAlIHdhbnRf
cm93cyAlIG5yb3cpLnN0cigpKTsKCiAgaWYgKCFyZXN1bHQpCiAgICB0aHJvdyBvb3BzKGN0
eCArICJudWxsIHJlc3VsdCBzZXQiKTsKCiAgZm9yIChpbnQgaSA9IDA7IGkgPCBuY29sOyAr
K2kpIAogICAgaWYgKCFyZXN1bHRbaV0pCiAgICAgIHRocm93IG9vcHMoY3R4ICsgIm51bGwg
Y29sdW1uIG5hbWUiKTsKCiAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgbnJvdzsgKytyb3cp
IAogICAgewogICAgICB2ZWN0b3I8c3RyaW5nPiByb3d2ZWM7CiAgICAgIGZvciAoaW50IGNv
bCA9IDA7IGNvbCA8IG5jb2w7ICsrY29sKQoJewoJICBpbnQgaSA9ICgoMSArIHJvdykgKiBu
Y29sKSArIGNvbDsKCSAgaWYgKCFyZXN1bHRbaV0pCgkgICAgdGhyb3cgb29wcyhjdHggKyAi
bnVsbCByZXN1bHQgdmFsdWUiKTsKCSAgZWxzZQoJICAgIHJvd3ZlYy5wdXNoX2JhY2socmVz
dWx0W2ldKTsKCX0KICAgICAgcmVzLnB1c2hfYmFjayhyb3d2ZWMpOwogICAgfQp9CgovLyBn
ZW5lcmFsIGFwcGxpY2F0aW9uLWxldmVsIGxvZ2ljCgp2b2lkIApkYXRhYmFzZTo6c2V0X2Zp
bGVuYW1lKGZzOjpwYXRoIGNvbnN0ICYgZmlsZSkKewogIGlmIChfX3NxbCkKICAgIHsKICAg
ICAgdGhyb3cgb29wcygiY2Fubm90IGNoYW5nZSBmaWxlbmFtZSB0byAiICsgZmlsZS5zdHJp
bmcoKSArICIgd2hpbGUgZGIgaXMgb3BlbiIpOwogICAgfQogIGZpbGVuYW1lID0gZmlsZTsK
fQoKdm9pZCAKZGF0YWJhc2U6OmJlZ2luX3RyYW5zYWN0aW9uKCkgCnsKICBpZiAodHJhbnNh
Y3Rpb25fbGV2ZWwgPT0gMCkKICAgICAgZXhlY3V0ZSgiQkVHSU4iKTsKICB0cmFuc2FjdGlv
bl9sZXZlbCsrOwp9Cgp2b2lkIApkYXRhYmFzZTo6Y29tbWl0X3RyYW5zYWN0aW9uKCkKewog
IGlmICh0cmFuc2FjdGlvbl9sZXZlbCA9PSAxKQogICAgZXhlY3V0ZSgiQ09NTUlUIik7CiAg
dHJhbnNhY3Rpb25fbGV2ZWwtLTsKfQoKdm9pZCAKZGF0YWJhc2U6OnJvbGxiYWNrX3RyYW5z
YWN0aW9uKCkKewogIGlmICh0cmFuc2FjdGlvbl9sZXZlbCA9PSAxKQogICAgZXhlY3V0ZSgi
Uk9MTEJBQ0siKTsKICB0cmFuc2FjdGlvbl9sZXZlbC0tOwp9CgoKYm9vbCAKZGF0YWJhc2U6
OmV4aXN0cyhoZXhlbmM8aWQ+IGNvbnN0ICYgaWRlbnQsCgkJICAgICAgc3RyaW5nIGNvbnN0
ICYgdGFibGUpCnsKICByZXN1bHRzIHJlczsKICBmZXRjaChyZXMsIG9uZV9jb2wsIGFueV9y
b3dzLCAKCSJTRUxFQ1QgaWQgRlJPTSAnJXEnIFdIRVJFIGlkID0gJyVxJyIsCgl0YWJsZS5j
X3N0cigpLCBpZGVudCgpLmNfc3RyKCkpOwogIEkoKHJlcy5zaXplKCkgPT0gMSkgfHwgKHJl
cy5zaXplKCkgPT0gMCkpOwogIHJldHVybiByZXMuc2l6ZSgpID09IDE7Cn0KCgpib29sIApk
YXRhYmFzZTo6ZGVsdGFfZXhpc3RzKGhleGVuYzxpZD4gY29uc3QgJiBpZGVudCwKCQkgICAg
ICAgc3RyaW5nIGNvbnN0ICYgdGFibGUpCnsKICByZXN1bHRzIHJlczsKICBmZXRjaChyZXMs
IG9uZV9jb2wsIGFueV9yb3dzLCAKCSJTRUxFQ1QgaWQgRlJPTSAnJXEnIFdIRVJFIGlkID0g
JyVxJyIsCgl0YWJsZS5jX3N0cigpLCBpZGVudCgpLmNfc3RyKCkpOwogIHJldHVybiByZXMu
c2l6ZSgpID4gMDsKfQoKYm9vbCAKZGF0YWJhc2U6OmRlbHRhX2V4aXN0cyhoZXhlbmM8aWQ+
IGNvbnN0ICYgaWRlbnQsCgkJICAgICAgIGhleGVuYzxpZD4gY29uc3QgJiBiYXNlLAoJCSAg
ICAgICBzdHJpbmcgY29uc3QgJiB0YWJsZSkKewogIHJlc3VsdHMgcmVzOwogIGZldGNoKHJl
cywgb25lX2NvbCwgYW55X3Jvd3MsIAoJIlNFTEVDVCBpZCBGUk9NICclcScgV0hFUkUgaWQg
PSAnJXEnIEFORCBiYXNlID0gJyVxJyIsCgl0YWJsZS5jX3N0cigpLCBpZGVudCgpLmNfc3Ry
KCksIGJhc2UoKS5jX3N0cigpKTsKICBJKChyZXMuc2l6ZSgpID09IDEpIHx8IChyZXMuc2l6
ZSgpID09IDApKTsKICByZXR1cm4gcmVzLnNpemUoKSA9PSAxOwp9CgppbnQgCmRhdGFiYXNl
Ojpjb3VudChzdHJpbmcgY29uc3QgJiB0YWJsZSkKewogIHJlc3VsdHMgcmVzOwogIGZldGNo
KHJlcywgb25lX2NvbCwgb25lX3JvdywgCgkiU0VMRUNUIENPVU5UKCopIEZST00gJyVxJyIs
IAoJdGFibGUuY19zdHIoKSk7CiAgcmV0dXJuIGxleGljYWxfY2FzdDxpbnQ+KHJlc1swXVsw
XSk7ICAKfQoKdm9pZCAKZGF0YWJhc2U6OmdldChoZXhlbmM8aWQ+IGNvbnN0ICYgaWRlbnQs
CgkgICAgICBiYXNlNjQ8IGd6aXA8ZGF0YT4gPiAmIGRhdCwKCSAgICAgIHN0cmluZyBjb25z
dCAmIHRhYmxlKQp7CiAgcmVzdWx0cyByZXM7CiAgZmV0Y2gocmVzLCBvbmVfY29sLCBvbmVf
cm93LAoJIlNFTEVDVCBkYXRhIEZST00gJyVxJyBXSEVSRSBpZCA9ICclcSciLCAKCXRhYmxl
LmNfc3RyKCksIGlkZW50KCkuY19zdHIoKSk7CgogIC8vIGNvbnNpc3RlbmN5IGNoZWNrCiAg
YmFzZTY0PGd6aXA8ZGF0YT4gPiByZGF0YShyZXNbMF1bMF0pOwogIGhleGVuYzxpZD4gdGlk
OwogIGNhbGN1bGF0ZV9pZGVudChyZGF0YSwgdGlkKTsKICBJKHRpZCA9PSBpZGVudCk7Cgog
IGRhdCA9IHJkYXRhOwp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X2RlbHRhKGhleGVuYzxpZD4g
Y29uc3QgJiBpZGVudCwKCQkgICAgaGV4ZW5jPGlkPiBjb25zdCAmIGJhc2UsCgkJICAgIGJh
c2U2NDwgZ3ppcDxkZWx0YT4gPiAmIGRlbCwKCQkgICAgc3RyaW5nIGNvbnN0ICYgdGFibGUp
CnsKICBJKGlkZW50KCkgIT0gIiIpOwogIEkoYmFzZSgpICE9ICIiKTsKICByZXN1bHRzIHJl
czsKICBmZXRjaChyZXMsIG9uZV9jb2wsIG9uZV9yb3csCgkiU0VMRUNUIGRlbHRhIEZST00g
JyVxJyBXSEVSRSBpZCA9ICclcScgQU5EIGJhc2UgPSAnJXEnIiwgCgl0YWJsZS5jX3N0cigp
LCBpZGVudCgpLmNfc3RyKCksIGJhc2UoKS5jX3N0cigpKTsKICBkZWwgPSByZXNbMF1bMF07
Cn0KCnZvaWQgCmRhdGFiYXNlOjpwdXQoaGV4ZW5jPGlkPiBjb25zdCAmIGlkZW50LAoJICAg
ICAgYmFzZTY0PCBnemlwPGRhdGE+ID4gY29uc3QgJiBkYXQsCgkgICAgICBzdHJpbmcgY29u
c3QgJiB0YWJsZSkKewogIC8vIGNvbnNpc3RlbmN5IGNoZWNrCiAgSShpZGVudCgpICE9ICIi
KTsKICBoZXhlbmM8aWQ+IHRpZDsKICBjYWxjdWxhdGVfaWRlbnQoZGF0LCB0aWQpOwogIEko
dGlkID09IGlkZW50KTsKICAKICBleGVjdXRlKCJJTlNFUlQgSU5UTyAnJXEnIFZBTFVFUygn
JXEnLCAnJXEnKSIsIAoJICB0YWJsZS5jX3N0cigpLCBpZGVudCgpLmNfc3RyKCksIGRhdCgp
LmNfc3RyKCkpOwp9CgoKdm9pZCAKZGF0YWJhc2U6OnB1dF9kZWx0YShoZXhlbmM8aWQ+IGNv
bnN0ICYgaWRlbnQsCgkJICAgIGhleGVuYzxpZD4gY29uc3QgJiBiYXNlLAoJCSAgICBiYXNl
NjQ8Z3ppcDxkZWx0YT4gPiBjb25zdCAmIGRlbCwKCQkgICAgc3RyaW5nIGNvbnN0ICYgdGFi
bGUpCnsKICAvLyBuYjogZGVsdGEgc2NoZW1hIGlzIChpZCwgYmFzZSwgZGVsdGEpCiAgSShp
ZGVudCgpICE9ICIiKTsKICBJKGJhc2UoKSAhPSAiIik7CiAgZXhlY3V0ZSgiSU5TRVJUIElO
VE8gJyVxJyBWQUxVRVMoJyVxJywgJyVxJywgJyVxJykiLCAKCSAgdGFibGUuY19zdHIoKSwg
CgkgIGlkZW50KCkuY19zdHIoKSwgYmFzZSgpLmNfc3RyKCksIGRlbCgpLmNfc3RyKCkpOwp9
Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X3ZlcnNpb24oaGV4ZW5jPGlkPiBjb25zdCAmIGlkZW50
LAoJCSAgICAgIGJhc2U2NDwgZ3ppcDxkYXRhPiA+ICYgZGF0LAoJCSAgICAgIHN0cmluZyBj
b25zdCAmIGRhdGFfdGFibGUsCgkJICAgICAgc3RyaW5nIGNvbnN0ICYgZGVsdGFfdGFibGUp
CnsKICBJKGlkZW50KCkgIT0gIiIpOwogIGlmIChleGlzdHMoaWRlbnQsIGRhdGFfdGFibGUp
KQogICAgewogICAgICAvLyBlYXN5IHBhdGgKICAgICAgZ2V0KGlkZW50LCBkYXQsIGRhdGFf
dGFibGUpOwogICAgfQogIGVsc2UKICAgIHsKICAgICAgLy8gdHJpY2t5IHBhdGgKCiAgICAg
IC8vIHdlIHN0YXJ0IGZyb20gdGhlIGZpbGUgd2Ugd2FudCB0byByZWNvbnN0cnVjdCBhbmQg
d29yayAqZm9yd2FyZHMqCiAgICAgIC8vIHRocm91Z2ggdGhlIGRhdGFiYXNlLCB1bnRpbCB3
ZSBnZXQgdG8gYSBmdWxsIGRhdGEgb2JqZWN0LiB3ZSB0aGVuCiAgICAgIC8vIHRyYWNlIGJh
Y2sgdGhyb3VnaCB0aGUgbGlzdCBvZiBlZGdlcyB3ZSBmb2xsb3dlZCB0byBnZXQgdG8gdGhl
IGRhdGEKICAgICAgLy8gb2JqZWN0LCBhcHBseWluZyByZXZlcnNlIGRlbHRhcy4KICAgICAg
Ly8KICAgICAgLy8gdGhlIGVmZmVjdCBvZiB0aGlzIGFsZ29yaXRobSBpcyBicmVhZHRoLWZp
cnN0IHNlYXJjaCwgYmFja3dhcmRzCiAgICAgIC8vIHRocm91Z2ggdGhlIHN0b3JhZ2UgZ3Jh
cGgsIHRvIGRpc2NvdmVyIGEgZm9yd2FyZHMgc2hvcnRlc3QgcGF0aCwgYW5kCiAgICAgIC8v
IHRoZW4gZm9sbG93aW5nIHRoYXQgc2hvcnRlc3QgcGF0aCB3aXRoIGRlbHRhIGFwcGxpY2F0
aW9uLgogICAgICAvLwogICAgICAvLyB3ZSB1c2VkIHRvIGRvIHRoaXMgd2l0aCB0aGUgYm9v
c3QgZ3JhcGggbGlicmFyeSwgYnV0IGl0IGludm92bGVkCiAgICAgIC8vIGxvYWRpbmcgdG9v
IG11Y2ggb2YgdGhlIHN0b3JhZ2UgZ3JhcGggaW50byBtZW1vcnkgYXQgYW55IG1vbWVudC4g
dGhpcwogICAgICAvLyBpbXBlcmF0aXZlIHZlcnNpb24gb25seSBsb2FkcyB0aGUgZGVzY2Vu
ZGVudHMgb2YgdGhlIHJlY29uc3RydWN0aW9uCiAgICAgIC8vIG5vZGUsIHNvIGl0IG11Y2gg
Y2hlYXBlciBpbiB0ZXJtcyBvZiBtZW1vcnkuCiAgICAgIC8vCiAgICAgIC8vIHdlIGFsc28g
bWFpbnRhaW4gYSBjeWNsZS1kZXRlY3Rpbmcgc2V0LCBqdXN0IHRvIGJlIHNhZmUKICAgICAg
CiAgICAgIEwoRigicmVjb25zdHJ1Y3RpbmcgJXMgaW4gJXNcbiIpICUgaWRlbnQgJSBkZWx0
YV90YWJsZSk7CiAgICAgIEkoZGVsdGFfZXhpc3RzKGlkZW50LCBkZWx0YV90YWJsZSkpOwog
ICAgICAKICAgICAgLy8gbmI6IGFuIGVkZ2UgbWFwIGdvZXMgaW4gdGhlIGRpcmVjdGlvbiBv
ZiB0aGUKICAgICAgLy8gZGVsdGEsICpub3QqIHRoZSBkaXJlY3Rpb24gd2UgZGlzY292ZXIg
dGhpbmdzIGluLAogICAgICAvLyBpLmUuIGVhY2ggbWFwIGlzIG9mIHRoZSBmb3JtIFtuZXdp
ZF0gLT4gW29sZGlkXQoKICAgICAgdHlwZWRlZiBtYXA8IGhleGVuYzxpZD4sIGhleGVuYzxp
ZD4gPiBlZGdlbWFwOwogICAgICBsaXN0PCBzaGFyZWRfcHRyPGVkZ2VtYXA+ID4gcGF0aHM7
CgogICAgICBzZXQ8IGhleGVuYzxpZD4gPiBmcm9udGllciwgY3ljbGVzOwogICAgICBmcm9u
dGllci5pbnNlcnQoaWRlbnQpOwoKICAgICAgYm9vbCBmb3VuZF9yb290ID0gZmFsc2U7CiAg
ICAgIGhleGVuYzxpZD4gcm9vdCgiIik7CgogICAgICB3aGlsZSAoISBmb3VuZF9yb290KQoJ
ewoJICBzZXQ8IGhleGVuYzxpZD4gPiBuZXh0X2Zyb250aWVyOwoJICBzaGFyZWRfcHRyPGVk
Z2VtYXA+IGZyb250aWVyX21hcChuZXcgZWRnZW1hcCgpKTsKCgkgIEkoIWZyb250aWVyLmVt
cHR5KCkpOwoKCSAgZm9yIChzZXQ8IGhleGVuYzxpZD4gPjo6Y29uc3RfaXRlcmF0b3IgaSA9
IGZyb250aWVyLmJlZ2luKCk7CgkgICAgICAgaSAhPSBmcm9udGllci5lbmQoKTsgKytpKQoJ
ICAgIHsKCSAgICAgIGlmIChleGlzdHMoKmksIGRhdGFfdGFibGUpKQoJCXsKCQkgIHJvb3Qg
PSAqaTsKCQkgIGZvdW5kX3Jvb3QgPSB0cnVlOwoJCSAgYnJlYWs7CgkJfQoJICAgICAgZWxz
ZQoJCXsKCQkgIGN5Y2xlcy5pbnNlcnQoKmkpOwoJCSAgcmVzdWx0cyByZXM7CgkJICBmZXRj
aChyZXMsIG9uZV9jb2wsIGFueV9yb3dzLCAiU0VMRUNUIGJhc2UgZnJvbSAnJXEnIFdIRVJF
IGlkID0gJyVxJyIsCgkJCWRlbHRhX3RhYmxlLmNfc3RyKCksICgqaSkoKS5jX3N0cigpKTsK
CQkgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgcmVzLnNpemUoKTsgKytrKQoJCSAgICB7CgkJ
ICAgICAgaGV4ZW5jPGlkPiBjb25zdCBueHQocmVzW2tdWzBdKTsKCgkJICAgICAgaWYgKGN5
Y2xlcy5maW5kKG54dCkgIT0gY3ljbGVzLmVuZCgpKQoJCQl0aHJvdyBvb3BzKCJjeWNsZSBp
biB0YWJsZSAnIiArIGRlbHRhX3RhYmxlICsgIicsIGF0IG5vZGUgIiAKCQkJCSAgICsgKCpp
KSgpICsgIiA8LSAiICsgbnh0KCkpOwoKCQkgICAgICBuZXh0X2Zyb250aWVyLmluc2VydChu
eHQpOwoKCQkgICAgICBpZiAoZnJvbnRpZXJfbWFwLT5maW5kKG54dCkgPT0gZnJvbnRpZXJf
bWFwLT5lbmQoKSkKCQkJewoJCQkgIEwoRigiaW5zZXJ0aW5nIGVkZ2U6ICVzIDwtICVzXG4i
KSAlICgqaSkgJSBueHQpOwoJCQkgIGZyb250aWVyX21hcC0+aW5zZXJ0KG1ha2VfcGFpcihu
eHQsICppKSk7CgkJCX0KCQkgICAgICBlbHNlCgkJCUwoRigic2tpcHBpbmcgbWVyZ2UgZWRn
ZSAlcyA8LSAlc1xuIikgJSAoKmkpICUgbnh0KTsKCQkgICAgfQoJCX0KCSAgICB9CgkgIGlm
ICghZm91bmRfcm9vdCkKCSAgICB7CgkgICAgICBmcm9udGllciA9IG5leHRfZnJvbnRpZXI7
CgkgICAgICBwYXRocy5wdXNoX2Zyb250KGZyb250aWVyX21hcCk7CgkgICAgfQoJfQoKICAg
ICAgLy8gcGF0aCBidWlsdCwgbm93IGFsbCB3ZSBuZWVkIHRvIGRvIGlzIGZvbGxvdyBpdCBi
YWNrCgogICAgICBJKGZvdW5kX3Jvb3QpOwogICAgICBJKHJvb3QoKSAhPSAiIik7CiAgICAg
IGJhc2U2NDwgZ3ppcDxkYXRhPiA+IGJlZ2luX3BhY2tlZDsKICAgICAgZGF0YSBiZWdpbjsg
ICAgICAKICAgICAgZ2V0KHJvb3QsIGJlZ2luX3BhY2tlZCwgZGF0YV90YWJsZSk7CiAgICAg
IHVucGFjayhiZWdpbl9wYWNrZWQsIGJlZ2luKTsKICAgICAgaGV4ZW5jPGlkPiBjdXJyID0g
cm9vdDsKCiAgICAgIGJvb3N0OjpzaGFyZWRfcHRyPGRlbHRhX2FwcGxpY2F0b3I+IGFwcCA9
IG5ld19waWVjZXdpc2VfYXBwbGljYXRvcigpOwogICAgICBhcHAtPmJlZ2luKGJlZ2luKCkp
OwogICAgICAKICAgICAgZm9yIChsaXN0PCBzaGFyZWRfcHRyPGVkZ2VtYXA+ID46OmNvbnN0
X2l0ZXJhdG9yIHAgPSBwYXRocy5iZWdpbigpOwoJICAgcCAhPSBwYXRocy5lbmQoKTsgKytw
KQoJewoJICBzaGFyZWRfcHRyPGVkZ2VtYXA+IGkgPSAqcDsKCSAgSShpLT5maW5kKGN1cnIp
ICE9IGktPmVuZCgpKTsKCSAgaGV4ZW5jPGlkPiBjb25zdCBueHQgPSBpLT5maW5kKGN1cnIp
LT5zZWNvbmQ7CgoJICBMKEYoImZvbGxvd2luZyBkZWx0YSAlcyAtPiAlc1xuIikgJSBjdXJy
ICUgbnh0KTsKCSAgYmFzZTY0PCBnemlwPGRlbHRhPiA+IGRlbF9wYWNrZWQ7CgkgIGdldF9k
ZWx0YShueHQsIGN1cnIsIGRlbF9wYWNrZWQsIGRlbHRhX3RhYmxlKTsKCSAgZGVsdGEgZGVs
OwoJICB1bnBhY2soZGVsX3BhY2tlZCwgZGVsKTsKCSAgYXBwbHlfZGVsdGEgKGFwcCwgZGVs
KCkpOwoJICBhcHAtPm5leHQoKTsKCSAgY3VyciA9IG54dDsKCX0KCiAgICAgIHN0cmluZyB0
bXA7CiAgICAgIGFwcC0+ZmluaXNoKHRtcCk7CiAgICAgIGRhdGEgZW5kKHRtcCk7CgogICAg
ICBoZXhlbmM8aWQ+IGZpbmFsOwogICAgICBjYWxjdWxhdGVfaWRlbnQoZW5kLCBmaW5hbCk7
CiAgICAgIEkoZmluYWwgPT0gaWRlbnQpOwogICAgICBwYWNrKGVuZCwgZGF0KTsKICAgIH0K
fQoKCnZvaWQgCmRhdGFiYXNlOjpkcm9wKGhleGVuYzxpZD4gY29uc3QgJiBpZGVudCwgCgkg
ICAgICAgc3RyaW5nIGNvbnN0ICYgdGFibGUpCnsKICBleGVjdXRlKCJERUxFVEUgRlJPTSAn
JXEnIFdIRVJFIGlkID0gJyVxJyIsICAKCSAgdGFibGUuY19zdHIoKSwKCSAgaWRlbnQoKS5j
X3N0cigpKTsKfQoKdm9pZCAKZGF0YWJhc2U6OnB1dF92ZXJzaW9uKGhleGVuYzxpZD4gY29u
c3QgJiBvbGRfaWQsCgkJICAgICAgaGV4ZW5jPGlkPiBjb25zdCAmIG5ld19pZCwKCQkgICAg
ICBiYXNlNjQ8IGd6aXA8ZGVsdGE+ID4gY29uc3QgJiBkZWwsCgkJICAgICAgc3RyaW5nIGNv
bnN0ICYgZGF0YV90YWJsZSwKCQkgICAgICBzdHJpbmcgY29uc3QgJiBkZWx0YV90YWJsZSkK
ewoKICBiYXNlNjQ8IGd6aXA8ZGF0YT4gPiBvbGRfZGF0YSwgbmV3X2RhdGE7CiAgYmFzZTY0
PCBnemlwPGRlbHRhPiA+IHJldmVyc2VfZGVsdGE7CiAgCiAgZ2V0X3ZlcnNpb24ob2xkX2lk
LCBvbGRfZGF0YSwgZGF0YV90YWJsZSwgZGVsdGFfdGFibGUpOwogIHBhdGNoKG9sZF9kYXRh
LCBkZWwsIG5ld19kYXRhKTsKICBkaWZmKG5ld19kYXRhLCBvbGRfZGF0YSwgcmV2ZXJzZV9k
ZWx0YSk7CiAgICAgIAogIHRyYW5zYWN0aW9uX2d1YXJkIGd1YXJkKCp0aGlzKTsKICBpZiAo
ZXhpc3RzKG9sZF9pZCwgZGF0YV90YWJsZSkpCiAgICB7CiAgICAgIC8vIGRlc2NlbmRlbnQg
b2YgYSBoZWFkIHZlcnNpb24gcmVwbGFjZXMgdGhlIGhlYWQsIHRoZXJlZm9yZSBvbGQgaGVh
ZAogICAgICAvLyBtdXN0IGJlIGRpc3Bvc2VkIG9mCiAgICAgIGRyb3Aob2xkX2lkLCBkYXRh
X3RhYmxlKTsKICAgIH0KICBwdXQobmV3X2lkLCBuZXdfZGF0YSwgZGF0YV90YWJsZSk7CiAg
cHV0X2RlbHRhKG9sZF9pZCwgbmV3X2lkLCByZXZlcnNlX2RlbHRhLCBkZWx0YV90YWJsZSk7
CiAgZ3VhcmQuY29tbWl0KCk7Cn0KCnZvaWQgCmRhdGFiYXNlOjpwdXRfcmV2ZXJzZV92ZXJz
aW9uKGhleGVuYzxpZD4gY29uc3QgJiBuZXdfaWQsCgkJCSAgICAgIGhleGVuYzxpZD4gY29u
c3QgJiBvbGRfaWQsCgkJCSAgICAgIGJhc2U2NDwgZ3ppcDxkZWx0YT4gPiBjb25zdCAmIHJl
dmVyc2VfZGVsLAoJCQkgICAgICBzdHJpbmcgY29uc3QgJiBkYXRhX3RhYmxlLAoJCQkgICAg
ICBzdHJpbmcgY29uc3QgJiBkZWx0YV90YWJsZSkKewogIGJhc2U2NDwgZ3ppcDxkYXRhPiA+
IG9sZF9kYXRhLCBuZXdfZGF0YTsKICAKICBnZXRfdmVyc2lvbihuZXdfaWQsIG5ld19kYXRh
LCBkYXRhX3RhYmxlLCBkZWx0YV90YWJsZSk7CiAgcGF0Y2gobmV3X2RhdGEsIHJldmVyc2Vf
ZGVsLCBvbGRfZGF0YSk7CiAgaGV4ZW5jPGlkPiBjaGVjazsKICBjYWxjdWxhdGVfaWRlbnQo
b2xkX2RhdGEsIGNoZWNrKTsKICBJKG9sZF9pZCA9PSBjaGVjayk7CiAgICAgIAogIHRyYW5z
YWN0aW9uX2d1YXJkIGd1YXJkKCp0aGlzKTsKICBwdXRfZGVsdGEob2xkX2lkLCBuZXdfaWQs
IHJldmVyc2VfZGVsLCBkZWx0YV90YWJsZSk7CiAgZ3VhcmQuY29tbWl0KCk7Cn0KCgoKLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi8vIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAtLQovLyAtLSAgICAgICAgICAgICAgcHVibGljIGludGVyZmFjZSBm
b2xsb3dzICAgICAgICAgICAgICAgICAgLS0KLy8gLS0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKYm9vbCAK
ZGF0YWJhc2U6OmZpbGVfdmVyc2lvbl9leGlzdHMoZmlsZV9pZCBjb25zdCAmIGlkKQp7CiAg
cmV0dXJuIGRlbHRhX2V4aXN0cyhpZC5pbm5lcigpLCAiZmlsZV9kZWx0YXMiKSAKICAgIHx8
IGV4aXN0cyhpZC5pbm5lcigpLCAiZmlsZXMiKTsKfQoKYm9vbCAKZGF0YWJhc2U6Om1hbmlm
ZXN0X3ZlcnNpb25fZXhpc3RzKG1hbmlmZXN0X2lkIGNvbnN0ICYgaWQpCnsKICByZXR1cm4g
ZGVsdGFfZXhpc3RzKGlkLmlubmVyKCksICJtYW5pZmVzdF9kZWx0YXMiKSAKICAgIHx8IGV4
aXN0cyhpZC5pbm5lcigpLCAibWFuaWZlc3RzIik7Cn0KCmJvb2wgCmRhdGFiYXNlOjpyZXZp
c2lvbl9leGlzdHMocmV2aXNpb25faWQgY29uc3QgJiBpZCkKewogIHJldHVybiBleGlzdHMo
aWQuaW5uZXIoKSwgInJldmlzaW9ucyIpOwp9CgoKdm9pZCAKZGF0YWJhc2U6OmdldF9maWxl
X3ZlcnNpb24oZmlsZV9pZCBjb25zdCAmIGlkLAoJCQkgICBmaWxlX2RhdGEgJiBkYXQpCnsK
ICBiYXNlNjQ8IGd6aXA8ZGF0YT4gPiB0bXA7CiAgZ2V0X3ZlcnNpb24oaWQuaW5uZXIoKSwg
dG1wLCAiZmlsZXMiLCAiZmlsZV9kZWx0YXMiKTsKICBkYXQgPSB0bXA7Cn0KCnZvaWQgCmRh
dGFiYXNlOjpnZXRfbWFuaWZlc3RfdmVyc2lvbihtYW5pZmVzdF9pZCBjb25zdCAmIGlkLAoJ
CQkgICAgICAgbWFuaWZlc3RfZGF0YSAmIGRhdCkKewogIGJhc2U2NDwgZ3ppcDxkYXRhPiA+
IHRtcDsKICBnZXRfdmVyc2lvbihpZC5pbm5lcigpLCB0bXAsICJtYW5pZmVzdHMiLCAibWFu
aWZlc3RfZGVsdGFzIik7CiAgZGF0ID0gdG1wOwp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X21h
bmlmZXN0KG1hbmlmZXN0X2lkIGNvbnN0ICYgaWQsCgkJICAgICAgIG1hbmlmZXN0X21hcCAm
IG1tKQp7CiAgbWFuaWZlc3RfZGF0YSBtZGF0OwogIGdldF9tYW5pZmVzdF92ZXJzaW9uKGlk
LCBtZGF0KTsKICByZWFkX21hbmlmZXN0X21hcChtZGF0LCBtbSk7Cn0KCgp2b2lkIApkYXRh
YmFzZTo6cHV0X2ZpbGUoZmlsZV9pZCBjb25zdCAmIGlkLAoJCSAgIGZpbGVfZGF0YSBjb25z
dCAmIGRhdCkKewogIHB1dChpZC5pbm5lcigpLCBkYXQuaW5uZXIoKSwgImZpbGVzIik7Cn0K
CnZvaWQgCmRhdGFiYXNlOjpwdXRfZmlsZV92ZXJzaW9uKGZpbGVfaWQgY29uc3QgJiBvbGRf
aWQsCgkJCSAgIGZpbGVfaWQgY29uc3QgJiBuZXdfaWQsCgkJCSAgIGZpbGVfZGVsdGEgY29u
c3QgJiBkZWwpCnsKICBwdXRfdmVyc2lvbihvbGRfaWQuaW5uZXIoKSwgbmV3X2lkLmlubmVy
KCksIGRlbC5pbm5lcigpLCAKCSAgICAgICJmaWxlcyIsICJmaWxlX2RlbHRhcyIpOwp9Cgp2
b2lkIApkYXRhYmFzZTo6cHV0X2ZpbGVfcmV2ZXJzZV92ZXJzaW9uKGZpbGVfaWQgY29uc3Qg
JiBuZXdfaWQsCgkJCQkgICBmaWxlX2lkIGNvbnN0ICYgb2xkX2lkLAkJCQkgICAKCQkJCSAg
IGZpbGVfZGVsdGEgY29uc3QgJiBkZWwpCnsKICBwdXRfcmV2ZXJzZV92ZXJzaW9uKG5ld19p
ZC5pbm5lcigpLCBvbGRfaWQuaW5uZXIoKSwgZGVsLmlubmVyKCksIAoJCSAgICAgICJmaWxl
cyIsICJmaWxlX2RlbHRhcyIpOwp9CgoKdm9pZCAKZGF0YWJhc2U6OnB1dF9tYW5pZmVzdCht
YW5pZmVzdF9pZCBjb25zdCAmIGlkLAoJCSAgICAgICBtYW5pZmVzdF9kYXRhIGNvbnN0ICYg
ZGF0KQp7CiAgcHV0KGlkLmlubmVyKCksIGRhdC5pbm5lcigpLCAibWFuaWZlc3RzIik7Cn0K
CnZvaWQgCmRhdGFiYXNlOjpwdXRfbWFuaWZlc3RfdmVyc2lvbihtYW5pZmVzdF9pZCBjb25z
dCAmIG9sZF9pZCwKCQkJICAgICAgIG1hbmlmZXN0X2lkIGNvbnN0ICYgbmV3X2lkLAoJCQkg
ICAgICAgbWFuaWZlc3RfZGVsdGEgY29uc3QgJiBkZWwpCnsKICBwdXRfdmVyc2lvbihvbGRf
aWQuaW5uZXIoKSwgbmV3X2lkLmlubmVyKCksIGRlbC5pbm5lcigpLCAKCSAgICAgICJtYW5p
ZmVzdHMiLCAibWFuaWZlc3RfZGVsdGFzIik7Cn0KCnZvaWQgCmRhdGFiYXNlOjpwdXRfbWFu
aWZlc3RfcmV2ZXJzZV92ZXJzaW9uKG1hbmlmZXN0X2lkIGNvbnN0ICYgbmV3X2lkLAoJCQkJ
ICAgICAgIG1hbmlmZXN0X2lkIGNvbnN0ICYgb2xkX2lkLAkJCQkgICAKCQkJCSAgICAgICBt
YW5pZmVzdF9kZWx0YSBjb25zdCAmIGRlbCkKewogIHB1dF9yZXZlcnNlX3ZlcnNpb24obmV3
X2lkLmlubmVyKCksIG9sZF9pZC5pbm5lcigpLCBkZWwuaW5uZXIoKSwgCgkJICAgICAgIm1h
bmlmZXN0cyIsICJtYW5pZmVzdF9kZWx0YXMiKTsKfQoKCnZvaWQgCmRhdGFiYXNlOjpnZXRf
cmV2aXNpb25fYW5jZXN0cnkoc3RkOjpzZXQ8c3RkOjpwYWlyPHJldmlzaW9uX2lkLCByZXZp
c2lvbl9pZD4gPiAmIGdyYXBoKQp7CiAgcmVzdWx0cyByZXM7CiAgZ3JhcGguY2xlYXIoKTsK
ICBmZXRjaChyZXMsIDIsIGFueV9yb3dzLCAKCSJTRUxFQ1QgcGFyZW50LGNoaWxkIEZST00g
cmV2aXNpb25fYW5jZXN0cnkiKTsKICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlcy5zaXpl
KCk7ICsraSkKICAgIGdyYXBoLmluc2VydChzdGQ6Om1ha2VfcGFpcihyZXZpc2lvbl9pZChy
ZXNbaV1bMF0pLAoJCQkJcmV2aXNpb25faWQocmVzW2ldWzFdKSkpOwp9Cgp2b2lkIApkYXRh
YmFzZTo6Z2V0X3JldmlzaW9uX3BhcmVudHMocmV2aXNpb25faWQgY29uc3QgJiBpZCwKCQkJ
ICAgICAgc2V0PHJldmlzaW9uX2lkPiAmIHBhcmVudHMpCnsKICByZXN1bHRzIHJlczsKICBw
YXJlbnRzLmNsZWFyKCk7CiAgZmV0Y2gocmVzLCBvbmVfY29sLCBhbnlfcm93cywgCgkiU0VM
RUNUIHBhcmVudCBGUk9NIHJldmlzaW9uX2FuY2VzdHJ5IFdIRVJFIGNoaWxkID0gJyVxJyIs
CglpZC5pbm5lcigpKCkuY19zdHIoKSk7CiAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXMu
c2l6ZSgpOyArK2kpCiAgICBwYXJlbnRzLmluc2VydChyZXZpc2lvbl9pZChyZXNbaV1bMF0p
KTsKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9yZXZpc2lvbl9jaGlsZHJlbihyZXZpc2lvbl9p
ZCBjb25zdCAmIGlkLAoJCQkJc2V0PHJldmlzaW9uX2lkPiAmIGNoaWxkcmVuKQp7CiAgcmVz
dWx0cyByZXM7CiAgY2hpbGRyZW4uY2xlYXIoKTsKICBmZXRjaChyZXMsIG9uZV9jb2wsIGFu
eV9yb3dzLCAKCSJTRUxFQ1QgY2hpbGQgRlJPTSByZXZpc2lvbl9hbmNlc3RyeSBXSEVSRSBw
YXJlbnQgPSAnJXEnIiwKCWlkLmlubmVyKCkoKS5jX3N0cigpKTsKICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHJlcy5zaXplKCk7ICsraSkKICAgIGNoaWxkcmVuLmluc2VydChyZXZpc2lv
bl9pZChyZXNbaV1bMF0pKTsKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9yZXZpc2lvbl9tYW5p
ZmVzdChyZXZpc2lvbl9pZCBjb25zdCAmIHJpZCwKCQkJICAgICAgIG1hbmlmZXN0X2lkICYg
bWlkKQp7CiAgcmV2aXNpb25fc2V0IHJldjsKICBnZXRfcmV2aXNpb24ocmlkLCByZXYpOwog
IG1pZCA9IHJldi5uZXdfbWFuaWZlc3Q7Cn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRfcmV2aXNp
b24ocmV2aXNpb25faWQgY29uc3QgJiBpZCwKCQkgICAgICAgcmV2aXNpb25fc2V0ICYgcmV2
KQp7CiAgcmV2aXNpb25fZGF0YSBkOwogIGdldF9yZXZpc2lvbihpZCwgZCk7CiAgcmVhZF9y
ZXZpc2lvbl9zZXQoZCwgcmV2KTsKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9yZXZpc2lvbihy
ZXZpc2lvbl9pZCBjb25zdCAmIGlkLAoJCSAgICAgICByZXZpc2lvbl9kYXRhICYgZGF0KQp7
CiAgcmVzdWx0cyByZXM7CiAgZmV0Y2gocmVzLCBvbmVfY29sLCBvbmVfcm93LCAKCSJTRUxF
Q1QgZGF0YSBGUk9NIHJldmlzaW9ucyBXSEVSRSBpZCA9ICclcSciLAoJaWQuaW5uZXIoKSgp
LmNfc3RyKCkpOwoKICBkYXQgPSByZXZpc2lvbl9kYXRhKHJlc1swXVswXSk7CgogIC8vIHZl
cmlmeSB0aGF0IHdlIGdvdCBhIHJldmlzaW9uIHdpdGggdGhlIHJpZ2h0IGlkCiAgewogICAg
cmV2aXNpb25faWQgdG1wOwogICAgY2FsY3VsYXRlX2lkZW50KGRhdCwgdG1wKTsKICAgIEko
aWQgPT0gdG1wKTsKICB9Cn0KCnZvaWQgCmRhdGFiYXNlOjpwdXRfcmV2aXNpb24ocmV2aXNp
b25faWQgY29uc3QgJiBuZXdfaWQsCgkJICAgICAgIHJldmlzaW9uX3NldCBjb25zdCAmIHJl
dikKewoKICBJKCFyZXZpc2lvbl9leGlzdHMobmV3X2lkKSk7CiAgcmV2aXNpb25fZGF0YSBk
OwoKICB3cml0ZV9yZXZpc2lvbl9zZXQocmV2LCBkKTsKICByZXZpc2lvbl9pZCB0bXA7CiAg
Y2FsY3VsYXRlX2lkZW50KGQsIHRtcCk7CiAgSSh0bXAgPT0gbmV3X2lkKTsKCiAgdHJhbnNh
Y3Rpb25fZ3VhcmQgZ3VhcmQoKnRoaXMpOwoKICBleGVjdXRlKCJJTlNFUlQgSU5UTyByZXZp
c2lvbnMgVkFMVUVTKCclcScsICclcScpIiwgCgkgIG5ld19pZC5pbm5lcigpKCkuY19zdHIo
KSwgCgkgIGQuaW5uZXIoKSgpLmNfc3RyKCkpOwoKICBmb3IgKGVkZ2VfbWFwOjpjb25zdF9p
dGVyYXRvciBlID0gcmV2LmVkZ2VzLmJlZ2luKCk7CiAgICAgICBlICE9IHJldi5lZGdlcy5l
bmQoKTsgKytlKQogICAgewogICAgICBleGVjdXRlKCJJTlNFUlQgSU5UTyByZXZpc2lvbl9h
bmNlc3RyeSBWQUxVRVMoJyVxJywgJyVxJykiLCAKCSAgICAgIGVkZ2Vfb2xkX3JldmlzaW9u
KGUpLmlubmVyKCkoKS5jX3N0cigpLAoJICAgICAgbmV3X2lkLmlubmVyKCkoKS5jX3N0cigp
KTsKICAgIH0KCiAgZ3VhcmQuY29tbWl0KCk7Cn0KCnZvaWQgCmRhdGFiYXNlOjpwdXRfcmV2
aXNpb24ocmV2aXNpb25faWQgY29uc3QgJiBuZXdfaWQsCgkJICAgICAgIHJldmlzaW9uX2Rh
dGEgY29uc3QgJiBkYXQpCnsKICByZXZpc2lvbl9zZXQgcmV2OwogIHJlYWRfcmV2aXNpb25f
c2V0KGRhdCwgcmV2KTsKICBwdXRfcmV2aXNpb24obmV3X2lkLCByZXYpOwp9CgoKLy8gY3J5
cHRvIGtleSBtYW5hZ2VtZW50Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X2tleV9pZHMoc3RyaW5n
IGNvbnN0ICYgcGF0dGVybiwKCQkgICAgICB2ZWN0b3I8cnNhX2tleXBhaXJfaWQ+ICYgcHVi
a2V5cywKCQkgICAgICB2ZWN0b3I8cnNhX2tleXBhaXJfaWQ+ICYgcHJpdmtleXMpCnsKICBw
dWJrZXlzLmNsZWFyKCk7CiAgcHJpdmtleXMuY2xlYXIoKTsKICByZXN1bHRzIHJlczsKCiAg
aWYgKHBhdHRlcm4gIT0gIiIpCiAgICBmZXRjaChyZXMsIG9uZV9jb2wsIGFueV9yb3dzLCAK
CSAgIlNFTEVDVCBpZCBmcm9tIHB1YmxpY19rZXlzIFdIRVJFIGlkIEdMT0IgJyVxJyIsCgkg
IHBhdHRlcm4uY19zdHIoKSk7CiAgZWxzZQogICAgZmV0Y2gocmVzLCBvbmVfY29sLCBhbnlf
cm93cywgCgkgICJTRUxFQ1QgaWQgZnJvbSBwdWJsaWNfa2V5cyIpOwoKICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHJlcy5zaXplKCk7ICsraSkKICAgIHB1YmtleXMucHVzaF9iYWNrKHJl
c1tpXVswXSk7CgogIGlmIChwYXR0ZXJuICE9ICIiKQogICAgZmV0Y2gocmVzLCBvbmVfY29s
LCBhbnlfcm93cywgCgkgICJTRUxFQ1QgaWQgZnJvbSBwcml2YXRlX2tleXMgV0hFUkUgaWQg
R0xPQiAnJXEnIiwKCSAgcGF0dGVybi5jX3N0cigpKTsKICBlbHNlCiAgICBmZXRjaChyZXMs
IG9uZV9jb2wsIGFueV9yb3dzLCAKCSAgIlNFTEVDVCBpZCBmcm9tIHByaXZhdGVfa2V5cyIp
OwoKICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlcy5zaXplKCk7ICsraSkKICAgIHByaXZr
ZXlzLnB1c2hfYmFjayhyZXNbaV1bMF0pOwp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X3ByaXZh
dGVfa2V5cyh2ZWN0b3I8cnNhX2tleXBhaXJfaWQ+ICYgcHJpdmtleXMpCnsKICBwcml2a2V5
cy5jbGVhcigpOwogIHJlc3VsdHMgcmVzOwogIGZldGNoKHJlcywgb25lX2NvbCwgYW55X3Jv
d3MsICAiU0VMRUNUIGlkIGZyb20gcHJpdmF0ZV9rZXlzIik7CiAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCByZXMuc2l6ZSgpOyArK2kpCiAgICBwcml2a2V5cy5wdXNoX2JhY2socmVzW2ld
WzBdKTsKfQoKYm9vbCAKZGF0YWJhc2U6OnB1YmxpY19rZXlfZXhpc3RzKGhleGVuYzxpZD4g
Y29uc3QgJiBoYXNoKQp7CiAgcmVzdWx0cyByZXM7CiAgZmV0Y2gocmVzLCBvbmVfY29sLCBh
bnlfcm93cywgCgkiU0VMRUNUIGlkIEZST00gcHVibGljX2tleXMgV0hFUkUgaGFzaCA9ICcl
cSciLAoJaGFzaCgpLmNfc3RyKCkpOwogIEkoKHJlcy5zaXplKCkgPT0gMSkgfHwgKHJlcy5z
aXplKCkgPT0gMCkpOwogIGlmIChyZXMuc2l6ZSgpID09IDEpIAogICAgcmV0dXJuIHRydWU7
CiAgcmV0dXJuIGZhbHNlOwp9Cgpib29sIApkYXRhYmFzZTo6cHVibGljX2tleV9leGlzdHMo
cnNhX2tleXBhaXJfaWQgY29uc3QgJiBpZCkKewogIHJlc3VsdHMgcmVzOwogIGZldGNoKHJl
cywgb25lX2NvbCwgYW55X3Jvd3MsIAoJIlNFTEVDVCBpZCBGUk9NIHB1YmxpY19rZXlzIFdI
RVJFIGlkID0gJyVxJyIsCglpZCgpLmNfc3RyKCkpOwogIEkoKHJlcy5zaXplKCkgPT0gMSkg
fHwgKHJlcy5zaXplKCkgPT0gMCkpOwogIGlmIChyZXMuc2l6ZSgpID09IDEpIAogICAgcmV0
dXJuIHRydWU7CiAgcmV0dXJuIGZhbHNlOwp9Cgpib29sIApkYXRhYmFzZTo6cHJpdmF0ZV9r
ZXlfZXhpc3RzKHJzYV9rZXlwYWlyX2lkIGNvbnN0ICYgaWQpCnsKICByZXN1bHRzIHJlczsK
ICBmZXRjaChyZXMsIG9uZV9jb2wsIGFueV9yb3dzLAoJIlNFTEVDVCBpZCBGUk9NIHByaXZh
dGVfa2V5cyBXSEVSRSBpZCA9ICclcSciLAoJaWQoKS5jX3N0cigpKTsKICBJKChyZXMuc2l6
ZSgpID09IDEpIHx8IChyZXMuc2l6ZSgpID09IDApKTsKICBpZiAocmVzLnNpemUoKSA9PSAx
KQogICAgcmV0dXJuIHRydWU7CiAgcmV0dXJuIGZhbHNlOwp9Cgpib29sIApkYXRhYmFzZTo6
a2V5X2V4aXN0cyhyc2Ffa2V5cGFpcl9pZCBjb25zdCAmIGlkKQp7CiAgcmV0dXJuIHB1Ymxp
Y19rZXlfZXhpc3RzKGlkKSB8fCBwcml2YXRlX2tleV9leGlzdHMoaWQpOwp9Cgp2b2lkIApk
YXRhYmFzZTo6Z2V0X3B1YmtleShoZXhlbmM8aWQ+IGNvbnN0ICYgaGFzaCwgCgkJICAgICBy
c2Ffa2V5cGFpcl9pZCAmIGlkLAoJCSAgICAgYmFzZTY0PHJzYV9wdWJfa2V5PiAmIHB1Yl9l
bmNvZGVkKQp7CiAgcmVzdWx0cyByZXM7CiAgZmV0Y2gocmVzLCAyLCBvbmVfcm93LCAKCSJT
RUxFQ1QgaWQsIGtleWRhdGEgRlJPTSBwdWJsaWNfa2V5cyB3aGVyZSBoYXNoID0gJyVxJyIs
IAoJaGFzaCgpLmNfc3RyKCkpOwogIGlkID0gcmVzWzBdWzBdOwogIHB1Yl9lbmNvZGVkID0g
cmVzWzBdWzFdOwp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X2tleShyc2Ffa2V5cGFpcl9pZCBj
b25zdCAmIHB1Yl9pZCwgCgkJICBiYXNlNjQ8cnNhX3B1Yl9rZXk+ICYgcHViX2VuY29kZWQp
CnsKICByZXN1bHRzIHJlczsKICBmZXRjaChyZXMsIG9uZV9jb2wsIG9uZV9yb3csIAoJIlNF
TEVDVCBrZXlkYXRhIEZST00gcHVibGljX2tleXMgd2hlcmUgaWQgPSAnJXEnIiwgCglwdWJf
aWQoKS5jX3N0cigpKTsKICBwdWJfZW5jb2RlZCA9IHJlc1swXVswXTsKfQoKdm9pZCAKZGF0
YWJhc2U6OmdldF9rZXkocnNhX2tleXBhaXJfaWQgY29uc3QgJiBwcml2X2lkLCAKCQkgIGJh
c2U2NDwgYXJjNDxyc2FfcHJpdl9rZXk+ID4gJiBwcml2X2VuY29kZWQpCnsKICByZXN1bHRz
IHJlczsKICBmZXRjaChyZXMsIG9uZV9jb2wsIG9uZV9jb2wsIAoJIlNFTEVDVCBrZXlkYXRh
IEZST00gcHJpdmF0ZV9rZXlzIHdoZXJlIGlkID0gJyVxJyIsIAoJcHJpdl9pZCgpLmNfc3Ry
KCkpOwogIHByaXZfZW5jb2RlZCA9IHJlc1swXVswXTsKfQoKCnZvaWQgCmRhdGFiYXNlOjpw
dXRfa2V5KHJzYV9rZXlwYWlyX2lkIGNvbnN0ICYgcHViX2lkLCAKCQkgIGJhc2U2NDxyc2Ff
cHViX2tleT4gY29uc3QgJiBwdWJfZW5jb2RlZCkKewogIGhleGVuYzxpZD4gdGhhc2g7CiAg
a2V5X2hhc2hfY29kZShwdWJfaWQsIHB1Yl9lbmNvZGVkLCB0aGFzaCk7CiAgZXhlY3V0ZSgi
SU5TRVJUIElOVE8gcHVibGljX2tleXMgVkFMVUVTKCclcScsICclcScsICclcScpIiwgCgkg
IHRoYXNoKCkuY19zdHIoKSwgcHViX2lkKCkuY19zdHIoKSwgcHViX2VuY29kZWQoKS5jX3N0
cigpKTsKfQoKdm9pZCAKZGF0YWJhc2U6OnB1dF9rZXkocnNhX2tleXBhaXJfaWQgY29uc3Qg
JiBwcml2X2lkLCAKCQkgIGJhc2U2NDwgYXJjNDxyc2FfcHJpdl9rZXk+ID4gY29uc3QgJiBw
cml2X2VuY29kZWQpCnsKICAKICBoZXhlbmM8aWQ+IHRoYXNoOwogIGtleV9oYXNoX2NvZGUo
cHJpdl9pZCwgcHJpdl9lbmNvZGVkLCB0aGFzaCk7CiAgZXhlY3V0ZSgiSU5TRVJUIElOVE8g
cHJpdmF0ZV9rZXlzIFZBTFVFUygnJXEnLCAnJXEnLCAnJXEnKSIsIAoJICB0aGFzaCgpLmNf
c3RyKCksIHByaXZfaWQoKS5jX3N0cigpLCBwcml2X2VuY29kZWQoKS5jX3N0cigpKTsKfQoK
dm9pZCAKZGF0YWJhc2U6OnB1dF9rZXlfcGFpcihyc2Ffa2V5cGFpcl9pZCBjb25zdCAmIGlk
LCAKCQkgICAgICAgYmFzZTY0PHJzYV9wdWJfa2V5PiBjb25zdCAmIHB1Yl9lbmNvZGVkLAoJ
CSAgICAgICBiYXNlNjQ8IGFyYzQ8cnNhX3ByaXZfa2V5PiA+IGNvbnN0ICYgcHJpdl9lbmNv
ZGVkKQp7CiAgdHJhbnNhY3Rpb25fZ3VhcmQgZ3VhcmQoKnRoaXMpOwogIHB1dF9rZXkoaWQs
IHB1Yl9lbmNvZGVkKTsKICBwdXRfa2V5KGlkLCBwcml2X2VuY29kZWQpOwogIGd1YXJkLmNv
bW1pdCgpOwp9Cgp2b2lkCmRhdGFiYXNlOjpkZWxldGVfcHJpdmF0ZV9rZXkocnNhX2tleXBh
aXJfaWQgY29uc3QgJiBwdWJfaWQpCnsKICBleGVjdXRlKCJERUxFVEUgRlJPTSBwcml2YXRl
X2tleXMgV0hFUkUgaWQgPSAnJXEnIiwKCSAgcHViX2lkKCkuY19zdHIoKSk7Cn0KCi8vIGNl
cnQgbWFuYWdlbWVudAoKYm9vbCAKZGF0YWJhc2U6OmNlcnRfZXhpc3RzKGNlcnQgY29uc3Qg
JiB0LAoJCSAgICAgIHN0cmluZyBjb25zdCAmIHRhYmxlKQp7CiAgcmVzdWx0cyByZXM7CiAg
ZmV0Y2gocmVzLCAxLCBhbnlfcm93cywKCSJTRUxFQ1QgaWQgRlJPTSAnJXEnIFdIRVJFIGlk
ID0gJyVxJyAiCgkiQU5EIG5hbWUgPSAnJXEnIEFORCB2YWx1ZSA9ICclcScgIiAKCSJBTkQg
a2V5cGFpciA9ICclcScgQU5EIHNpZ25hdHVyZSA9ICclcScgIiwKCXRhYmxlLmNfc3RyKCks
Cgl0LmlkZW50KCkuY19zdHIoKSwKCXQubmFtZSgpLmNfc3RyKCksCgl0LnZhbHVlKCkuY19z
dHIoKSwKCXQua2V5KCkuY19zdHIoKSwKCXQuc2lnKCkuY19zdHIoKSk7CiAgSShyZXMuc2l6
ZSgpID09IDAgfHwgcmVzLnNpemUoKSA9PSAxKTsKICByZXR1cm4gcmVzLnNpemUoKSA9PSAx
Owp9Cgp2b2lkIApkYXRhYmFzZTo6cHV0X2NlcnQoY2VydCBjb25zdCAmIHQsCgkJICAgc3Ry
aW5nIGNvbnN0ICYgdGFibGUpCnsKICBoZXhlbmM8aWQ+IHRoYXNoOwogIGNlcnRfaGFzaF9j
b2RlKHQsIHRoYXNoKTsKICBleGVjdXRlKCJJTlNFUlQgSU5UTyAnJXEnIFZBTFVFUygnJXEn
LCAnJXEnLCAnJXEnLCAnJXEnLCAnJXEnLCAnJXEnKSIsIAoJICB0YWJsZS5jX3N0cigpLAoJ
ICB0aGFzaCgpLmNfc3RyKCksCgkgIHQuaWRlbnQoKS5jX3N0cigpLAoJICB0Lm5hbWUoKS5j
X3N0cigpLCAKCSAgdC52YWx1ZSgpLmNfc3RyKCksCgkgIHQua2V5KCkuY19zdHIoKSwKCSAg
dC5zaWcoKS5jX3N0cigpKTsKfQoKdm9pZCAKZGF0YWJhc2U6OnJlc3VsdHNfdG9fY2VydHMo
cmVzdWx0cyBjb25zdCAmIHJlcywKCQkJICAgdmVjdG9yPGNlcnQ+ICYgY2VydHMpCnsKICBj
ZXJ0cy5jbGVhcigpOwogIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzLnNpemUoKTsgKytp
KQogICAgewogICAgICBjZXJ0IHQ7CiAgICAgIHQgPSBjZXJ0KGhleGVuYzxpZD4ocmVzW2ld
WzBdKSwgCgkgICAgICBjZXJ0X25hbWUocmVzW2ldWzFdKSwKCSAgICAgIGJhc2U2NDxjZXJ0
X3ZhbHVlPihyZXNbaV1bMl0pLAoJICAgICAgcnNhX2tleXBhaXJfaWQocmVzW2ldWzNdKSwK
CSAgICAgIGJhc2U2NDxyc2Ffc2hhMV9zaWduYXR1cmU+KHJlc1tpXVs0XSkpOwogICAgICBj
ZXJ0cy5wdXNoX2JhY2sodCk7CiAgICB9Cn0KCgpzdHJ1Y3QgdmFsaWRfY2VydHMKewogIHNl
dDxyc2Ffa2V5cGFpcl9pZD4gdmFsaWRfc2lnbmVyczsKICBoZXhlbmM8aWQ+IGlkZW50Owog
IGNlcnRfbmFtZSBuYW1lOwogIGJhc2U2NDxjZXJ0X3ZhbHVlPiB2YWw7CiAgc3RyaW5nIHNp
Z25hdHVyZV90eXBlOwoKICB2YWxpZF9jZXJ0cyhzdHJpbmcgY29uc3QgJiB0eSkgCiAgICA6
IHNpZ25hdHVyZV90eXBlKHR5KSAKICB7CiAgICBMKEYoImNvbnN0cnVjdGluZyB2YWxpZGl0
eSBjaGVja2VyIGZvciAlcyBjZXJ0c1xuIikgJSB0eSk7CiAgfQoKICBib29sIGNoZWNrX3Np
Z25lcl90cnVzdChhcHBfc3RhdGUgJiBhcHApCiAgewogICAgYm9vbCB0cnVzdGVkID0gZmFs
c2U7CgogICAgTChGKCJjaGVja2luZyAlZCBzaWduZXIgJXMgY2VydCB0cnVzdCBzZXRcbiIp
IAogICAgICAlIHZhbGlkX3NpZ25lcnMuc2l6ZSgpICUgc2lnbmF0dXJlX3R5cGUpOwogICAg
dHJ5CiAgICAgIHsKCWNlcnRfdmFsdWUgdjsKCWRlY29kZV9iYXNlNjQodmFsLCB2KTsKCS8v
IEZJWE1FOiBsYW1lIHN0cmluZy1tYWtlcy10aGUtbW9kZSBhcmd1bWVudAoJaWYgKHNpZ25h
dHVyZV90eXBlID09ICJyZXZpc2lvbiIpCgkgIHRydXN0ZWQgPSBhcHAubHVhLmhvb2tfZ2V0
X3JldmlzaW9uX2NlcnRfdHJ1c3QodmFsaWRfc2lnbmVycywKCQkJCQkJCWlkZW50LCBuYW1l
LCB2KTsKCWVsc2UgaWYgKHNpZ25hdHVyZV90eXBlID09ICJtYW5pZmVzdCIpCgkgIHRydXN0
ZWQgPSBhcHAubHVhLmhvb2tfZ2V0X21hbmlmZXN0X2NlcnRfdHJ1c3QodmFsaWRfc2lnbmVy
cywKCQkJCQkJCSBpZGVudCwgbmFtZSwgdik7CgllbHNlIGlmIChzaWduYXR1cmVfdHlwZSA9
PSAiZmlsZSIpCgkgIHRydXN0ZWQgPSBhcHAubHVhLmhvb2tfZ2V0X2ZpbGVfY2VydF90cnVz
dCh2YWxpZF9zaWduZXJzLAoJCQkJCQkgICAgIGlkZW50LCBuYW1lLCB2KTsKCWVsc2UKCSAg
SShmYWxzZSk7IC8vIHNob3VsZCBiZSBpbGxlZ2FsCiAgICAgIH0KICAgIGNhdGNoICguLi4p
CiAgICAgIHsKCVcoRigiZXhjZXB0aW9uIGluIHNxbGl0ZSB2YWxpZF9jZXJ0czo6Y2hlY2tf
c2V0X3RydXN0XG4iKSk7CiAgICAgIH0KICAgIAogICAgaWYgKHRydXN0ZWQpCiAgICAgIEwo
RigidHJ1c3QgZnVuY3Rpb24gbGlrZWQgJWQgJXMgc2lnbmVyc1xuIikgCgklIHZhbGlkX3Np
Z25lcnMuc2l6ZSgpICUgc2lnbmF0dXJlX3R5cGUpOwogICAgZWxzZQogICAgICBMKEYoInRy
dXN0IGZ1bmN0aW9uIGRpc2xpa2VkICVkICVzIHNpZ25lcnNcbiIpIAoJJSB2YWxpZF9zaWdu
ZXJzLnNpemUoKSAlIHNpZ25hdHVyZV90eXBlKTsKICAgIAogICAgcmV0dXJuIHRydXN0ZWQ7
CiAgfQoKICB2b2lkIGNoZWNrX3NpbmdsZV9zaWduZXIoYXBwX3N0YXRlICYgYXBwLAoJCQkg
ICBpbnQgYXJnYywgCgkJCSAgIGNoYXIgY29uc3QgKiogYXJndikKICB7CiAgICB0cnkKICAg
ICAgewoJLy8gYXJncyBhcmU6IGhhc2gsIGlkLCBuYW1lLCB2YWx1ZSwga2V5cGFpciwgcHVi
a2V5LCBzaWduYXR1cmUKCS8vIEwoRigiZW50cmllcyBhcmUgWyVzXSBbJXNdIFslc10gWyVz
XSBbJXNdIFslc10gWyVzXVxuIikgCgkvLyAJICAlIGFyZ3ZbMF0gJSBhcmd2WzFdICUgYXJn
dlsyXSAlIGFyZ3ZbM10gJSBhcmd2WzRdICUgYXJndls1XSAlIGFyZ3ZbNl0pOwoKCWNlcnQg
dG1wID0gY2VydChoZXhlbmM8aWQ+KGFyZ3ZbMV0pLCAKCQkJY2VydF9uYW1lKGFyZ3ZbMl0p
LAoJCQliYXNlNjQ8Y2VydF92YWx1ZT4oYXJndlszXSksCgkJCXJzYV9rZXlwYWlyX2lkKGFy
Z3ZbNF0pLAoJCQliYXNlNjQ8cnNhX3NoYTFfc2lnbmF0dXJlPihhcmd2WzZdKSk7CgoJYmFz
ZTY0PHJzYV9wdWJfa2V5PiBwayhhcmd2WzVdKTsKCglpZiAoaWRlbnQoKS5lbXB0eSgpKQoJ
ICBpZGVudCA9IHRtcC5pZGVudDsKCWVsc2UKCSAgSShpZGVudCA9PSB0bXAuaWRlbnQpOwoK
CWlmIChuYW1lKCkuZW1wdHkoKSkKCSAgbmFtZSA9IHRtcC5uYW1lOwoJZWxzZQoJICBJKG5h
bWUgPT0gdG1wLm5hbWUpOwoKCWlmICh2YWwoKS5lbXB0eSgpKQoJICB2YWwgPSB0bXAudmFs
dWU7CgllbHNlCgkgIEkodmFsID09IHRtcC52YWx1ZSk7CgoJLy8gCUwoRigiZXhhbWluaW5n
ICclcycgJXMgY2VydCBmcm9tICVzXG4iKSAKCS8vIAkgICUgbmFtZSAlIHNpZ25hdHVyZV90
eXBlICUgaWRlbnQpOwoKCXN0cmluZyB0eHQ7CgljZXJ0X3NpZ25hYmxlX3RleHQodG1wLCB0
eHQpOwoJaWYgKGNoZWNrX3NpZ25hdHVyZShhcHAubHVhLCB0bXAua2V5LCBwaywgdHh0LCB0
bXAuc2lnKSkKCSAgewoJICAgIEwoRigib2sgJyVzJyAlcyBjZXJ0IGZyb20gJXNcbiIpIAoJ
ICAgICAgJSBuYW1lICUgc2lnbmF0dXJlX3R5cGUgJSB0bXAua2V5KTsKCSAgICB2YWxpZF9z
aWduZXJzLmluc2VydCh0bXAua2V5KTsKCSAgfQoJZWxzZQoJICB7CgkgICAgVyhGKCJiYWQg
JyVzJyAlcyBjZXJ0IGZyb20gJXNcbiIpIAoJICAgICAgJSBuYW1lICUgc2lnbmF0dXJlX3R5
cGUgJSB0bXAua2V5KTsKCSAgfQogICAgICB9CiAgICBjYXRjaCAoc3RkOjpleGNlcHRpb24g
JiBlKQogICAgICB7CglXKEYoInN0ZDo6ZXhjZXB0aW9uIGluIHNxbGl0ZSB2YWxpZF9jZXJ0
czo6Y2hlY2tfc2luZ2xlX3NpZ25lcjogJXNcbiIpICUgZS53aGF0KCkpOwogICAgICB9CiAg
ICBjYXRjaCAoLi4uKQogICAgICB7CglXKEYoInVua25vd24gZXhjZXB0aW9uIGluIHNxbGl0
ZSB2YWxpZF9jZXJ0czo6Y2hlY2tfc2luZ2xlX3NpZ25lclxuIikpOwogICAgICB9CiAgfQp9
OwoKZXh0ZXJuICJDIgp7CgpzdGF0aWMgdm9pZAp0cnVzdGVkX3N0ZXBfY2FsbGJhY2soc3Fs
aXRlX2Z1bmMgKiBmbl9jdHgsIAoJCSAgICAgIGludCBhcmdjLCAKCQkgICAgICBjaGFyIGNv
bnN0ICoqIGFyZ3YpCnsKICBhcHBfc3RhdGUgKiBhcHAgPSBOVUxMOyAKICB2YWxpZF9jZXJ0
cyAqKiB2cHA7CgogIEkoZm5fY3R4KTsKICBJKGFyZ2MgPT0gOCk7CiAgSShhcmd2KTsKICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IDg7ICsraSkKICAgIEkoYXJndltpXSk7CgogIGFwcCA9
IHN0YXRpY19jYXN0PGFwcF9zdGF0ZSAqPihzcWxpdGVfdXNlcl9kYXRhKGZuX2N0eCkpOwog
IEkoYXBwKTsKICB2cHAgPSBzdGF0aWNfY2FzdDx2YWxpZF9jZXJ0cyAqKj4oc3FsaXRlX2Fn
Z3JlZ2F0ZV9jb250ZXh0KGZuX2N0eCwgc2l6ZW9mKHZhbGlkX2NlcnRzICopKSk7CiAgSSh2
cHApOwogIGlmICghICgqdnBwKSkKICAgICp2cHAgPSBuZXcgdmFsaWRfY2VydHMoc3RyaW5n
KGFyZ3ZbMF0pKTsKICBJKCp2cHApOwogICgqdnBwKS0+Y2hlY2tfc2luZ2xlX3NpZ25lcigq
YXBwLCBhcmdjLTEsIGFyZ3YrMSk7ICAKfQoKc3RhdGljIHZvaWQKdHJ1c3RlZF9maW5hbGl6
ZV9jYWxsYmFjayhzcWxpdGVfZnVuYyAqIGZuX2N0eCkKewogIGFwcF9zdGF0ZSAqIGFwcCA9
IE5VTEw7IAogIHZhbGlkX2NlcnRzICoqIHZwcDsKICBhcHAgPSBzdGF0aWNfY2FzdDxhcHBf
c3RhdGUgKj4oc3FsaXRlX3VzZXJfZGF0YShmbl9jdHgpKTsKICBJKGFwcCk7CiAgdnBwID0g
c3RhdGljX2Nhc3Q8dmFsaWRfY2VydHMgKio+KHNxbGl0ZV9hZ2dyZWdhdGVfY29udGV4dChm
bl9jdHgsIHNpemVvZih2YWxpZF9jZXJ0cyAqKSkpOwoKICBJKHZwcCk7CiAgSSgqdnBwKTsK
CiAgaWYgKCgqdnBwKS0+Y2hlY2tfc2lnbmVyX3RydXN0KCphcHApKQogICAgc3FsaXRlX3Nl
dF9yZXN1bHRfaW50KGZuX2N0eCwgMSk7CiAgZWxzZQogICAgc3FsaXRlX3NldF9yZXN1bHRf
aW50KGZuX2N0eCwgMCk7CgogIGRlbGV0ZSAoKnZwcCk7Cn0KfQoKCnZvaWQKZGF0YWJhc2U6
Omluc3RhbGxfZnVuY3Rpb25zKGFwcF9zdGF0ZSAqIGFwcCkKewogIC8vIHJlZ2lzdGVyIGFu
eSBmdW5jdGlvbnMgd2UncmUgZ29pbmcgdG8gdXNlCiAgSShzcWxpdGVfY3JlYXRlX2Z1bmN0
aW9uKHNxbCgpLCAidW5iYXNlNjQiLCAtMSwgCgkJCSAgICZzcWxpdGVfdW5iYXNlNjRfZm4s
IAoJCQkgICBOVUxMKSA9PSAwKTsKCiAgSShzcWxpdGVfY3JlYXRlX2FnZ3JlZ2F0ZShzcWwo
KSwgInRydXN0ZWQiLCA4LCAKCQkJICAgICZ0cnVzdGVkX3N0ZXBfY2FsbGJhY2ssCgkJCSAg
ICAmdHJ1c3RlZF9maW5hbGl6ZV9jYWxsYmFjaywKCQkJICAgIGFwcCkgPT0gMCk7Cn0KCnZv
aWQKZGF0YWJhc2U6Omluc3RhbGxfdmlld3MoKQp7CiAgLy8gZGVsZXRlIGFueSBleGlzdGlu
ZyB2aWV3cwogIHJlc3VsdHMgcmVzOwogIGZldGNoKHJlcywgb25lX2NvbCwgYW55X3Jvd3Ms
CgkiU0VMRUNUIG5hbWUgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGU9J3ZpZXcnIik7
CiAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXMuc2l6ZSgpOyArK2kpCiAgICB7CiAgICAg
IGV4ZWN1dGUoIkRST1AgVklFVyAnJXEnIiwgcmVzW2ldWzBdLmNfc3RyKCkpOwogICAgfQog
IC8vIHJlZ2lzdGVyIGFueSB2aWV3cyB3ZSdyZSBnb2luZyB0byB1c2UKICBleGVjdXRlKHZp
ZXdzX2NvbnN0YW50KTsKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9oZWFkcyhiYXNlNjQ8Y2Vy
dF92YWx1ZT4gY29uc3QgJiBicmFuY2gsCgkJICAgIHN0ZDo6c2V0PHJldmlzaW9uX2lkPiAm
IGhlYWRzKQp7CiAgcmVzdWx0cyByZXM7CiAgZmV0Y2gocmVzLCBvbmVfY29sLCBhbnlfcm93
cywKCSJTRUxFQ1QgaWQgIgoJIkZST00gYnJhbmNoX2hlYWRzICIKCSJXSEVSRSB2YWx1ZSA9
ICclcSciLAoJYnJhbmNoKCkuY19zdHIoKSk7CiAgaGVhZHMuY2xlYXIoKTsKICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHJlcy5zaXplKCk7ICsraSkKICAgIHsKICAgICAgaGVhZHMuaW5z
ZXJ0KHJldmlzaW9uX2lkKHJlc1tpXVswXSkpOwogICAgfQp9Cgp2b2lkIApkYXRhYmFzZTo6
Z2V0X2NlcnRzKGhleGVuYzxpZD4gY29uc3QgJiBpZGVudCwgCgkJICAgIHZlY3RvcjxjZXJ0
PiAmIGNlcnRzLAkJCQoJCSAgICBzdHJpbmcgY29uc3QgJiB0YWJsZSkKewogIHJlc3VsdHMg
cmVzOwogIGZldGNoKHJlcywgNSwgYW55X3Jvd3MsIAoJIlNFTEVDVCBpZCwgbmFtZSwgdmFs
dWUsIGtleXBhaXIsIHNpZ25hdHVyZSBGUk9NICclcScgIgoJIldIRVJFIGlkID0gJyVxJyIs
IAoJdGFibGUuY19zdHIoKSwgCQoJaWRlbnQoKS5jX3N0cigpKTsKICByZXN1bHRzX3RvX2Nl
cnRzKHJlcywgY2VydHMpOwp9CgoKdm9pZCAKZGF0YWJhc2U6OmdldF9jZXJ0cyhjZXJ0X25h
bWUgY29uc3QgJiBuYW1lLCAJICAgICAgCgkJICAgIHZlY3RvcjxjZXJ0PiAmIGNlcnRzLAoJ
CSAgICBzdHJpbmcgY29uc3QgJiB0YWJsZSkKewogIHJlc3VsdHMgcmVzOwogIGZldGNoKHJl
cywgNSwgYW55X3Jvd3MsIAoJIlNFTEVDVCBpZCwgbmFtZSwgdmFsdWUsIGtleXBhaXIsIHNp
Z25hdHVyZSAiCgkiRlJPTSAnJXEnIFdIRVJFIG5hbWUgPSAnJXEnIiwgCgl0YWJsZS5jX3N0
cigpLCAJCgluYW1lKCkuY19zdHIoKSk7CiAgcmVzdWx0c190b19jZXJ0cyhyZXMsIGNlcnRz
KTsKfQoKCnZvaWQgCmRhdGFiYXNlOjpnZXRfY2VydHMoaGV4ZW5jPGlkPiBjb25zdCAmIGlk
ZW50LCAKCQkgICAgY2VydF9uYW1lIGNvbnN0ICYgbmFtZSwgCSAgICAgIAoJCSAgICB2ZWN0
b3I8Y2VydD4gJiBjZXJ0cywKCQkgICAgc3RyaW5nIGNvbnN0ICYgdGFibGUpCnsKICByZXN1
bHRzIHJlczsKICBmZXRjaChyZXMsIDUsIGFueV9yb3dzLCAKCSJTRUxFQ1QgaWQsIG5hbWUs
IHZhbHVlLCBrZXlwYWlyLCBzaWduYXR1cmUgIgoJIkZST00gJyVxJyAiCgkiV0hFUkUgaWQg
PSAnJXEnIEFORCBuYW1lID0gJyVxJyIsIAoJdGFibGUuY19zdHIoKSwgCQoJaWRlbnQoKS5j
X3N0cigpLAoJbmFtZSgpLmNfc3RyKCkpOwogIHJlc3VsdHNfdG9fY2VydHMocmVzLCBjZXJ0
cyk7Cn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRfY2VydHMoY2VydF9uYW1lIGNvbnN0ICYgbmFt
ZSwKCQkgICAgYmFzZTY0PGNlcnRfdmFsdWU+IGNvbnN0ICYgdmFsLCAKCQkgICAgdmVjdG9y
PGNlcnQ+ICYgY2VydHMsCgkJICAgIHN0cmluZyBjb25zdCAmIHRhYmxlKQp7CiAgcmVzdWx0
cyByZXM7CiAgZmV0Y2gocmVzLCA1LCBhbnlfcm93cywgCgkiU0VMRUNUIGlkLCBuYW1lLCB2
YWx1ZSwga2V5cGFpciwgc2lnbmF0dXJlICIKCSJGUk9NICclcScgIgoJIldIRVJFIG5hbWUg
PSAnJXEnIEFORCB2YWx1ZSA9ICclcSciLCAKCXRhYmxlLmNfc3RyKCksIAkKCW5hbWUoKS5j
X3N0cigpLAoJdmFsKCkuY19zdHIoKSk7CiAgcmVzdWx0c190b19jZXJ0cyhyZXMsIGNlcnRz
KTsKfQoKCnZvaWQgCmRhdGFiYXNlOjpnZXRfY2VydHMoaGV4ZW5jPGlkPiBjb25zdCAmIGlk
ZW50LCAKCQkgICAgY2VydF9uYW1lIGNvbnN0ICYgbmFtZSwgCSAgICAgIAoJCSAgICBiYXNl
NjQ8Y2VydF92YWx1ZT4gY29uc3QgJiB2YWx1ZSwKCQkgICAgdmVjdG9yPGNlcnQ+ICYgY2Vy
dHMsCgkJICAgIHN0cmluZyBjb25zdCAmIHRhYmxlKQp7CiAgcmVzdWx0cyByZXM7CiAgZmV0
Y2gocmVzLCA1LCBhbnlfcm93cywgCgkiU0VMRUNUIGlkLCBuYW1lLCB2YWx1ZSwga2V5cGFp
ciwgc2lnbmF0dXJlICIKCSJGUk9NICclcScgIgoJIldIRVJFIGlkID0gJyVxJyBBTkQgbmFt
ZSA9ICclcScgQU5EIHZhbHVlID0gJyVxJyIsIAoJdGFibGUuY19zdHIoKSwgCQoJaWRlbnQo
KS5jX3N0cigpLAoJbmFtZSgpLmNfc3RyKCksCgl2YWx1ZSgpLmNfc3RyKCkpOwogIHJlc3Vs
dHNfdG9fY2VydHMocmVzLCBjZXJ0cyk7Cn0KCgoKYm9vbCAKZGF0YWJhc2U6OnJldmlzaW9u
X2NlcnRfZXhpc3RzKHJldmlzaW9uPGNlcnQ+IGNvbnN0ICYgY2VydCkKeyAKICByZXR1cm4g
Y2VydF9leGlzdHMoY2VydC5pbm5lcigpLCAicmV2aXNpb25fY2VydHMiKTsgCn0KCmJvb2wg
CmRhdGFiYXNlOjptYW5pZmVzdF9jZXJ0X2V4aXN0cyhtYW5pZmVzdDxjZXJ0PiBjb25zdCAm
IGNlcnQpCnsgCiAgcmV0dXJuIGNlcnRfZXhpc3RzKGNlcnQuaW5uZXIoKSwgIm1hbmlmZXN0
X2NlcnRzIik7IAp9Cgpib29sIApkYXRhYmFzZTo6ZmlsZV9jZXJ0X2V4aXN0cyhmaWxlPGNl
cnQ+IGNvbnN0ICYgY2VydCkKeyAKICByZXR1cm4gY2VydF9leGlzdHMoY2VydC5pbm5lcigp
LCAiZmlsZV9jZXJ0cyIpOyAKfQoKdm9pZCAKZGF0YWJhc2U6OnB1dF9tYW5pZmVzdF9jZXJ0
KG1hbmlmZXN0PGNlcnQ+IGNvbnN0ICYgY2VydCkKeyAKICBwdXRfY2VydChjZXJ0LmlubmVy
KCksICJtYW5pZmVzdF9jZXJ0cyIpOyAKfQoKdm9pZCAKZGF0YWJhc2U6OnB1dF9yZXZpc2lv
bl9jZXJ0KHJldmlzaW9uPGNlcnQ+IGNvbnN0ICYgY2VydCkKeyAKICBwdXRfY2VydChjZXJ0
LmlubmVyKCksICJyZXZpc2lvbl9jZXJ0cyIpOyAKfQoKdm9pZCAKZGF0YWJhc2U6OnB1dF9m
aWxlX2NlcnQoZmlsZTxjZXJ0PiBjb25zdCAmIGNlcnQpCnsgCiAgcHV0X2NlcnQoY2VydC5p
bm5lcigpLCAiZmlsZV9jZXJ0cyIpOyAKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9maWxlX2Nl
cnRzKGNlcnRfbmFtZSBjb25zdCAmIG5hbWUsIAoJCQkgdmVjdG9yPCBmaWxlPGNlcnQ+ID4g
JiB0cykKewogIHZlY3RvcjxjZXJ0PiBjZXJ0czsKICBnZXRfY2VydHMobmFtZSwgY2VydHMs
ICJmaWxlX2NlcnRzIik7CiAgdHMuY2xlYXIoKTsKICBjb3B5KGNlcnRzLmJlZ2luKCksIGNl
cnRzLmVuZCgpLCBiYWNrX2luc2VydGVyKHRzKSk7ICAKfQoKdm9pZCAKZGF0YWJhc2U6Omdl
dF9maWxlX2NlcnRzKGZpbGVfaWQgY29uc3QgJiBpZCwgCgkJCSBjZXJ0X25hbWUgY29uc3Qg
JiBuYW1lLCAKCQkJIHZlY3RvcjwgZmlsZTxjZXJ0PiA+ICYgdHMpCnsKICB2ZWN0b3I8Y2Vy
dD4gY2VydHM7CiAgZ2V0X2NlcnRzKGlkLmlubmVyKCksIG5hbWUsIGNlcnRzLCAiZmlsZV9j
ZXJ0cyIpOwogIHRzLmNsZWFyKCk7CiAgY29weShjZXJ0cy5iZWdpbigpLCBjZXJ0cy5lbmQo
KSwgYmFja19pbnNlcnRlcih0cykpOyAgICAKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9maWxl
X2NlcnRzKGNlcnRfbmFtZSBjb25zdCAmIG5hbWUsCgkJCSBiYXNlNjQ8Y2VydF92YWx1ZT4g
Y29uc3QgJiB2YWwsIAoJCQkgdmVjdG9yPCBmaWxlPGNlcnQ+ID4gJiB0cykKewogIHZlY3Rv
cjxjZXJ0PiBjZXJ0czsKICBnZXRfY2VydHMobmFtZSwgdmFsLCBjZXJ0cywgImZpbGVfY2Vy
dHMiKTsKICB0cy5jbGVhcigpOwogIGNvcHkoY2VydHMuYmVnaW4oKSwgY2VydHMuZW5kKCks
IGJhY2tfaW5zZXJ0ZXIodHMpKTsgIAp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X2ZpbGVfY2Vy
dHMoZmlsZV9pZCBjb25zdCAmIGlkLCAKCQkJIGNlcnRfbmFtZSBjb25zdCAmIG5hbWUsCgkJ
CSBiYXNlNjQ8Y2VydF92YWx1ZT4gY29uc3QgJiB2YWwsIAoJCQkgdmVjdG9yPCBmaWxlPGNl
cnQ+ID4gJiB0cykKewogIHZlY3RvcjxjZXJ0PiBjZXJ0czsKICBnZXRfY2VydHMoaWQuaW5u
ZXIoKSwgbmFtZSwgdmFsLCBjZXJ0cywgImZpbGVfY2VydHMiKTsKICB0cy5jbGVhcigpOwog
IGNvcHkoY2VydHMuYmVnaW4oKSwgY2VydHMuZW5kKCksIGJhY2tfaW5zZXJ0ZXIodHMpKTsg
IAp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X2ZpbGVfY2VydHMoZmlsZV9pZCBjb25zdCAmIGlk
LCAKCQkJIHZlY3RvcjwgZmlsZTxjZXJ0PiA+ICYgdHMpCnsgCiAgdmVjdG9yPGNlcnQ+IGNl
cnRzOwogIGdldF9jZXJ0cyhpZC5pbm5lcigpLCBjZXJ0cywgImZpbGVfY2VydHMiKTsgCiAg
dHMuY2xlYXIoKTsKICBjb3B5KGNlcnRzLmJlZ2luKCksIGNlcnRzLmVuZCgpLCBiYWNrX2lu
c2VydGVyKHRzKSk7Cn0KCgpib29sIApkYXRhYmFzZTo6ZmlsZV9jZXJ0X2V4aXN0cyhoZXhl
bmM8aWQ+IGNvbnN0ICYgaGFzaCkKewogIHJlc3VsdHMgcmVzOwogIHZlY3RvcjxjZXJ0PiBj
ZXJ0czsKICBmZXRjaChyZXMsIG9uZV9jb2wsIGFueV9yb3dzLCAKCSJTRUxFQ1QgaWQgIgoJ
IkZST00gZmlsZV9jZXJ0cyAiCgkiV0hFUkUgaGFzaCA9ICclcSciLCAKCWhhc2goKS5jX3N0
cigpKTsKICBJKHJlcy5zaXplKCkgPT0gMCB8fCByZXMuc2l6ZSgpID09IDEpOwogIHJldHVy
biAocmVzLnNpemUoKSA9PSAxKTsKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9maWxlX2NlcnQo
aGV4ZW5jPGlkPiBjb25zdCAmIGhhc2gsCgkJCWZpbGU8Y2VydD4gJiBjKQp7CiAgcmVzdWx0
cyByZXM7CiAgdmVjdG9yPGNlcnQ+IGNlcnRzOwogIGZldGNoKHJlcywgNSwgb25lX3Jvdywg
CgkiU0VMRUNUIGlkLCBuYW1lLCB2YWx1ZSwga2V5cGFpciwgc2lnbmF0dXJlICIKCSJGUk9N
IGZpbGVfY2VydHMgIgoJIldIRVJFIGhhc2ggPSAnJXEnIiwgCgloYXNoKCkuY19zdHIoKSk7
CiAgcmVzdWx0c190b19jZXJ0cyhyZXMsIGNlcnRzKTsKICBJKGNlcnRzLnNpemUoKSA9PSAx
KTsKICBjID0gZmlsZTxjZXJ0PihjZXJ0c1swXSk7Cn0KCgoKdm9pZCAKZGF0YWJhc2U6Omdl
dF9yZXZpc2lvbl9jZXJ0cyhjZXJ0X25hbWUgY29uc3QgJiBuYW1lLCAKCQkJICAgIHZlY3Rv
cjwgcmV2aXNpb248Y2VydD4gPiAmIHRzKQp7CiAgdmVjdG9yPGNlcnQ+IGNlcnRzOwogIGdl
dF9jZXJ0cyhuYW1lLCBjZXJ0cywgInJldmlzaW9uX2NlcnRzIik7CiAgdHMuY2xlYXIoKTsK
ICBjb3B5KGNlcnRzLmJlZ2luKCksIGNlcnRzLmVuZCgpLCBiYWNrX2luc2VydGVyKHRzKSk7
ICAKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9yZXZpc2lvbl9jZXJ0cyhyZXZpc2lvbl9pZCBj
b25zdCAmIGlkLCAKCQkJICAgIGNlcnRfbmFtZSBjb25zdCAmIG5hbWUsIAoJCQkgICAgdmVj
dG9yPCByZXZpc2lvbjxjZXJ0PiA+ICYgdHMpCnsKICB2ZWN0b3I8Y2VydD4gY2VydHM7CiAg
Z2V0X2NlcnRzKGlkLmlubmVyKCksIG5hbWUsIGNlcnRzLCAicmV2aXNpb25fY2VydHMiKTsK
ICB0cy5jbGVhcigpOwogIGNvcHkoY2VydHMuYmVnaW4oKSwgY2VydHMuZW5kKCksIGJhY2tf
aW5zZXJ0ZXIodHMpKTsgIAp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X3JldmlzaW9uX2NlcnRz
KHJldmlzaW9uX2lkIGNvbnN0ICYgaWQsIAoJCQkgICAgY2VydF9uYW1lIGNvbnN0ICYgbmFt
ZSwKCQkJICAgIGJhc2U2NDxjZXJ0X3ZhbHVlPiBjb25zdCAmIHZhbCwgCgkJCSAgICB2ZWN0
b3I8IHJldmlzaW9uPGNlcnQ+ID4gJiB0cykKewogIHZlY3RvcjxjZXJ0PiBjZXJ0czsKICBn
ZXRfY2VydHMoaWQuaW5uZXIoKSwgbmFtZSwgdmFsLCBjZXJ0cywgInJldmlzaW9uX2NlcnRz
Iik7CiAgdHMuY2xlYXIoKTsKICBjb3B5KGNlcnRzLmJlZ2luKCksIGNlcnRzLmVuZCgpLCBi
YWNrX2luc2VydGVyKHRzKSk7ICAKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9yZXZpc2lvbl9j
ZXJ0cyhjZXJ0X25hbWUgY29uc3QgJiBuYW1lLAoJCQkgICAgYmFzZTY0PGNlcnRfdmFsdWU+
IGNvbnN0ICYgdmFsLCAKCQkJICAgIHZlY3RvcjwgcmV2aXNpb248Y2VydD4gPiAmIHRzKQp7
CiAgdmVjdG9yPGNlcnQ+IGNlcnRzOwogIGdldF9jZXJ0cyhuYW1lLCB2YWwsIGNlcnRzLCAi
cmV2aXNpb25fY2VydHMiKTsKICB0cy5jbGVhcigpOwogIGNvcHkoY2VydHMuYmVnaW4oKSwg
Y2VydHMuZW5kKCksIGJhY2tfaW5zZXJ0ZXIodHMpKTsgIAp9Cgp2b2lkIApkYXRhYmFzZTo6
Z2V0X3JldmlzaW9uX2NlcnRzKHJldmlzaW9uX2lkIGNvbnN0ICYgaWQsIAoJCQkgICAgdmVj
dG9yPCByZXZpc2lvbjxjZXJ0PiA+ICYgdHMpCnsgCiAgdmVjdG9yPGNlcnQ+IGNlcnRzOwog
IGdldF9jZXJ0cyhpZC5pbm5lcigpLCBjZXJ0cywgInJldmlzaW9uX2NlcnRzIik7IAogIHRz
LmNsZWFyKCk7CiAgY29weShjZXJ0cy5iZWdpbigpLCBjZXJ0cy5lbmQoKSwgYmFja19pbnNl
cnRlcih0cykpOwp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X3JldmlzaW9uX2NlcnQoaGV4ZW5j
PGlkPiBjb25zdCAmIGhhc2gsCgkJCSAgIHJldmlzaW9uPGNlcnQ+ICYgYykKewogIHJlc3Vs
dHMgcmVzOwogIHZlY3RvcjxjZXJ0PiBjZXJ0czsKICBmZXRjaChyZXMsIDUsIG9uZV9yb3cs
IAoJIlNFTEVDVCBpZCwgbmFtZSwgdmFsdWUsIGtleXBhaXIsIHNpZ25hdHVyZSAiCgkiRlJP
TSByZXZpc2lvbl9jZXJ0cyAiCgkiV0hFUkUgaGFzaCA9ICclcSciLCAKCWhhc2goKS5jX3N0
cigpKTsKICByZXN1bHRzX3RvX2NlcnRzKHJlcywgY2VydHMpOwogIEkoY2VydHMuc2l6ZSgp
ID09IDEpOwogIGMgPSByZXZpc2lvbjxjZXJ0PihjZXJ0c1swXSk7Cn0KCmJvb2wgCmRhdGFi
YXNlOjpyZXZpc2lvbl9jZXJ0X2V4aXN0cyhoZXhlbmM8aWQ+IGNvbnN0ICYgaGFzaCkKewog
IHJlc3VsdHMgcmVzOwogIHZlY3RvcjxjZXJ0PiBjZXJ0czsKICBmZXRjaChyZXMsIG9uZV9j
b2wsIGFueV9yb3dzLCAKCSJTRUxFQ1QgaWQgIgoJIkZST00gcmV2aXNpb25fY2VydHMgIgoJ
IldIRVJFIGhhc2ggPSAnJXEnIiwgCgloYXNoKCkuY19zdHIoKSk7CiAgSShyZXMuc2l6ZSgp
ID09IDAgfHwgcmVzLnNpemUoKSA9PSAxKTsKICByZXR1cm4gKHJlcy5zaXplKCkgPT0gMSk7
Cn0KCmJvb2wgCmRhdGFiYXNlOjptYW5pZmVzdF9jZXJ0X2V4aXN0cyhoZXhlbmM8aWQ+IGNv
bnN0ICYgaGFzaCkKewogIHJlc3VsdHMgcmVzOwogIHZlY3RvcjxjZXJ0PiBjZXJ0czsKICBm
ZXRjaChyZXMsIG9uZV9jb2wsIGFueV9yb3dzLCAKCSJTRUxFQ1QgaWQgIgoJIkZST00gbWFu
aWZlc3RfY2VydHMgIgoJIldIRVJFIGhhc2ggPSAnJXEnIiwgCgloYXNoKCkuY19zdHIoKSk7
CiAgSShyZXMuc2l6ZSgpID09IDAgfHwgcmVzLnNpemUoKSA9PSAxKTsKICByZXR1cm4gKHJl
cy5zaXplKCkgPT0gMSk7Cn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRfbWFuaWZlc3RfY2VydCho
ZXhlbmM8aWQ+IGNvbnN0ICYgaGFzaCwKCQkJICAgIG1hbmlmZXN0PGNlcnQ+ICYgYykKewog
IHJlc3VsdHMgcmVzOwogIHZlY3RvcjxjZXJ0PiBjZXJ0czsKICBmZXRjaChyZXMsIDUsIG9u
ZV9yb3csIAoJIlNFTEVDVCBpZCwgbmFtZSwgdmFsdWUsIGtleXBhaXIsIHNpZ25hdHVyZSAi
CgkiRlJPTSBtYW5pZmVzdF9jZXJ0cyAiCgkiV0hFUkUgaGFzaCA9ICclcSciLCAKCWhhc2go
KS5jX3N0cigpKTsKICByZXN1bHRzX3RvX2NlcnRzKHJlcywgY2VydHMpOwogIEkoY2VydHMu
c2l6ZSgpID09IDEpOwogIGMgPSBtYW5pZmVzdDxjZXJ0PihjZXJ0c1swXSk7Cn0KCnZvaWQg
CmRhdGFiYXNlOjpnZXRfbWFuaWZlc3RfY2VydHMobWFuaWZlc3RfaWQgY29uc3QgJiBpZCwg
CgkJCSAgICAgdmVjdG9yPCBtYW5pZmVzdDxjZXJ0PiA+ICYgdHMpCnsgCiAgdmVjdG9yPGNl
cnQ+IGNlcnRzOwogIGdldF9jZXJ0cyhpZC5pbm5lcigpLCBjZXJ0cywgIm1hbmlmZXN0X2Nl
cnRzIik7IAogIHRzLmNsZWFyKCk7CiAgY29weShjZXJ0cy5iZWdpbigpLCBjZXJ0cy5lbmQo
KSwgYmFja19pbnNlcnRlcih0cykpOwp9CgoKdm9pZCAKZGF0YWJhc2U6OmdldF9tYW5pZmVz
dF9jZXJ0cyhjZXJ0X25hbWUgY29uc3QgJiBuYW1lLCAKCQkJICAgIHZlY3RvcjwgbWFuaWZl
c3Q8Y2VydD4gPiAmIHRzKQp7CiAgdmVjdG9yPGNlcnQ+IGNlcnRzOwogIGdldF9jZXJ0cyhu
YW1lLCBjZXJ0cywgIm1hbmlmZXN0X2NlcnRzIik7CiAgdHMuY2xlYXIoKTsKICBjb3B5KGNl
cnRzLmJlZ2luKCksIGNlcnRzLmVuZCgpLCBiYWNrX2luc2VydGVyKHRzKSk7ICAKfQoKdm9p
ZCAKZGF0YWJhc2U6OmdldF9tYW5pZmVzdF9jZXJ0cyhtYW5pZmVzdF9pZCBjb25zdCAmIGlk
LCAKCQkJICAgICBjZXJ0X25hbWUgY29uc3QgJiBuYW1lLCAKCQkJICAgICB2ZWN0b3I8IG1h
bmlmZXN0PGNlcnQ+ID4gJiB0cykKewogIHZlY3RvcjxjZXJ0PiBjZXJ0czsKICBnZXRfY2Vy
dHMoaWQuaW5uZXIoKSwgbmFtZSwgY2VydHMsICJtYW5pZmVzdF9jZXJ0cyIpOwogIHRzLmNs
ZWFyKCk7CiAgY29weShjZXJ0cy5iZWdpbigpLCBjZXJ0cy5lbmQoKSwgYmFja19pbnNlcnRl
cih0cykpOyAgCn0KCgovLyBjb21wbGV0aW9ucwp2b2lkIApkYXRhYmFzZTo6Y29tcGxldGUo
c3RyaW5nIGNvbnN0ICYgcGFydGlhbCwKCQkgICBzZXQ8cmV2aXNpb25faWQ+ICYgY29tcGxl
dGlvbnMpCnsKICByZXN1bHRzIHJlczsKICBjb21wbGV0aW9ucy5jbGVhcigpOwoKICBmZXRj
aChyZXMsIDEsIGFueV9yb3dzLAoJIlNFTEVDVCBpZCBGUk9NIHJldmlzaW9ucyBXSEVSRSBp
ZCBHTE9CICclcSonIiwKCXBhcnRpYWwuY19zdHIoKSk7CgogIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcmVzLnNpemUoKTsgKytpKQogICAgY29tcGxldGlvbnMuaW5zZXJ0KHJldmlzaW9u
X2lkKHJlc1tpXVswXSkpOyAgCn0KCgp2b2lkIApkYXRhYmFzZTo6Y29tcGxldGUoc3RyaW5n
IGNvbnN0ICYgcGFydGlhbCwKCQkgICBzZXQ8bWFuaWZlc3RfaWQ+ICYgY29tcGxldGlvbnMp
CnsKICByZXN1bHRzIHJlczsKICBjb21wbGV0aW9ucy5jbGVhcigpOwoKICBmZXRjaChyZXMs
IDEsIGFueV9yb3dzLAoJIlNFTEVDVCBpZCBGUk9NIG1hbmlmZXN0cyBXSEVSRSBpZCBHTE9C
ICclcSonIiwKCXBhcnRpYWwuY19zdHIoKSk7CgogIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cmVzLnNpemUoKTsgKytpKQogICAgY29tcGxldGlvbnMuaW5zZXJ0KG1hbmlmZXN0X2lkKHJl
c1tpXVswXSkpOyAgCiAgCiAgcmVzLmNsZWFyKCk7CgogIGZldGNoKHJlcywgMSwgYW55X3Jv
d3MsCgkiU0VMRUNUIGlkIEZST00gbWFuaWZlc3RfZGVsdGFzIFdIRVJFIGlkIEdMT0IgJyVx
KiciLAoJcGFydGlhbC5jX3N0cigpKTsKCiAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXMu
c2l6ZSgpOyArK2kpCiAgICBjb21wbGV0aW9ucy5pbnNlcnQobWFuaWZlc3RfaWQocmVzW2ld
WzBdKSk7ICAKfQoKdm9pZCAKZGF0YWJhc2U6OmNvbXBsZXRlKHN0cmluZyBjb25zdCAmIHBh
cnRpYWwsCgkJICAgc2V0PGZpbGVfaWQ+ICYgY29tcGxldGlvbnMpCnsKICByZXN1bHRzIHJl
czsKICBjb21wbGV0aW9ucy5jbGVhcigpOwoKICBmZXRjaChyZXMsIDEsIGFueV9yb3dzLAoJ
IlNFTEVDVCBpZCBGUk9NIGZpbGVzIFdIRVJFIGlkIEdMT0IgJyVxKiciLAoJcGFydGlhbC5j
X3N0cigpKTsKCiAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXMuc2l6ZSgpOyArK2kpCiAg
ICBjb21wbGV0aW9ucy5pbnNlcnQoZmlsZV9pZChyZXNbaV1bMF0pKTsgIAogIAogIHJlcy5j
bGVhcigpOwoKICBmZXRjaChyZXMsIDEsIGFueV9yb3dzLAoJIlNFTEVDVCBpZCBGUk9NIGZp
bGVfZGVsdGFzIFdIRVJFIGlkIEdMT0IgJyVxKiciLAoJcGFydGlhbC5jX3N0cigpKTsKCiAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXMuc2l6ZSgpOyArK2kpCiAgICBjb21wbGV0aW9u
cy5pbnNlcnQoZmlsZV9pZChyZXNbaV1bMF0pKTsgIAp9Cgp1c2luZyBjb21tYW5kczo6c2Vs
ZWN0b3JfdHlwZTsKCnN0YXRpYyB2b2lkIHNlbGVjdG9yX3RvX2NlcnRuYW1lKHNlbGVjdG9y
X3R5cGUgdHksCgkJCQkgc3RyaW5nICYgcykKewogIHN3aXRjaCAodHkpCiAgICB7CiAgICBj
YXNlIGNvbW1hbmRzOjpzZWxfYXV0aG9yOgogICAgICBzID0gYXV0aG9yX2NlcnRfbmFtZTsK
ICAgICAgYnJlYWs7CiAgICBjYXNlIGNvbW1hbmRzOjpzZWxfYnJhbmNoOgogICAgICBzID0g
YnJhbmNoX2NlcnRfbmFtZTsKICAgICAgYnJlYWs7CiAgICBjYXNlIGNvbW1hbmRzOjpzZWxf
ZGF0ZToKICAgICAgcyA9IGRhdGVfY2VydF9uYW1lOwogICAgICBicmVhazsKICAgIGNhc2Ug
Y29tbWFuZHM6OnNlbF90YWc6CiAgICAgIHMgPSB0YWdfY2VydF9uYW1lOwogICAgICBicmVh
azsKICAgIGNhc2UgY29tbWFuZHM6OnNlbF9pZGVudDoKICAgIGNhc2UgY29tbWFuZHM6OnNl
bF91bmtub3duOgogICAgICBJKGZhbHNlKTsgLy8gZG9uJ3QgZG8gdGhpcy4KICAgICAgYnJl
YWs7CiAgICB9Cn0KCnZvaWQgZGF0YWJhc2U6OmNvbXBsZXRlKHNlbGVjdG9yX3R5cGUgdHks
CgkJCXN0cmluZyBjb25zdCAmIHBhcnRpYWwsCgkJCXZlY3RvcjxwYWlyPHNlbGVjdG9yX3R5
cGUsIHN0cmluZz4gPiBjb25zdCAmIGxpbWl0LAoJCQlzZXQ8c3RyaW5nPiAmIGNvbXBsZXRp
b25zKQp7CiAgY29tcGxldGlvbnMuY2xlYXIoKTsKCiAgLy8gc3RlcCAxOiB0aGUgbGltaXQg
aXMgdHJhbnNmb3JtZWQgaW50byBhbiBTUUwgc2VsZWN0IHN0YXRlbWVudCB3aGljaAogIC8v
IHNlbGVjdHMgYSBzZXQgb2YgSURzIGZyb20gdGhlIG1hbmlmZXN0X2NlcnRzIHRhYmxlIHdo
aWNoIG1hdGNoIHRoZQogIC8vIGxpbWl0LiAgdGhpcyBpcyBkb25lIGJ5IGJ1aWxkaW5nIGFu
IFNRTCBzZWxlY3Qgc3RhdGVtZW50IGZvciBlYWNoIHRlcm0KICAvLyBpbiB0aGUgbGltaXQg
YW5kIHRoZW4gSU5URVJTRUNUaW5nIHRoZW0gYWxsLgoKICBzdHJpbmcgbGltID0gIigiOwog
IGJvb2wgZmlyc3RfbGltaXQgPSB0cnVlOwogIGZvciAodmVjdG9yPHBhaXI8c2VsZWN0b3Jf
dHlwZSwgc3RyaW5nPiA+Ojpjb25zdF9pdGVyYXRvciBpID0gbGltaXQuYmVnaW4oKTsKICAg
ICAgIGkgIT0gbGltaXQuZW5kKCk7ICsraSkKICAgIHsKICAgICAgaWYgKGZpcnN0X2xpbWl0
KQoJZmlyc3RfbGltaXQgPSBmYWxzZTsKICAgICAgZWxzZQoJbGltICs9ICIgSU5URVJTRUNU
ICI7CiAgICAgIAogICAgICBpZiAoaS0+Zmlyc3QgPT0gY29tbWFuZHM6OnNlbF9pZGVudCkK
CXsKCSAgbGltICs9ICJTRUxFQ1QgaWQgRlJPTSByZXZpc2lvbl9jZXJ0cyAiOwoJICBsaW0g
Kz0gKEYoIldIRVJFIGlkIEdMT0IgJyVzKiciKSAKCQkgICUgaS0+c2Vjb25kKS5zdHIoKTsK
CX0KICAgICAgZWxzZSBpZiAoaS0+Zmlyc3QgPT0gY29tbWFuZHM6OnNlbF91bmtub3duKQoJ
ewoJICBsaW0gKz0gIlNFTEVDVCBpZCBGUk9NIHJldmlzaW9uX2NlcnRzICI7CgkgIGxpbSAr
PSAoRigiIFdIRVJFIChuYW1lPSclcycgT1IgbmFtZT0nJXMnIE9SIG5hbWU9JyVzJykiKQoJ
CSAgJSBhdXRob3JfY2VydF9uYW1lIAoJCSAgJSB0YWdfY2VydF9uYW1lIAoJCSAgJSBicmFu
Y2hfY2VydF9uYW1lKS5zdHIoKTsKCSAgbGltICs9IChGKCIgQU5EIHVuYmFzZTY0KHZhbHVl
KSBnbG9iICcqJXMqJyIpCgkJICAlIGktPnNlY29uZCkuc3RyKCk7CSAgCgl9CiAgICAgIGVs
c2UKCXsKCSAgc3RyaW5nIGNlcnRuYW1lOwoJICBzZWxlY3Rvcl90b19jZXJ0bmFtZShpLT5m
aXJzdCwgY2VydG5hbWUpOwoJICBsaW0gKz0gIlNFTEVDVCBpZCBGUk9NIHJldmlzaW9uX2Nl
cnRzICI7CgkgIGxpbSArPSAoRigiV0hFUkUgbmFtZT0nJXMnIEFORCB1bmJhc2U2NCh2YWx1
ZSkgZ2xvYiAnKiVzKiciKQoJCSAgJSBjZXJ0bmFtZSAlIGktPnNlY29uZCkuc3RyKCk7Cgl9
CiAgICB9CiAgbGltICs9ICIpIjsKICAKICAvLyBzdGVwIDI6IGRlcGVuZGluZyBvbiB3aGF0
IHdlJ3ZlIGJlZW4gYXNrZWQgdG8gZGlzYW1iaWd1YXRlLCB3ZQogIC8vIHdpbGwgY29tcGxl
dGUgZWl0aGVyIHNvbWUgaWRlbnRzLCBvciBjZXJ0IHZhbHVlcywgb3IgInVua25vd24iCiAg
Ly8gd2hpY2ggZ2VuZXJhbGx5IG1lYW5zICJhdXRob3IsIHRhZyBvciBicmFuY2giCgogIHN0
cmluZyBxdWVyeTsKICBpZiAodHkgPT0gY29tbWFuZHM6OnNlbF9pZGVudCkKICAgIHsKICAg
ICAgcXVlcnkgPSAoRigiU0VMRUNUIGlkIEZST00gJXMiKSAlIGxpbSkuc3RyKCk7CiAgICB9
CiAgZWxzZSAKICAgIHsKICAgICAgcXVlcnkgPSAiU0VMRUNUIHZhbHVlIEZST00gcmV2aXNp
b25fY2VydHMgV0hFUkUiOwogICAgICBpZiAodHkgPT0gY29tbWFuZHM6OnNlbF91bmtub3du
KQoJewkgIAkKCSAgcXVlcnkgKz0gCgkgICAgKEYoIiAobmFtZT0nJXMnIE9SIG5hbWU9JyVz
JyBPUiBuYW1lPSclcycpIikKCSAgICAgJSBhdXRob3JfY2VydF9uYW1lIAoJICAgICAlIHRh
Z19jZXJ0X25hbWUgCgkgICAgICUgYnJhbmNoX2NlcnRfbmFtZSkuc3RyKCk7Cgl9CiAgICAg
IGVsc2UKCXsKCSAgc3RyaW5nIGNlcnRuYW1lOwoJICBzZWxlY3Rvcl90b19jZXJ0bmFtZSh0
eSwgY2VydG5hbWUpOwoJICBxdWVyeSArPSAKCSAgICAoRigiIChuYW1lPSclcycpIikgJSBj
ZXJ0bmFtZSkuc3RyKCk7Cgl9CiAgICAgICAgCiAgICAgIHF1ZXJ5ICs9IChGKCIgQU5EICh1
bmJhc2U2NCh2YWx1ZSkgR0xPQiAnKiVzKicpIikgJSBwYXJ0aWFsKS5zdHIoKTsKICAgICAg
cXVlcnkgKz0gKEYoIiBBTkQgKGlkIElOICVzKSIpICUgbGltKS5zdHIoKTsKICAgIH0KCiAg
cmVzdWx0cyByZXM7CiAgZmV0Y2gocmVzLCBvbmVfY29sLCBhbnlfcm93cywgcXVlcnkuY19z
dHIoKSk7CiAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXMuc2l6ZSgpOyArK2kpCiAgICB7
CiAgICAgIGlmICh0eSA9PSBjb21tYW5kczo6c2VsX2lkZW50KQoJY29tcGxldGlvbnMuaW5z
ZXJ0KHJlc1tpXVswXSk7CiAgICAgIGVsc2UKCXsKCSAgYmFzZTY0PGRhdGE+IHJvd19lbmNv
ZGVkKHJlc1tpXVswXSk7CgkgIGRhdGEgcm93X2RlY29kZWQ7CgkgIGRlY29kZV9iYXNlNjQo
cm93X2VuY29kZWQsIHJvd19kZWNvZGVkKTsKCSAgY29tcGxldGlvbnMuaW5zZXJ0KHJvd19k
ZWNvZGVkKCkpOwoJfQogICAgfQp9CgoKLy8gbWVya2xlIG5vZGVzCgpib29sIApkYXRhYmFz
ZTo6bWVya2xlX25vZGVfZXhpc3RzKHN0cmluZyBjb25zdCAmIHR5cGUsCgkJCSAgICAgdXRm
OCBjb25zdCAmIGNvbGxlY3Rpb24sIAoJCQkgICAgIHNpemVfdCBsZXZlbCwKCQkJICAgICBo
ZXhlbmM8cHJlZml4PiBjb25zdCAmIHByZWZpeCkKewogIHJlc3VsdHMgcmVzOwogIGZldGNo
KHJlcywgb25lX2NvbCwgb25lX3JvdywgCgkiU0VMRUNUIENPVU5UKCopICIKCSJGUk9NIG1l
cmtsZV9ub2RlcyAiCgkiV0hFUkUgdHlwZSA9ICclcScgIgoJIkFORCBjb2xsZWN0aW9uID0g
JyVxJyAiCgkiQU5EIGxldmVsID0gJWQgIgoJIkFORCBwcmVmaXggPSAnJXEnICIsCgl0eXBl
LmNfc3RyKCksIGNvbGxlY3Rpb24oKS5jX3N0cigpLCBsZXZlbCwgcHJlZml4KCkuY19zdHIo
KSk7CiAgc2l6ZV90IG5fbm9kZXMgPSBsZXhpY2FsX2Nhc3Q8c2l6ZV90PihyZXNbMF1bMF0p
OwogIEkobl9ub2RlcyA9PSAwIHx8IG5fbm9kZXMgPT0gMSk7CiAgcmV0dXJuIG5fbm9kZXMg
PT0gMTsKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9tZXJrbGVfbm9kZShzdHJpbmcgY29uc3Qg
JiB0eXBlLAoJCQkgIHV0ZjggY29uc3QgJiBjb2xsZWN0aW9uLCAKCQkJICBzaXplX3QgbGV2
ZWwsCgkJCSAgaGV4ZW5jPHByZWZpeD4gY29uc3QgJiBwcmVmaXgsCgkJCSAgYmFzZTY0PG1l
cmtsZT4gJiBub2RlKQp7CiAgcmVzdWx0cyByZXM7CiAgZmV0Y2gocmVzLCBvbmVfY29sLCBv
bmVfcm93LCAKCSJTRUxFQ1QgYm9keSAiCgkiRlJPTSBtZXJrbGVfbm9kZXMgIgoJIldIRVJF
IHR5cGUgPSAnJXEnICIKCSJBTkQgY29sbGVjdGlvbiA9ICclcScgIgoJIkFORCBsZXZlbCA9
ICVkICIKCSJBTkQgcHJlZml4ID0gJyVxJyIsCgl0eXBlLmNfc3RyKCksIGNvbGxlY3Rpb24o
KS5jX3N0cigpLCBsZXZlbCwgcHJlZml4KCkuY19zdHIoKSk7CiAgbm9kZSA9IHJlc1swXVsw
XTsKfQoKdm9pZCAKZGF0YWJhc2U6OnB1dF9tZXJrbGVfbm9kZShzdHJpbmcgY29uc3QgJiB0
eXBlLAoJCQkgIHV0ZjggY29uc3QgJiBjb2xsZWN0aW9uLCAKCQkJICBzaXplX3QgbGV2ZWws
CgkJCSAgaGV4ZW5jPHByZWZpeD4gY29uc3QgJiBwcmVmaXgsCQkJCSAgICAgICAKCQkJICBi
YXNlNjQ8bWVya2xlPiBjb25zdCAmIG5vZGUpCnsKICBleGVjdXRlKCJJTlNFUlQgT1IgUkVQ
TEFDRSAiCgkgICJJTlRPIG1lcmtsZV9ub2RlcyAiCgkgICJWQUxVRVMgKCclcScsICclcScs
ICVkLCAnJXEnLCAnJXEnKSIsCgkgIHR5cGUuY19zdHIoKSwgY29sbGVjdGlvbigpLmNfc3Ry
KCksIGxldmVsLCBwcmVmaXgoKS5jX3N0cigpLCBub2RlKCkuY19zdHIoKSk7Cn0KCnZvaWQg
CmRhdGFiYXNlOjplcmFzZV9tZXJrbGVfbm9kZXMoc3RyaW5nIGNvbnN0ICYgdHlwZSwKCQkJ
ICAgICB1dGY4IGNvbnN0ICYgY29sbGVjdGlvbikKewogIGV4ZWN1dGUoIkRFTEVURSBGUk9N
IG1lcmtsZV9ub2RlcyAiCgkgICJXSEVSRSB0eXBlID0gJyVxJyAiCgkgICJBTkQgY29sbGVj
dGlvbiA9ICclcSciLAoJICB0eXBlLmNfc3RyKCksIGNvbGxlY3Rpb24oKS5jX3N0cigpKTsK
fQoKLy8gdHJhbnNhY3Rpb24gZ3VhcmRzCgp0cmFuc2FjdGlvbl9ndWFyZDo6dHJhbnNhY3Rp
b25fZ3VhcmQoZGF0YWJhc2UgJiBkKSA6IGNvbW1pdHRlZChmYWxzZSksIGRiKGQpIAp7CiAg
ZGIuYmVnaW5fdHJhbnNhY3Rpb24oKTsKfQp0cmFuc2FjdGlvbl9ndWFyZDo6fnRyYW5zYWN0
aW9uX2d1YXJkKCkKewogIGlmIChjb21taXR0ZWQpCiAgICBkYi5jb21taXRfdHJhbnNhY3Rp
b24oKTsKICBlbHNlCiAgICBkYi5yb2xsYmFja190cmFuc2FjdGlvbigpOwp9Cgp2b2lkIAp0
cmFuc2FjdGlvbl9ndWFyZDo6Y29tbWl0KCkKewogIGNvbW1pdHRlZCA9IHRydWU7Cn0KCg==
_ATEOF


cat >correct.b64 <<'_ATEOF'
Ly8gY29weXJpZ2h0IChDKSAyMDAyLCAyMDAzIGdyYXlkb24gaG9hcmUgPGdyYXlkb25AcG9i
b3guY29tPgovLyBhbGwgcmlnaHRzIHJlc2VydmVkLgovLyBsaWNlbnNlZCB0byB0aGUgcHVi
bGljIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdQTCAoPj0gMikKLy8gc2VlIHRoZSBm
aWxlIENPUFlJTkcgZm9yIGRldGFpbHMKCiNpbmNsdWRlIDxpdGVyYXRvcj4KI2luY2x1ZGUg
PGxpc3Q+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDxzc3RyZWFtPgojaW5jbHVkZSA8dmVj
dG9yPgoKI2luY2x1ZGUgPHN0ZGFyZy5oPgoKI2luY2x1ZGUgPGJvb3N0L3NoYXJlZF9wdHIu
aHBwPgojaW5jbHVkZSA8Ym9vc3QvbGV4aWNhbF9jYXN0LmhwcD4KI2luY2x1ZGUgPGJvb3N0
L2ZpbGVzeXN0ZW0vcGF0aC5ocHA+CiNpbmNsdWRlIDxib29zdC9maWxlc3lzdGVtL29wZXJh
dGlvbnMuaHBwPgoKI2luY2x1ZGUgPHNxbGl0ZS5oPgoKI2luY2x1ZGUgImFwcF9zdGF0ZS5o
aCIKI2luY2x1ZGUgImNlcnQuaGgiCiNpbmNsdWRlICJjbGVhbnVwLmhoIgojaW5jbHVkZSAi
Y29uc3RhbnRzLmhoIgojaW5jbHVkZSAiZGF0YWJhc2UuaGgiCiNpbmNsdWRlICJrZXlzLmho
IgojaW5jbHVkZSAic2FuaXR5LmhoIgojaW5jbHVkZSAic2NoZW1hX21pZ3JhdGlvbi5oaCIK
I2luY2x1ZGUgImNlcnQuaGgiCiNpbmNsdWRlICJ0cmFuc2Zvcm1zLmhoIgojaW5jbHVkZSAi
dWkuaGgiCiNpbmNsdWRlICJ2b2NhYi5oaCIKI2luY2x1ZGUgInhkZWx0YS5oaCIKCi8vIGRl
ZmluZWQgaW4gc2NoZW1hLnNxbCwgY29udmVydGVkIHRvIGhlYWRlcjoKI2luY2x1ZGUgInNj
aGVtYS5oIgoKLy8gZGVmaW5lZCBpbiB2aWV3cy5zcWwsIGNvbnZlcnRlZCB0byBoZWFkZXI6
CiNpbmNsdWRlICJ2aWV3cy5oIgoKLy8gdGhpcyBmaWxlIGRlZmluZXMgYSBwdWJsaWMsIHR5
cGVkIGludGVyZmFjZSB0byB0aGUgZGF0YWJhc2UuCi8vIHRoZSBkYXRhYmFzZSBjbGFzcyBl
bmNhcHN1bGF0ZXMgYWxsIGtub3dsZWRnZSBhYm91dCBzcWxpdGUsCi8vIHRoZSBzY2hlbWEs
IGFuZCBhbGwgU1FMIHN0YXRlbWVudHMgdXNlZCB0byBhY2Nlc3MgdGhlIHNjaGVtYS4KLy8K
Ly8gc2VlIGZpbGUgc2NoZW1hLnNxbCBmb3IgdGhlIHRleHQgb2YgdGhlIHNjaGVtYS4KCnVz
aW5nIGJvb3N0OjpzaGFyZWRfcHRyOwp1c2luZyBib29zdDo6bGV4aWNhbF9jYXN0Owp1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGNvbnN0IG9uZV9yb3cgPSAxOwppbnQgY29uc3Qgb25l
X2NvbCA9IDE7CmludCBjb25zdCBhbnlfcm93cyA9IC0xOwppbnQgY29uc3QgYW55X2NvbHMg
PSAtMTsKCmV4dGVybiAiQyIgewogIC8vIHN0cmFuZ2VseSB0aGlzIGlzbid0IGRlY2xhcmVk
LCBldmVuIHRob3VnaCBpdCdzIHByZXNlbnQgaW4gbXkgc3FsaXRlLgogIGNoYXIgKnNxbGl0
ZV92bXByaW50Zihjb25zdCBjaGFyICp6Rm9ybWF0LCB2YV9saXN0KTsKfQoKZGF0YWJhc2U6
OmRhdGFiYXNlKGZzOjpwYXRoIGNvbnN0ICYgZm4pIDoKICBmaWxlbmFtZShmbiksCiAgLy8g
bmIuIHVwZGF0ZSB0aGlzIGlmIHlvdSBjaGFuZ2UgdGhlIHNjaGVtYS4gdW5mb3J0dW5hdGVs
eSB3ZSBhcmUgbm90CiAgLy8gdXNpbmcgc2VsZi1kaWdlc3Rpbmcgc2NoZW1hcyBkdWUgdG8g
Y29tbWVudCBpcnJlZ3VsYXJpdGllcyBhbmQKICAvLyBub24tYWxwaGFiZXRpYyBvcmRlcmlu
ZyBvZiB0YWJsZXMgaW4gc3FsIHNvdXJjZSBmaWxlcy4gd2UgY291bGQgY3JlYXRlCiAgLy8g
YSB0ZW1wb3JhcnkgZGIsIHdyaXRlIG91ciBpbnRlbmRlZCBzY2hlbWEgaW50byBpdCwgYW5k
IHJlYWQgaXQgYmFjaywKICAvLyBidXQgdGhpcyBzZWVtcyBsaWtlIGl0IHdvdWxkIGJlIHRv
byBydWRlLiBwb3NzaWJseSByZXZpc2l0IHRoaXMgaXNzdWUuCiAgc2NoZW1hKCJjMWU4NjU4
OGUxMWFkMDdmYTUzZTVkMjk0ZWRjMDQzY2UxZDQwMDVhIiksCiAgX19zcWwoTlVMTCksCiAg
dHJhbnNhY3Rpb25fbGV2ZWwoMCkKe30KCnZvaWQgCmRhdGFiYXNlOjpjaGVja19zY2hlbWEo
KQp7CiAgc3RyaW5nIGRiX3NjaGVtYV9pZDsgIAogIGNhbGN1bGF0ZV9zY2hlbWFfaWQgKF9f
c3FsLCBkYl9zY2hlbWFfaWQpOwogIE4gKHNjaGVtYSA9PSBkYl9zY2hlbWFfaWQsCiAgICAg
RigiZGF0YWJhc2Ugc2NoZW1hcyBkbyBub3QgbWF0Y2g6ICIKICAgICAgICJ3YW50ZWQgJXMs
IGdvdCAlcy4gdHJ5IG1pZ3JhdGluZyBkYXRhYmFzZSIpIAogICAgICUgc2NoZW1hICUgZGJf
c2NoZW1hX2lkKTsKfQoKc3RhdGljIHZvaWQgCnNxbGl0ZV91bmJhc2U2NF9mbihzcWxpdGVf
ZnVuYyAqZiwgaW50IG5hcmdzLCBjaGFyIGNvbnN0ICoqIGFyZ3MpCnsKICBpZiAobmFyZ3Mg
IT0gMSkKICAgIHsKICAgICAgc3FsaXRlX3NldF9yZXN1bHRfZXJyb3IoZiwgIm5lZWQgZXhh
Y3RseSAxIGFyZyB0byB1bmJhc2U2NCgpIiwgLTEpOwogICAgICByZXR1cm47CiAgICB9CiAg
ZGF0YSBkZWNvZGVkOwogIGRlY29kZV9iYXNlNjQoYmFzZTY0PGRhdGE+KHN0cmluZyhhcmdz
WzBdKSksIGRlY29kZWQpOwogIHNxbGl0ZV9zZXRfcmVzdWx0X3N0cmluZyhmLCBkZWNvZGVk
KCkuY19zdHIoKSwgZGVjb2RlZCgpLnNpemUoKSk7Cn0KCnZvaWQgCmRhdGFiYXNlOjpzZXRf
YXBwKGFwcF9zdGF0ZSAqIGFwcCkKewogIF9fYXBwID0gYXBwOwp9CgpzdHJ1Y3Qgc3FsaXRl
ICogCmRhdGFiYXNlOjpzcWwoYm9vbCBpbml0KQp7CiAgaWYgKCEgX19zcWwpCiAgICB7CiAg
ICAgIGlmICghIGluaXQpCiAgICAgICAgewogICAgICAgICAgaWYgKGZpbGVuYW1lLnN0cmlu
ZygpID09ICIiKQogICAgICAgICAgICB0aHJvdyBpbmZvcm1hdGl2ZV9mYWlsdXJlKHN0cmlu
Zygibm8gZGF0YWJhc2Ugc3BlY2lmaWVkIikpOwogICAgICAgICAgZWxzZSBpZiAoISBmczo6
ZXhpc3RzKGZpbGVuYW1lKSkKICAgICAgICAgICAgdGhyb3cgaW5mb3JtYXRpdmVfZmFpbHVy
ZShzdHJpbmcoImRhdGFiYXNlICIpICsgZmlsZW5hbWUuc3RyaW5nKCkgKwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZygiIGRvZXMgbm90IGV4aXN0Iikp
OwogICAgICAgIH0KICAgICAgTihmaWxlbmFtZS5zdHJpbmcoKSAhPSAiIiwKICAgICAgICBG
KCJuZWVkIGRhdGFiYXNlIG5hbWUiKSk7CiAgICAgIGNoYXIgKiBlcnJtc2cgPSBOVUxMOwog
ICAgICBfX3NxbCA9IHNxbGl0ZV9vcGVuKGZpbGVuYW1lLnN0cmluZygpLmNfc3RyKCksIDA3
NTUsICZlcnJtc2cpOwogICAgICBpZiAoISBfX3NxbCkKICAgICAgICB0aHJvdyBvb3BzKHN0
cmluZygiY291bGQgbm90IG9wZW4gZGF0YWJhc2U6ICIpICsgZmlsZW5hbWUuc3RyaW5nKCkg
KyAKICAgICAgICAgICAgICAgICAgIChlcnJtc2cgPyAoIjogIiArIHN0cmluZyhlcnJtc2cp
KSA6ICIiKSk7CiAgICAgIGlmIChpbml0KQogICAgICAgIGV4ZWN1dGUoc2NoZW1hX2NvbnN0
YW50KTsKCiAgICAgIGNoZWNrX3NjaGVtYSgpOwogICAgICBpbnN0YWxsX2Z1bmN0aW9ucyhf
X2FwcCk7CiAgICAgIGluc3RhbGxfdmlld3MoKTsKICAgIH0KICByZXR1cm4gX19zcWw7Cn0K
CnZvaWQgCmRhdGFiYXNlOjppbml0aWFsaXplKCkKewogIGlmIChfX3NxbCkKICAgIHRocm93
IG9vcHMoImNhbm5vdCBpbml0aWFsaXplIGRhdGFiYXNlIHdoaWxlIGl0IGlzIG9wZW4iKTsK
CiAgTighZnM6OmV4aXN0cyhmaWxlbmFtZSksCiAgICBGKCJjb3VsZCBub3QgaW5pdGlhbGl6
ZSBkYXRhYmFzZTogJXM6IGFscmVhZHkgZXhpc3RzIikgCiAgICAlIGZpbGVuYW1lLnN0cmlu
ZygpKTsKCiAgZnM6OnBhdGggam91cm5hbCA9IG1rcGF0aChmaWxlbmFtZS5zdHJpbmcoKSAr
ICItam91cm5hbCIpOwogIE4oIWZzOjpleGlzdHMoam91cm5hbCksCiAgICBGKCJleGlzdGlu
ZyAocG9zc2libHkgc3RhbGUpIGpvdXJuYWwgZmlsZSAnJXMnIGhhcyBzYW1lIHN0ZW0gYXMg
bmV3IGRhdGFiYXNlICclcyciKQogICAgJSBqb3VybmFsLnN0cmluZygpICUgZmlsZW5hbWUu
c3RyaW5nKCkpOwoKICBzcWxpdGUgKnMgPSBzcWwodHJ1ZSk7CiAgSShzICE9IE5VTEwpOwp9
CgoKc3RydWN0IApkdW1wX3JlcXVlc3QKewogIGR1bXBfcmVxdWVzdCgpIHt9OwogIHN0cnVj
dCBzcWxpdGUgKnNxbDsKICBzdHJpbmcgdGFibGVfbmFtZTsKICBvc3RyZWFtICpvdXQ7Cn07
CgpzdGF0aWMgaW50IApkdW1wX3Jvd19jYih2b2lkICpkYXRhLCBpbnQgbiwgY2hhciAqKnZh
bHMsIGNoYXIgKipjb2xzKQp7CiAgZHVtcF9yZXF1ZXN0ICpkdW1wID0gcmVpbnRlcnByZXRf
Y2FzdDxkdW1wX3JlcXVlc3QgKj4oZGF0YSk7CiAgSShkdW1wICE9IE5VTEwpOwogIEkodmFs
cyAhPSBOVUxMKTsKICBJKGR1bXAtPm91dCAhPSBOVUxMKTsKICAqKGR1bXAtPm91dCkgPDwg
RigiSU5TRVJUIElOVE8gJXMgVkFMVUVTKCIpICUgZHVtcC0+dGFibGVfbmFtZTsKICBmb3Ig
KGludCBpID0gMDsgaSA8IG47ICsraSkKICAgIHsKICAgICAgaWYgKGkgIT0gMCkKICAgICAg
ICAqKGR1bXAtPm91dCkgPDwgJywnOwoKICAgICAgaWYgKHZhbHNbaV0gPT0gTlVMTCkKICAg
ICAgICAqKGR1bXAtPm91dCkgPDwgIk5VTEwiOwogICAgICBlbHNlCiAgICAgICAgewogICAg
ICAgICAgKihkdW1wLT5vdXQpIDw8ICInIjsKICAgICAgICAgIGZvciAoY2hhciAqY3AgPSB2
YWxzW2ldOyAqY3A7ICsrY3ApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBpZiAoKmNw
ID09ICdcJycpCiAgICAgICAgICAgICAgICAqKGR1bXAtPm91dCkgPDwgIicnIjsKICAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAqKGR1bXAtPm91dCkgPDwgKmNwOwogICAg
ICAgICAgICB9CiAgICAgICAgICAqKGR1bXAtPm91dCkgPDwgIiciOwogICAgICAgIH0KICAg
IH0KICAqKGR1bXAtPm91dCkgPDwgIik7XG4iOyAgCiAgcmV0dXJuIDA7Cn0KCnN0YXRpYyBp
bnQgCmR1bXBfdGFibGVfY2Iodm9pZCAqZGF0YSwgaW50IG4sIGNoYXIgKip2YWxzLCBjaGFy
ICoqY29scykKewogIGR1bXBfcmVxdWVzdCAqZHVtcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZHVt
cF9yZXF1ZXN0ICo+KGRhdGEpOwogIEkoZHVtcCAhPSBOVUxMKTsKICBJKGR1bXAtPnNxbCAh
PSBOVUxMKTsKICBJKHZhbHMgIT0gTlVMTCk7CiAgSSh2YWxzWzBdICE9IE5VTEwpOwogIEko
dmFsc1sxXSAhPSBOVUxMKTsKICBJKHZhbHNbMl0gIT0gTlVMTCk7CiAgSShuID09IDMpOwog
IGlmIChzdHJpbmcodmFsc1sxXSkgPT0gInRhYmxlIikKICAgIHsKICAgICAgKihkdW1wLT5v
dXQpIDw8IHZhbHNbMl0gPDwgIjtcbiI7CiAgICAgIGR1bXAtPnRhYmxlX25hbWUgPSBzdHJp
bmcodmFsc1swXSk7CiAgICAgIHNxbGl0ZV9leGVjX3ByaW50ZihkdW1wLT5zcWwsICJTRUxF
Q1QgKiBGUk9NICclcSciLCAKICAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBfcm93X2Ni
LCBkYXRhLCBOVUxMLCB2YWxzWzBdKTsKICAgIH0KICByZXR1cm4gMDsKfQoKdm9pZCAKZGF0
YWJhc2U6OmR1bXAob3N0cmVhbSAmIG91dCkKewogIGR1bXBfcmVxdWVzdCByZXE7CiAgcmVx
Lm91dCA9ICZvdXQ7CiAgcmVxLnNxbCA9IHNxbCgpOwogIG91dCA8PCAiQkVHSU4gVFJBTlNB
Q1RJT047XG4iOwogIGludCByZXMgPSBzcWxpdGVfZXhlYyhyZXEuc3FsLAogICAgICAgICAg
ICAgICAgICAgICAgICAiU0VMRUNUIG5hbWUsIHR5cGUsIHNxbCBGUk9NIHNxbGl0ZV9tYXN0
ZXIgIgogICAgICAgICAgICAgICAgICAgICAgICAiV0hFUkUgdHlwZT0ndGFibGUnIEFORCBz
cWwgTk9UIE5VTEwgIgogICAgICAgICAgICAgICAgICAgICAgICAiT1JERVIgQlkgc3Vic3Ry
KHR5cGUsMiwxKSwgbmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBfdGFibGVf
Y2IsICZyZXEsIE5VTEwpOwogIEkocmVzID09IFNRTElURV9PSyk7CiAgb3V0IDw8ICJDT01N
SVQ7XG4iOwp9Cgp2b2lkIApkYXRhYmFzZTo6bG9hZChpc3RyZWFtICYgaW4pCnsKICBjaGFy
IGJ1Zltjb25zdGFudHM6OmJ1ZnN6XTsKICBzdHJpbmcgdG1wOwoKICBOKGZpbGVuYW1lLnN0
cmluZygpICE9ICIiLAogICAgRigibmVlZCBkYXRhYmFzZSBuYW1lIikpOwogIGNoYXIgKiBl
cnJtc2cgPSBOVUxMOwogIF9fc3FsID0gc3FsaXRlX29wZW4oZmlsZW5hbWUuc3RyaW5nKCku
Y19zdHIoKSwgMDc1NSwgJmVycm1zZyk7CiAgaWYgKCEgX19zcWwpCiAgICB0aHJvdyBvb3Bz
KHN0cmluZygiY291bGQgbm90IG9wZW4gZGF0YWJhc2U6ICIpICsgZmlsZW5hbWUuc3RyaW5n
KCkgKyAKICAgICAgICAgICAgICAgKGVycm1zZyA/ICgiOiAiICsgc3RyaW5nKGVycm1zZykp
IDogIiIpKTsKICAKICB3aGlsZShpbikKICAgIHsKICAgICAgaW4ucmVhZChidWYsIGNvbnN0
YW50czo6YnVmc3opOwogICAgICB0bXAuYXBwZW5kKGJ1ZiwgaW4uZ2NvdW50KCkpOwogICAg
fQoKICBleGVjdXRlKHRtcC5jX3N0cigpKTsKfQoKCnZvaWQgCmRhdGFiYXNlOjpkZWJ1Zyhz
dHJpbmcgY29uc3QgJiBzcWwsIG9zdHJlYW0gJiBvdXQpCnsKICByZXN1bHRzIHJlczsKICBm
ZXRjaChyZXMsIGFueV9jb2xzLCBhbnlfcm93cywgc3FsLmNfc3RyKCkpOwogIG91dCA8PCAi
JyIgPDwgc3FsIDw8ICInIC0+ICIgPDwgcmVzLnNpemUoKSA8PCAiIHJvd3NcbiIgPDwgZW5k
bDsKICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlcy5zaXplKCk7ICsraSkKICAgIHsKICAg
ICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCByZXNbaV0uc2l6ZSgpOyArK2opCiAgICAgICAg
ewogICAgICAgICAgaWYgKGogIT0gMCkKICAgICAgICAgICAgb3V0IDw8ICIgfCAiOwogICAg
ICAgICAgb3V0IDw8IHJlc1tpXVtqXTsKICAgICAgICB9CiAgICAgIG91dCA8PCBlbmRsOwog
ICAgfQp9Cgp1bnNpZ25lZCBsb25nIApkYXRhYmFzZTo6Z2V0X3N0YXRpc3RpYyhzdHJpbmcg
Y29uc3QgJiBxdWVyeSkKewogIHJlc3VsdHMgcmVzOwogIGZldGNoKHJlcywgMSwgMSwgcXVl
cnkuY19zdHIoKSk7CiAgcmV0dXJuIGxleGljYWxfY2FzdDx1bnNpZ25lZCBsb25nPihyZXNb
MF1bMF0pOwp9Cgp2b2lkIApkYXRhYmFzZTo6aW5mbyhvc3RyZWFtICYgb3V0KQp7CiAgc3Ry
aW5nIGlkOwogIGNhbGN1bGF0ZV9zY2hlbWFfaWQoc3FsKCksIGlkKTsKICBvdXQgPDwgInNj
aGVtYSB2ZXJzaW9uICA6ICIgPDwgaWQgPDwgZW5kbDsKICBvdXQgPDwgImZ1bGwgbWFuaWZl
c3RzICA6ICIgPDwgZ2V0X3N0YXRpc3RpYygiU0VMRUNUIENPVU5UKCopIEZST00gbWFuaWZl
c3RzIikgPDwgZW5kbDsKICBvdXQgPDwgIm1hbmlmZXN0IGRlbHRhcyA6ICIgPDwgZ2V0X3N0
YXRpc3RpYygiU0VMRUNUIENPVU5UKCopIEZST00gbWFuaWZlc3RfZGVsdGFzIikgPDwgZW5k
bDsKICBvdXQgPDwgImZ1bGwgZmlsZXMgICAgICA6ICIgPDwgZ2V0X3N0YXRpc3RpYygiU0VM
RUNUIENPVU5UKCopIEZST00gZmlsZXMiKSA8PCBlbmRsOwogIG91dCA8PCAiZmlsZSBkZWx0
YXMgICAgIDogIiA8PCBnZXRfc3RhdGlzdGljKCJTRUxFQ1QgQ09VTlQoKikgRlJPTSBmaWxl
X2RlbHRhcyIpIDw8IGVuZGw7Cn0KCnZvaWQgCmRhdGFiYXNlOjp2ZXJzaW9uKG9zdHJlYW0g
JiBvdXQpCnsKICBzdHJpbmcgaWQ7CiAgY2FsY3VsYXRlX3NjaGVtYV9pZChzcWwoKSwgaWQp
OwogIG91dCA8PCAiZGF0YWJhc2Ugc2NoZW1hIHZlcnNpb246ICIgPDwgaWQgPDwgZW5kbDsK
fQoKdm9pZCAKZGF0YWJhc2U6Om1pZ3JhdGUoKQp7ICAKICBOKGZpbGVuYW1lLnN0cmluZygp
ICE9ICIiLAogICAgRigibmVlZCBkYXRhYmFzZSBuYW1lIikpOwogIGNoYXIgKiBlcnJtc2cg
PSBOVUxMOwogIF9fc3FsID0gc3FsaXRlX29wZW4oZmlsZW5hbWUuc3RyaW5nKCkuY19zdHIo
KSwgMDc1NSwgJmVycm1zZyk7CiAgaWYgKCEgX19zcWwpCiAgICB0aHJvdyBvb3BzKHN0cmlu
ZygiY291bGQgbm90IG9wZW4gZGF0YWJhc2U6ICIpICsgZmlsZW5hbWUuc3RyaW5nKCkgKyAK
ICAgICAgICAgICAgICAgKGVycm1zZyA/ICgiOiAiICsgc3RyaW5nKGVycm1zZykpIDogIiIp
KTsKICBtaWdyYXRlX21vbm90b25lX3NjaGVtYShfX3NxbCk7CiAgc3FsaXRlX2Nsb3NlKF9f
c3FsKTsKfQoKdm9pZCAKZGF0YWJhc2U6OnJlaGFzaCgpCnsKICB0cmFuc2FjdGlvbl9ndWFy
ZCBndWFyZCgqdGhpcyk7CiAgdGlja2VyIG1jZXJ0cygibWNlcnRzIiwgIm0iLCAxKTsKICB0
aWNrZXIgZmNlcnRzKCJmY2VydHMiLCAiZiIsIDEpOwogIHRpY2tlciBwdWJrZXlzKCJwdWJr
ZXlzIiwgIisiLCAxKTsKICB0aWNrZXIgcHJpdmtleXMoInByaXZrZXlzIiwgIiEiLCAxKTsK
ICAKICB7CiAgICAvLyByZWhhc2ggYWxsIG1jZXJ0cwogICAgcmVzdWx0cyByZXM7CiAgICB2
ZWN0b3I8Y2VydD4gY2VydHM7CiAgICBmZXRjaChyZXMsIDUsIGFueV9yb3dzLCAKICAgICAg
ICAgICJTRUxFQ1QgaWQsIG5hbWUsIHZhbHVlLCBrZXlwYWlyLCBzaWduYXR1cmUgIgogICAg
ICAgICAgIkZST00gbWFuaWZlc3RfY2VydHMiKTsKICAgIHJlc3VsdHNfdG9fY2VydHMocmVz
LCBjZXJ0cyk7CiAgICBleGVjdXRlKCJERUxFVEUgRlJPTSBtYW5pZmVzdF9jZXJ0cyIpOwog
ICAgZm9yKHZlY3RvcjxjZXJ0Pjo6Y29uc3RfaXRlcmF0b3IgaSA9IGNlcnRzLmJlZ2luKCk7
IGkgIT0gY2VydHMuZW5kKCk7ICsraSkKICAgICAgewogICAgICAgIHB1dF9jZXJ0KCppLCAi
bWFuaWZlc3RfY2VydHMiKTsKICAgICAgICArK21jZXJ0czsKICAgICAgfQogIH0KCiAgewog
ICAgLy8gcmVoYXNoIGFsbCBmY2VydHMKICAgIHJlc3VsdHMgcmVzOwogICAgdmVjdG9yPGNl
cnQ+IGNlcnRzOyAgICAKICAgIGZldGNoKHJlcywgNSwgYW55X3Jvd3MsIAogICAgICAgICAg
IlNFTEVDVCBpZCwgbmFtZSwgdmFsdWUsIGtleXBhaXIsIHNpZ25hdHVyZSAiCiAgICAgICAg
ICAiRlJPTSBmaWxlX2NlcnRzIik7CiAgICByZXN1bHRzX3RvX2NlcnRzKHJlcywgY2VydHMp
OwogICAgZXhlY3V0ZSgiREVMRVRFIEZST00gZmlsZV9jZXJ0cyIpOwogICAgZm9yKHZlY3Rv
cjxjZXJ0Pjo6Y29uc3RfaXRlcmF0b3IgaSA9IGNlcnRzLmJlZ2luKCk7IGkgIT0gY2VydHMu
ZW5kKCk7ICsraSkKICAgICAgewogICAgICAgIHB1dF9jZXJ0KCppLCAiZmlsZV9jZXJ0cyIp
OwogICAgICAgICsrZmNlcnRzOwogICAgICB9CiAgfQogIAoKICB7CiAgICAvLyByZWhhc2gg
YWxsIHB1YmtleXMKICAgIHJlc3VsdHMgcmVzOwogICAgZmV0Y2gocmVzLCAyLCBhbnlfcm93
cywgIlNFTEVDVCBpZCwga2V5ZGF0YSBGUk9NIHB1YmxpY19rZXlzIik7CiAgICBleGVjdXRl
KCJERUxFVEUgRlJPTSBwdWJsaWNfa2V5cyIpOwogICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCByZXMuc2l6ZSgpOyArK2kpCiAgICAgIHsKICAgICAgICBoZXhlbmM8aWQ+IHRtcDsKICAg
ICAgICBrZXlfaGFzaF9jb2RlKHJzYV9rZXlwYWlyX2lkKHJlc1tpXVswXSksIGJhc2U2NDxy
c2FfcHViX2tleT4ocmVzW2ldWzFdKSwgdG1wKTsKICAgICAgICBleGVjdXRlKCJJTlNFUlQg
SU5UTyBwdWJsaWNfa2V5cyBWQUxVRVMoJyVxJywgJyVxJywgJyVxJykiLCAKICAgICAgICAg
ICAgICAgIHRtcCgpLmNfc3RyKCksIHJlc1tpXVswXS5jX3N0cigpLCByZXNbaV1bMV0uY19z
dHIoKSk7CiAgICAgICAgKytwdWJrZXlzOwogICAgICB9CiAgfQoKewogICAgLy8gcmVoYXNo
IGFsbCBwcml2a2V5cwogICAgcmVzdWx0cyByZXM7CiAgICBmZXRjaChyZXMsIDIsIGFueV9y
b3dzLCAiU0VMRUNUIGlkLCBrZXlkYXRhIEZST00gcHJpdmF0ZV9rZXlzIik7CiAgICBleGVj
dXRlKCJERUxFVEUgRlJPTSBwcml2YXRlX2tleXMiKTsKICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcmVzLnNpemUoKTsgKytpKQogICAgICB7CiAgICAgICAgaGV4ZW5jPGlkPiB0bXA7
CiAgICAgICAga2V5X2hhc2hfY29kZShyc2Ffa2V5cGFpcl9pZChyZXNbaV1bMF0pLCBiYXNl
NjQ8IGFyYzQ8cnNhX3ByaXZfa2V5PiA+KHJlc1tpXVsxXSksIHRtcCk7CiAgICAgICAgZXhl
Y3V0ZSgiSU5TRVJUIElOVE8gcHJpdmF0ZV9rZXlzIFZBTFVFUygnJXEnLCAnJXEnLCAnJXEn
KSIsIAogICAgICAgICAgICAgICAgdG1wKCkuY19zdHIoKSwgcmVzW2ldWzBdLmNfc3RyKCks
IHJlc1tpXVsxXS5jX3N0cigpKTsKICAgICAgICArK3ByaXZrZXlzOwogICAgICB9CiAgfQoK
ICBndWFyZC5jb21taXQoKTsKfQoKdm9pZCAKZGF0YWJhc2U6OmVuc3VyZV9vcGVuKCkKewog
IHNxbGl0ZSAqcyA9IHNxbCgpOwogIEkocyAhPSBOVUxMKTsKfQoKZGF0YWJhc2U6On5kYXRh
YmFzZSgpIAp7CiAgaWYgKF9fc3FsKQogICAgewogICAgICBzcWxpdGVfY2xvc2UoX19zcWwp
OwogICAgICBfX3NxbCA9IDA7CiAgICB9Cn0KCnN0YXRpYyB2b2lkIAphc3NlcnRfc3FsaXRl
X29rKGludCByZXMpCnsKICBzd2l0Y2ggKHJlcykKICAgIHsgICAgICAKICAgIGNhc2UgU1FM
SVRFX09LOiAKICAgICAgYnJlYWs7CgogICAgY2FzZSBTUUxJVEVfRVJST1I6CiAgICAgIHRo
cm93IG9vcHMoIlNRTCBlcnJvciBvciBtaXNzaW5nIGRhdGFiYXNlIik7CiAgICAgIGJyZWFr
OwoKICAgIGNhc2UgU1FMSVRFX0lOVEVSTkFMOgogICAgICB0aHJvdyBvb3BzKCJBbiBpbnRl
cm5hbCBsb2dpYyBlcnJvciBpbiBTUUxpdGUiKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBT
UUxJVEVfUEVSTToKICAgICAgdGhyb3cgb29wcygiQWNjZXNzIHBlcm1pc3Npb24gZGVuaWVk
Iik7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgU1FMSVRFX0FCT1JUOgogICAgICB0aHJvdyBv
b3BzKCJDYWxsYmFjayByb3V0aW5lIHJlcXVlc3RlZCBhbiBhYm9ydCIpOwogICAgICBicmVh
azsKCiAgICBjYXNlIFNRTElURV9CVVNZOgogICAgICB0aHJvdyBvb3BzKCJUaGUgZGF0YWJh
c2UgZmlsZSBpcyBsb2NrZWQiKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBTUUxJVEVfTE9D
S0VEOgogICAgICB0aHJvdyBvb3BzKCJBIHRhYmxlIGluIHRoZSBkYXRhYmFzZSBpcyBsb2Nr
ZWQiKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBTUUxJVEVfTk9NRU06CiAgICAgIHRocm93
IG9vcHMoIkEgbWFsbG9jKCkgZmFpbGVkIik7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgU1FM
SVRFX1JFQURPTkxZOgogICAgICB0aHJvdyBvb3BzKCJBdHRlbXB0IHRvIHdyaXRlIGEgcmVh
ZG9ubHkgZGF0YWJhc2UiKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBTUUxJVEVfSU5URVJS
VVBUOgogICAgICB0aHJvdyBvb3BzKCJPcGVyYXRpb24gdGVybWluYXRlZCBieSBzcWxpdGVf
aW50ZXJydXB0KCkiKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBTUUxJVEVfSU9FUlI6CiAg
ICAgIHRocm93IG9vcHMoIlNvbWUga2luZCBvZiBkaXNrIEkvTyBlcnJvciBvY2N1cnJlZCIp
OwogICAgICBicmVhazsKCiAgICBjYXNlIFNRTElURV9DT1JSVVBUOgogICAgICB0aHJvdyBv
b3BzKCJUaGUgZGF0YWJhc2UgZGlzayBpbWFnZSBpcyBtYWxmb3JtZWQiKTsKICAgICAgYnJl
YWs7CgogICAgY2FzZSBTUUxJVEVfTk9URk9VTkQ6CiAgICAgIHRocm93IG9vcHMoIihJbnRl
cm5hbCBPbmx5KSBUYWJsZSBvciByZWNvcmQgbm90IGZvdW5kIik7CiAgICAgIGJyZWFrOwoK
ICAgIGNhc2UgU1FMSVRFX0ZVTEw6CiAgICAgIHRocm93IG9vcHMoIkluc2VydGlvbiBmYWls
ZWQgYmVjYXVzZSBkYXRhYmFzZSBpcyBmdWxsIik7CiAgICAgIGJyZWFrOwoKICAgIGNhc2Ug
U1FMSVRFX0NBTlRPUEVOOgogICAgICB0aHJvdyBvb3BzKCJVbmFibGUgdG8gb3BlbiB0aGUg
ZGF0YWJhc2UgZmlsZSIpOwogICAgICBicmVhazsKCiAgICBjYXNlIFNRTElURV9QUk9UT0NP
TDoKICAgICAgdGhyb3cgb29wcygiZGF0YWJhc2UgbG9jayBwcm90b2NvbCBlcnJvciIpOwog
ICAgICBicmVhazsKCiAgICBjYXNlIFNRTElURV9FTVBUWToKICAgICAgdGhyb3cgb29wcygi
KEludGVybmFsIE9ubHkpIGRhdGFiYXNlIHRhYmxlIGlzIGVtcHR5Iik7CiAgICAgIGJyZWFr
OwoKICAgIGNhc2UgU1FMSVRFX1NDSEVNQToKICAgICAgdGhyb3cgb29wcygiVGhlIGRhdGFi
YXNlIHNjaGVtYSBjaGFuZ2VkIik7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgU1FMSVRFX1RP
T0JJRzoKICAgICAgdGhyb3cgb29wcygiVG9vIG11Y2ggZGF0YSBmb3Igb25lIHJvdyBvZiBh
IHRhYmxlIik7CiAgICAgIGJyZWFrOwoKICAgIGNhc2UgU1FMSVRFX0NPTlNUUkFJTlQ6CiAg
ICAgIHRocm93IG9vcHMoIkFib3J0IGR1ZSB0byBjb250cmFpbnQgdmlvbGF0aW9uIik7CiAg
ICAgIGJyZWFrOwoKICAgIGNhc2UgU1FMSVRFX01JU01BVENIOgogICAgICB0aHJvdyBvb3Bz
KCJEYXRhIHR5cGUgbWlzbWF0Y2giKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBTUUxJVEVf
TUlTVVNFOgogICAgICB0aHJvdyBvb3BzKCJMaWJyYXJ5IHVzZWQgaW5jb3JyZWN0bHkiKTsK
ICAgICAgYnJlYWs7CgogICAgZGVmYXVsdDoKICAgICAgdGhyb3cgb29wcyhzdHJpbmcoIlVu
a25vd24gREIgcmVzdWx0IGNvZGU6ICIpICsgbGV4aWNhbF9jYXN0PHN0cmluZz4ocmVzKSk7
CiAgICAgIGJyZWFrOwogICAgfQp9Cgp2b2lkIApkYXRhYmFzZTo6ZXhlY3V0ZShjaGFyIGNv
bnN0ICogcXVlcnksIC4uLikKewogIHZhX2xpc3QgYXA7CiAgaW50IHJlczsKICBjaGFyICog
ZXJybXNnID0gTlVMTDsKCiAgdmFfc3RhcnQoYXAsIHF1ZXJ5KTsKCiAgLy8gbG9nIGl0CiAg
Y2hhciAqIGZvcm1hdHRlZCA9IHNxbGl0ZV92bXByaW50ZihxdWVyeSwgYXApOwogIHN0cmlu
ZyBxcShmb3JtYXR0ZWQpOwogIGlmIChxcS5zaXplKCkgPiBjb25zdGFudHM6OmRiX2xvZ19s
aW5lX3N6KSAKICAgIHFxID0gcXEuc3Vic3RyKDAsIGNvbnN0YW50czo6ZGJfbG9nX2xpbmVf
c3opICsgc3RyaW5nKCIgLi4uIik7CiAgTChGKCJkYi5leGVjdXRlKFwiJXNcIilcbiIpICUg
cXEpOwogIHNxbGl0ZV9mcmVlbWVtKGZvcm1hdHRlZCk7CgogIHZhX2VuZChhcCk7CiAgdmFf
c3RhcnQoYXAsIHF1ZXJ5KTsKCiAgLy8gZG8gaXQKICByZXMgPSBzcWxpdGVfZXhlY192cHJp
bnRmKHNxbCgpLCBxdWVyeSwgTlVMTCwgTlVMTCwgJmVycm1zZywgYXApOwoKICB2YV9lbmQo
YXApOwoKICBpZiAoZXJybXNnKQogICAgdGhyb3cgb29wcyhzdHJpbmcoInNxbGl0ZSBleGVj
IGVycm9yICIpICsgZXJybXNnKTsKCiAgYXNzZXJ0X3NxbGl0ZV9vayhyZXMpOwoKfQoKdm9p
ZCAKZGF0YWJhc2U6OmZldGNoKHJlc3VsdHMgJiByZXMsIAogICAgICAgICAgICAgICAgaW50
IGNvbnN0IHdhbnRfY29scywgCiAgICAgICAgICAgICAgICBpbnQgY29uc3Qgd2FudF9yb3dz
LCAKICAgICAgICAgICAgICAgIGNoYXIgY29uc3QgKiBxdWVyeSwgLi4uKQp7CiAgY2hhciAq
KiByZXN1bHQgPSBOVUxMOwogIGludCBucm93OwogIGludCBuY29sOwogIGNoYXIgKiBlcnJt
c2cgPSBOVUxMOwogIGludCByZXNjb2RlOwoKICB2YV9saXN0IGFwOwogIHJlcy5jbGVhcigp
OwogIHJlcy5yZXNpemUoMCk7CiAgdmFfc3RhcnQoYXAsIHF1ZXJ5KTsKCiAgLy8gbG9nIGl0
CiAgY2hhciAqIGZvcm1hdHRlZCA9IHNxbGl0ZV92bXByaW50ZihxdWVyeSwgYXApOwogIHN0
cmluZyBxcShmb3JtYXR0ZWQpOwogIGlmIChxcS5zaXplKCkgPiBjb25zdGFudHM6OmxvZ19s
aW5lX3N6KSAKICAgIHFxID0gcXEuc3Vic3RyKDAsIGNvbnN0YW50czo6bG9nX2xpbmVfc3op
ICsgc3RyaW5nKCIgLi4uIik7CiAgTChGKCJkYi5mZXRjaChcIiVzXCIpXG4iKSAlIHFxKTsK
ICBzcWxpdGVfZnJlZW1lbShmb3JtYXR0ZWQpOwoKICB2YV9lbmQoYXApOwogIHZhX3N0YXJ0
KGFwLCBxdWVyeSk7CgogIC8vIGRvIGl0CiAgcmVzY29kZSA9IHNxbGl0ZV9nZXRfdGFibGVf
dnByaW50ZihzcWwoKSwgcXVlcnksICZyZXN1bHQsICZucm93LCAmbmNvbCwgJmVycm1zZywg
YXApOwoKICB2YV9lbmQoYXApOwoKICBjbGVhbnVwX3B0cjxjaGFyICoqLCB2b2lkPiAKICAg
IHJlc3VsdF9ndWFyZChyZXN1bHQsICZzcWxpdGVfZnJlZV90YWJsZSk7CgogIHN0cmluZyBj
dHggPSBzdHJpbmcoImRiIHF1ZXJ5IFsiKSArIHN0cmluZyhxdWVyeSkgKyAiXTogIjsKCiAg
aWYgKGVycm1zZykKICAgIHRocm93IG9vcHMoY3R4ICsgc3RyaW5nKCJzcWxpdGUgZXJyb3Ig
IikgKyBlcnJtc2cpOwogIGFzc2VydF9zcWxpdGVfb2socmVzY29kZSk7CgogIGlmICh3YW50
X2NvbHMgPT0gMCAmJiBuY29sID09IDApIHJldHVybjsKICBpZiAod2FudF9yb3dzID09IDAg
JiYgbnJvdyA9PSAwKSByZXR1cm47CiAgaWYgKHdhbnRfY29scyA9PSBhbnlfcm93cyAmJiBu
Y29sID09IDApIHJldHVybjsKICBpZiAod2FudF9yb3dzID09IGFueV9yb3dzICYmIG5yb3cg
PT0gMCkgcmV0dXJuOwoKICBpZiAod2FudF9jb2xzICE9IGFueV9jb2xzICYmCiAgICAgIG5j
b2wgIT0gd2FudF9jb2xzKQogICAgdGhyb3cgb29wcygoRigiJXMgd2FudGVkICVkIGNvbHVt
bnMsIGdvdCAlcyIpCiAgICAgICAgICAgICAgICAlIGN0eCAlIHdhbnRfY29scyAlIG5jb2wp
LnN0cigpKTsKCiAgaWYgKHdhbnRfcm93cyAhPSBhbnlfcm93cyAmJgogICAgICBucm93ICE9
IHdhbnRfcm93cykKICAgIHRocm93IG9vcHMoKEYoIiVzIHdhbnRlZCAlZCByb3dzLCBnb3Qg
JXMiKQogICAgICAgICAgICAgICAgJSBjdHggJSB3YW50X3Jvd3MgJSBucm93KS5zdHIoKSk7
CgogIGlmICghcmVzdWx0KQogICAgdGhyb3cgb29wcyhjdHggKyAibnVsbCByZXN1bHQgc2V0
Iik7CgogIGZvciAoaW50IGkgPSAwOyBpIDwgbmNvbDsgKytpKSAKICAgIGlmICghcmVzdWx0
W2ldKQogICAgICB0aHJvdyBvb3BzKGN0eCArICJudWxsIGNvbHVtbiBuYW1lIik7CgogIGZv
ciAoaW50IHJvdyA9IDA7IHJvdyA8IG5yb3c7ICsrcm93KSAKICAgIHsKICAgICAgdmVjdG9y
PHN0cmluZz4gcm93dmVjOwogICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBuY29sOyAr
K2NvbCkKICAgICAgICB7CiAgICAgICAgICBpbnQgaSA9ICgoMSArIHJvdykgKiBuY29sKSAr
IGNvbDsKICAgICAgICAgIGlmICghcmVzdWx0W2ldKQogICAgICAgICAgICB0aHJvdyBvb3Bz
KGN0eCArICJudWxsIHJlc3VsdCB2YWx1ZSIpOwogICAgICAgICAgZWxzZQogICAgICAgICAg
ICByb3d2ZWMucHVzaF9iYWNrKHJlc3VsdFtpXSk7CiAgICAgICAgfQogICAgICByZXMucHVz
aF9iYWNrKHJvd3ZlYyk7CiAgICB9Cn0KCi8vIGdlbmVyYWwgYXBwbGljYXRpb24tbGV2ZWwg
bG9naWMKCnZvaWQgCmRhdGFiYXNlOjpzZXRfZmlsZW5hbWUoZnM6OnBhdGggY29uc3QgJiBm
aWxlKQp7CiAgaWYgKF9fc3FsKQogICAgewogICAgICB0aHJvdyBvb3BzKCJjYW5ub3QgY2hh
bmdlIGZpbGVuYW1lIHRvICIgKyBmaWxlLnN0cmluZygpICsgIiB3aGlsZSBkYiBpcyBvcGVu
Iik7CiAgICB9CiAgZmlsZW5hbWUgPSBmaWxlOwp9Cgp2b2lkIApkYXRhYmFzZTo6YmVnaW5f
dHJhbnNhY3Rpb24oKSAKewogIGlmICh0cmFuc2FjdGlvbl9sZXZlbCA9PSAwKQogICAgICBl
eGVjdXRlKCJCRUdJTiIpOwogIHRyYW5zYWN0aW9uX2xldmVsKys7Cn0KCnZvaWQgCmRhdGFi
YXNlOjpjb21taXRfdHJhbnNhY3Rpb24oKQp7CiAgaWYgKHRyYW5zYWN0aW9uX2xldmVsID09
IDEpCiAgICBleGVjdXRlKCJDT01NSVQiKTsKICB0cmFuc2FjdGlvbl9sZXZlbC0tOwp9Cgp2
b2lkIApkYXRhYmFzZTo6cm9sbGJhY2tfdHJhbnNhY3Rpb24oKQp7CiAgaWYgKHRyYW5zYWN0
aW9uX2xldmVsID09IDEpCiAgICBleGVjdXRlKCJST0xMQkFDSyIpOwogIHRyYW5zYWN0aW9u
X2xldmVsLS07Cn0KCgpib29sIApkYXRhYmFzZTo6ZXhpc3RzKGhleGVuYzxpZD4gY29uc3Qg
JiBpZGVudCwKICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBjb25zdCAmIHRhYmxlKQp7
CiAgcmVzdWx0cyByZXM7CiAgZmV0Y2gocmVzLCBvbmVfY29sLCBhbnlfcm93cywgCiAgICAg
ICAgIlNFTEVDVCBpZCBGUk9NICclcScgV0hFUkUgaWQgPSAnJXEnIiwKICAgICAgICB0YWJs
ZS5jX3N0cigpLCBpZGVudCgpLmNfc3RyKCkpOwogIEkoKHJlcy5zaXplKCkgPT0gMSkgfHwg
KHJlcy5zaXplKCkgPT0gMCkpOwogIHJldHVybiByZXMuc2l6ZSgpID09IDE7Cn0KCgpib29s
IApkYXRhYmFzZTo6ZGVsdGFfZXhpc3RzKGhleGVuYzxpZD4gY29uc3QgJiBpZGVudCwKICAg
ICAgICAgICAgICAgICAgICAgICBzdHJpbmcgY29uc3QgJiB0YWJsZSkKewogIHJlc3VsdHMg
cmVzOwogIGZldGNoKHJlcywgb25lX2NvbCwgYW55X3Jvd3MsIAogICAgICAgICJTRUxFQ1Qg
aWQgRlJPTSAnJXEnIFdIRVJFIGlkID0gJyVxJyIsCiAgICAgICAgdGFibGUuY19zdHIoKSwg
aWRlbnQoKS5jX3N0cigpKTsKICByZXR1cm4gcmVzLnNpemUoKSA+IDA7Cn0KCmJvb2wgCmRh
dGFiYXNlOjpkZWx0YV9leGlzdHMoaGV4ZW5jPGlkPiBjb25zdCAmIGlkZW50LAogICAgICAg
ICAgICAgICAgICAgICAgIGhleGVuYzxpZD4gY29uc3QgJiBiYXNlLAogICAgICAgICAgICAg
ICAgICAgICAgIHN0cmluZyBjb25zdCAmIHRhYmxlKQp7CiAgcmVzdWx0cyByZXM7CiAgZmV0
Y2gocmVzLCBvbmVfY29sLCBhbnlfcm93cywgCiAgICAgICAgIlNFTEVDVCBpZCBGUk9NICcl
cScgV0hFUkUgaWQgPSAnJXEnIEFORCBiYXNlID0gJyVxJyIsCiAgICAgICAgdGFibGUuY19z
dHIoKSwgaWRlbnQoKS5jX3N0cigpLCBiYXNlKCkuY19zdHIoKSk7CiAgSSgocmVzLnNpemUo
KSA9PSAxKSB8fCAocmVzLnNpemUoKSA9PSAwKSk7CiAgcmV0dXJuIHJlcy5zaXplKCkgPT0g
MTsKfQoKaW50IApkYXRhYmFzZTo6Y291bnQoc3RyaW5nIGNvbnN0ICYgdGFibGUpCnsKICBy
ZXN1bHRzIHJlczsKICBmZXRjaChyZXMsIG9uZV9jb2wsIG9uZV9yb3csIAogICAgICAgICJT
RUxFQ1QgQ09VTlQoKikgRlJPTSAnJXEnIiwgCiAgICAgICAgdGFibGUuY19zdHIoKSk7CiAg
cmV0dXJuIGxleGljYWxfY2FzdDxpbnQ+KHJlc1swXVswXSk7ICAKfQoKdm9pZCAKZGF0YWJh
c2U6OmdldChoZXhlbmM8aWQ+IGNvbnN0ICYgaWRlbnQsCiAgICAgICAgICAgICAgYmFzZTY0
PCBnemlwPGRhdGE+ID4gJiBkYXQsCiAgICAgICAgICAgICAgc3RyaW5nIGNvbnN0ICYgdGFi
bGUpCnsKICByZXN1bHRzIHJlczsKICBmZXRjaChyZXMsIG9uZV9jb2wsIG9uZV9yb3csCiAg
ICAgICAgIlNFTEVDVCBkYXRhIEZST00gJyVxJyBXSEVSRSBpZCA9ICclcSciLCAKICAgICAg
ICB0YWJsZS5jX3N0cigpLCBpZGVudCgpLmNfc3RyKCkpOwoKICAvLyBjb25zaXN0ZW5jeSBj
aGVjawogIGJhc2U2NDxnemlwPGRhdGE+ID4gcmRhdGEocmVzWzBdWzBdKTsKICBoZXhlbmM8
aWQ+IHRpZDsKICBjYWxjdWxhdGVfaWRlbnQocmRhdGEsIHRpZCk7CiAgSSh0aWQgPT0gaWRl
bnQpOwoKICBkYXQgPSByZGF0YTsKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9kZWx0YShoZXhl
bmM8aWQ+IGNvbnN0ICYgaWRlbnQsCiAgICAgICAgICAgICAgICAgICAgaGV4ZW5jPGlkPiBj
b25zdCAmIGJhc2UsCiAgICAgICAgICAgICAgICAgICAgYmFzZTY0PCBnemlwPGRlbHRhPiA+
ICYgZGVsLAogICAgICAgICAgICAgICAgICAgIHN0cmluZyBjb25zdCAmIHRhYmxlKQp7CiAg
SShpZGVudCgpICE9ICIiKTsKICBJKGJhc2UoKSAhPSAiIik7CiAgcmVzdWx0cyByZXM7CiAg
ZmV0Y2gocmVzLCBvbmVfY29sLCBvbmVfcm93LAogICAgICAgICJTRUxFQ1QgZGVsdGEgRlJP
TSAnJXEnIFdIRVJFIGlkID0gJyVxJyBBTkQgYmFzZSA9ICclcSciLCAKICAgICAgICB0YWJs
ZS5jX3N0cigpLCBpZGVudCgpLmNfc3RyKCksIGJhc2UoKS5jX3N0cigpKTsKICBkZWwgPSBy
ZXNbMF1bMF07Cn0KCnZvaWQgCmRhdGFiYXNlOjpwdXQoaGV4ZW5jPGlkPiBjb25zdCAmIGlk
ZW50LAogICAgICAgICAgICAgIGJhc2U2NDwgZ3ppcDxkYXRhPiA+IGNvbnN0ICYgZGF0LAog
ICAgICAgICAgICAgIHN0cmluZyBjb25zdCAmIHRhYmxlKQp7CiAgLy8gY29uc2lzdGVuY3kg
Y2hlY2sKICBJKGlkZW50KCkgIT0gIiIpOwogIGhleGVuYzxpZD4gdGlkOwogIGNhbGN1bGF0
ZV9pZGVudChkYXQsIHRpZCk7CiAgSSh0aWQgPT0gaWRlbnQpOwogIAogIGV4ZWN1dGUoIklO
U0VSVCBJTlRPICclcScgVkFMVUVTKCclcScsICclcScpIiwgCiAgICAgICAgICB0YWJsZS5j
X3N0cigpLCBpZGVudCgpLmNfc3RyKCksIGRhdCgpLmNfc3RyKCkpOwp9CgoKdm9pZCAKZGF0
YWJhc2U6OnB1dF9kZWx0YShoZXhlbmM8aWQ+IGNvbnN0ICYgaWRlbnQsCiAgICAgICAgICAg
ICAgICAgICAgaGV4ZW5jPGlkPiBjb25zdCAmIGJhc2UsCiAgICAgICAgICAgICAgICAgICAg
YmFzZTY0PGd6aXA8ZGVsdGE+ID4gY29uc3QgJiBkZWwsCiAgICAgICAgICAgICAgICAgICAg
c3RyaW5nIGNvbnN0ICYgdGFibGUpCnsKICAvLyBuYjogZGVsdGEgc2NoZW1hIGlzIChpZCwg
YmFzZSwgZGVsdGEpCiAgSShpZGVudCgpICE9ICIiKTsKICBJKGJhc2UoKSAhPSAiIik7CiAg
ZXhlY3V0ZSgiSU5TRVJUIElOVE8gJyVxJyBWQUxVRVMoJyVxJywgJyVxJywgJyVxJykiLCAK
ICAgICAgICAgIHRhYmxlLmNfc3RyKCksIAogICAgICAgICAgaWRlbnQoKS5jX3N0cigpLCBi
YXNlKCkuY19zdHIoKSwgZGVsKCkuY19zdHIoKSk7Cn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRf
dmVyc2lvbihoZXhlbmM8aWQ+IGNvbnN0ICYgaWRlbnQsCiAgICAgICAgICAgICAgICAgICAg
ICBiYXNlNjQ8IGd6aXA8ZGF0YT4gPiAmIGRhdCwKICAgICAgICAgICAgICAgICAgICAgIHN0
cmluZyBjb25zdCAmIGRhdGFfdGFibGUsCiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcg
Y29uc3QgJiBkZWx0YV90YWJsZSkKewogIEkoaWRlbnQoKSAhPSAiIik7CiAgaWYgKGV4aXN0
cyhpZGVudCwgZGF0YV90YWJsZSkpCiAgICB7CiAgICAgIC8vIGVhc3kgcGF0aAogICAgICBn
ZXQoaWRlbnQsIGRhdCwgZGF0YV90YWJsZSk7CiAgICB9CiAgZWxzZQogICAgewogICAgICAv
LyB0cmlja3kgcGF0aAoKICAgICAgLy8gd2Ugc3RhcnQgZnJvbSB0aGUgZmlsZSB3ZSB3YW50
IHRvIHJlY29uc3RydWN0IGFuZCB3b3JrICpmb3J3YXJkcyoKICAgICAgLy8gdGhyb3VnaCB0
aGUgZGF0YWJhc2UsIHVudGlsIHdlIGdldCB0byBhIGZ1bGwgZGF0YSBvYmplY3QuIHdlIHRo
ZW4KICAgICAgLy8gdHJhY2UgYmFjayB0aHJvdWdoIHRoZSBsaXN0IG9mIGVkZ2VzIHdlIGZv
bGxvd2VkIHRvIGdldCB0byB0aGUgZGF0YQogICAgICAvLyBvYmplY3QsIGFwcGx5aW5nIHJl
dmVyc2UgZGVsdGFzLgogICAgICAvLwogICAgICAvLyB0aGUgZWZmZWN0IG9mIHRoaXMgYWxn
b3JpdGhtIGlzIGJyZWFkdGgtZmlyc3Qgc2VhcmNoLCBiYWNrd2FyZHMKICAgICAgLy8gdGhy
b3VnaCB0aGUgc3RvcmFnZSBncmFwaCwgdG8gZGlzY292ZXIgYSBmb3J3YXJkcyBzaG9ydGVz
dCBwYXRoLCBhbmQKICAgICAgLy8gdGhlbiBmb2xsb3dpbmcgdGhhdCBzaG9ydGVzdCBwYXRo
IHdpdGggZGVsdGEgYXBwbGljYXRpb24uCiAgICAgIC8vCiAgICAgIC8vIHdlIHVzZWQgdG8g
ZG8gdGhpcyB3aXRoIHRoZSBib29zdCBncmFwaCBsaWJyYXJ5LCBidXQgaXQgaW52b3ZsZWQK
ICAgICAgLy8gbG9hZGluZyB0b28gbXVjaCBvZiB0aGUgc3RvcmFnZSBncmFwaCBpbnRvIG1l
bW9yeSBhdCBhbnkgbW9tZW50LiB0aGlzCiAgICAgIC8vIGltcGVyYXRpdmUgdmVyc2lvbiBv
bmx5IGxvYWRzIHRoZSBkZXNjZW5kZW50cyBvZiB0aGUgcmVjb25zdHJ1Y3Rpb24KICAgICAg
Ly8gbm9kZSwgc28gaXQgbXVjaCBjaGVhcGVyIGluIHRlcm1zIG9mIG1lbW9yeS4KICAgICAg
Ly8KICAgICAgLy8gd2UgYWxzbyBtYWludGFpbiBhIGN5Y2xlLWRldGVjdGluZyBzZXQsIGp1
c3QgdG8gYmUgc2FmZQogICAgICAKICAgICAgTChGKCJyZWNvbnN0cnVjdGluZyAlcyBpbiAl
c1xuIikgJSBpZGVudCAlIGRlbHRhX3RhYmxlKTsKICAgICAgSShkZWx0YV9leGlzdHMoaWRl
bnQsIGRlbHRhX3RhYmxlKSk7CiAgICAgIAogICAgICAvLyBuYjogYW4gZWRnZSBtYXAgZ29l
cyBpbiB0aGUgZGlyZWN0aW9uIG9mIHRoZQogICAgICAvLyBkZWx0YSwgKm5vdCogdGhlIGRp
cmVjdGlvbiB3ZSBkaXNjb3ZlciB0aGluZ3MgaW4sCiAgICAgIC8vIGkuZS4gZWFjaCBtYXAg
aXMgb2YgdGhlIGZvcm0gW25ld2lkXSAtPiBbb2xkaWRdCgogICAgICB0eXBlZGVmIG1hcDwg
aGV4ZW5jPGlkPiwgaGV4ZW5jPGlkPiA+IGVkZ2VtYXA7CiAgICAgIGxpc3Q8IHNoYXJlZF9w
dHI8ZWRnZW1hcD4gPiBwYXRoczsKCiAgICAgIHNldDwgaGV4ZW5jPGlkPiA+IGZyb250aWVy
LCBjeWNsZXM7CiAgICAgIGZyb250aWVyLmluc2VydChpZGVudCk7CgogICAgICBib29sIGZv
dW5kX3Jvb3QgPSBmYWxzZTsKICAgICAgaGV4ZW5jPGlkPiByb290KCIiKTsKCiAgICAgIHdo
aWxlICghIGZvdW5kX3Jvb3QpCiAgICAgICAgewogICAgICAgICAgc2V0PCBoZXhlbmM8aWQ+
ID4gbmV4dF9mcm9udGllcjsKICAgICAgICAgIHNoYXJlZF9wdHI8ZWRnZW1hcD4gZnJvbnRp
ZXJfbWFwKG5ldyBlZGdlbWFwKCkpOwoKICAgICAgICAgIEkoIWZyb250aWVyLmVtcHR5KCkp
OwoKICAgICAgICAgIGZvciAoc2V0PCBoZXhlbmM8aWQ+ID46OmNvbnN0X2l0ZXJhdG9yIGkg
PSBmcm9udGllci5iZWdpbigpOwogICAgICAgICAgICAgICBpICE9IGZyb250aWVyLmVuZCgp
OyArK2kpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBpZiAoZXhpc3RzKCppLCBkYXRh
X3RhYmxlKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgcm9vdCA9ICpp
OwogICAgICAgICAgICAgICAgICBmb3VuZF9yb290ID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICBjeWNsZXMuaW5zZXJ0KCppKTsKICAgICAg
ICAgICAgICAgICAgcmVzdWx0cyByZXM7CiAgICAgICAgICAgICAgICAgIGZldGNoKHJlcywg
b25lX2NvbCwgYW55X3Jvd3MsICJTRUxFQ1QgYmFzZSBmcm9tICclcScgV0hFUkUgaWQgPSAn
JXEnIiwKICAgICAgICAgICAgICAgICAgICAgICAgZGVsdGFfdGFibGUuY19zdHIoKSwgKCpp
KSgpLmNfc3RyKCkpOwogICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBrID0gMDsgayA8
IHJlcy5zaXplKCk7ICsraykKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgICBoZXhlbmM8aWQ+IGNvbnN0IG54dChyZXNba11bMF0pOwoKICAgICAgICAgICAg
ICAgICAgICAgIGlmIChjeWNsZXMuZmluZChueHQpICE9IGN5Y2xlcy5lbmQoKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgdGhyb3cgb29wcygiY3ljbGUgaW4gdGFibGUgJyIgKyBkZWx0
YV90YWJsZSArICInLCBhdCBub2RlICIgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKyAoKmkpKCkgKyAiIDwtICIgKyBueHQoKSk7CgogICAgICAgICAgICAgICAgICAg
ICAgbmV4dF9mcm9udGllci5pbnNlcnQobnh0KTsKCiAgICAgICAgICAgICAgICAgICAgICBp
ZiAoZnJvbnRpZXJfbWFwLT5maW5kKG54dCkgPT0gZnJvbnRpZXJfbWFwLT5lbmQoKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgIEwoRigi
aW5zZXJ0aW5nIGVkZ2U6ICVzIDwtICVzXG4iKSAlICgqaSkgJSBueHQpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgIGZyb250aWVyX21hcC0+aW5zZXJ0KG1ha2VfcGFpcihueHQsICpp
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICAgICAgICAgTChGKCJza2lwcGluZyBtZXJnZSBlZGdlICVz
IDwtICVzXG4iKSAlICgqaSkgJSBueHQpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgaWYgKCFmb3VuZF9yb290KQog
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgZnJvbnRpZXIgPSBuZXh0X2Zyb250aWVyOwog
ICAgICAgICAgICAgIHBhdGhzLnB1c2hfZnJvbnQoZnJvbnRpZXJfbWFwKTsKICAgICAgICAg
ICAgfQogICAgICAgIH0KCiAgICAgIC8vIHBhdGggYnVpbHQsIG5vdyBhbGwgd2UgbmVlZCB0
byBkbyBpcyBmb2xsb3cgaXQgYmFjawoKICAgICAgSShmb3VuZF9yb290KTsKICAgICAgSShy
b290KCkgIT0gIiIpOwogICAgICBiYXNlNjQ8IGd6aXA8ZGF0YT4gPiBiZWdpbl9wYWNrZWQ7
CiAgICAgIGRhdGEgYmVnaW47ICAgICAgCiAgICAgIGdldChyb290LCBiZWdpbl9wYWNrZWQs
IGRhdGFfdGFibGUpOwogICAgICB1bnBhY2soYmVnaW5fcGFja2VkLCBiZWdpbik7CiAgICAg
IGhleGVuYzxpZD4gY3VyciA9IHJvb3Q7CgogICAgICBib29zdDo6c2hhcmVkX3B0cjxkZWx0
YV9hcHBsaWNhdG9yPiBhcHAgPSBuZXdfcGllY2V3aXNlX2FwcGxpY2F0b3IoKTsKICAgICAg
YXBwLT5iZWdpbihiZWdpbigpKTsKICAgICAgCiAgICAgIGZvciAobGlzdDwgc2hhcmVkX3B0
cjxlZGdlbWFwPiA+Ojpjb25zdF9pdGVyYXRvciBwID0gcGF0aHMuYmVnaW4oKTsKICAgICAg
ICAgICBwICE9IHBhdGhzLmVuZCgpOyArK3ApCiAgICAgICAgewogICAgICAgICAgc2hhcmVk
X3B0cjxlZGdlbWFwPiBpID0gKnA7CiAgICAgICAgICBJKGktPmZpbmQoY3VycikgIT0gaS0+
ZW5kKCkpOwogICAgICAgICAgaGV4ZW5jPGlkPiBjb25zdCBueHQgPSBpLT5maW5kKGN1cnIp
LT5zZWNvbmQ7CgogICAgICAgICAgTChGKCJmb2xsb3dpbmcgZGVsdGEgJXMgLT4gJXNcbiIp
ICUgY3VyciAlIG54dCk7CiAgICAgICAgICBiYXNlNjQ8IGd6aXA8ZGVsdGE+ID4gZGVsX3Bh
Y2tlZDsKICAgICAgICAgIGdldF9kZWx0YShueHQsIGN1cnIsIGRlbF9wYWNrZWQsIGRlbHRh
X3RhYmxlKTsKICAgICAgICAgIGRlbHRhIGRlbDsKICAgICAgICAgIHVucGFjayhkZWxfcGFj
a2VkLCBkZWwpOwogICAgICAgICAgYXBwbHlfZGVsdGEgKGFwcCwgZGVsKCkpOwogICAgICAg
ICAgYXBwLT5uZXh0KCk7CiAgICAgICAgICBjdXJyID0gbnh0OwogICAgICAgIH0KCiAgICAg
IHN0cmluZyB0bXA7CiAgICAgIGFwcC0+ZmluaXNoKHRtcCk7CiAgICAgIGRhdGEgZW5kKHRt
cCk7CgogICAgICBoZXhlbmM8aWQ+IGZpbmFsOwogICAgICBjYWxjdWxhdGVfaWRlbnQoZW5k
LCBmaW5hbCk7CiAgICAgIEkoZmluYWwgPT0gaWRlbnQpOwogICAgICBwYWNrKGVuZCwgZGF0
KTsKICAgIH0KfQoKCnZvaWQgCmRhdGFiYXNlOjpkcm9wKGhleGVuYzxpZD4gY29uc3QgJiBp
ZGVudCwgCiAgICAgICAgICAgICAgIHN0cmluZyBjb25zdCAmIHRhYmxlKQp7CiAgZXhlY3V0
ZSgiREVMRVRFIEZST00gJyVxJyBXSEVSRSBpZCA9ICclcSciLCAgCiAgICAgICAgICB0YWJs
ZS5jX3N0cigpLAogICAgICAgICAgaWRlbnQoKS5jX3N0cigpKTsKfQoKdm9pZCAKZGF0YWJh
c2U6OnB1dF92ZXJzaW9uKGhleGVuYzxpZD4gY29uc3QgJiBvbGRfaWQsCiAgICAgICAgICAg
ICAgICAgICAgICBoZXhlbmM8aWQ+IGNvbnN0ICYgbmV3X2lkLAogICAgICAgICAgICAgICAg
ICAgICAgYmFzZTY0PCBnemlwPGRlbHRhPiA+IGNvbnN0ICYgZGVsLAogICAgICAgICAgICAg
ICAgICAgICAgc3RyaW5nIGNvbnN0ICYgZGF0YV90YWJsZSwKICAgICAgICAgICAgICAgICAg
ICAgIHN0cmluZyBjb25zdCAmIGRlbHRhX3RhYmxlKQp7CgogIGJhc2U2NDwgZ3ppcDxkYXRh
PiA+IG9sZF9kYXRhLCBuZXdfZGF0YTsKICBiYXNlNjQ8IGd6aXA8ZGVsdGE+ID4gcmV2ZXJz
ZV9kZWx0YTsKICAKICBnZXRfdmVyc2lvbihvbGRfaWQsIG9sZF9kYXRhLCBkYXRhX3RhYmxl
LCBkZWx0YV90YWJsZSk7CiAgcGF0Y2gob2xkX2RhdGEsIGRlbCwgbmV3X2RhdGEpOwogIGRp
ZmYobmV3X2RhdGEsIG9sZF9kYXRhLCByZXZlcnNlX2RlbHRhKTsKICAgICAgCiAgdHJhbnNh
Y3Rpb25fZ3VhcmQgZ3VhcmQoKnRoaXMpOwogIGlmIChleGlzdHMob2xkX2lkLCBkYXRhX3Rh
YmxlKSkKICAgIHsKICAgICAgLy8gZGVzY2VuZGVudCBvZiBhIGhlYWQgdmVyc2lvbiByZXBs
YWNlcyB0aGUgaGVhZCwgdGhlcmVmb3JlIG9sZCBoZWFkCiAgICAgIC8vIG11c3QgYmUgZGlz
cG9zZWQgb2YKICAgICAgZHJvcChvbGRfaWQsIGRhdGFfdGFibGUpOwogICAgfQogIHB1dChu
ZXdfaWQsIG5ld19kYXRhLCBkYXRhX3RhYmxlKTsKICBwdXRfZGVsdGEob2xkX2lkLCBuZXdf
aWQsIHJldmVyc2VfZGVsdGEsIGRlbHRhX3RhYmxlKTsKICBndWFyZC5jb21taXQoKTsKfQoK
dm9pZCAKZGF0YWJhc2U6OnB1dF9yZXZlcnNlX3ZlcnNpb24oaGV4ZW5jPGlkPiBjb25zdCAm
IG5ld19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGV4ZW5jPGlkPiBjb25z
dCAmIG9sZF9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0PCBnemlw
PGRlbHRhPiA+IGNvbnN0ICYgcmV2ZXJzZV9kZWwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cmluZyBjb25zdCAmIGRhdGFfdGFibGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cmluZyBjb25zdCAmIGRlbHRhX3RhYmxlKQp7CiAgYmFzZTY0PCBnemlw
PGRhdGE+ID4gb2xkX2RhdGEsIG5ld19kYXRhOwogIAogIGdldF92ZXJzaW9uKG5ld19pZCwg
bmV3X2RhdGEsIGRhdGFfdGFibGUsIGRlbHRhX3RhYmxlKTsKICBwYXRjaChuZXdfZGF0YSwg
cmV2ZXJzZV9kZWwsIG9sZF9kYXRhKTsKICBoZXhlbmM8aWQ+IGNoZWNrOwogIGNhbGN1bGF0
ZV9pZGVudChvbGRfZGF0YSwgY2hlY2spOwogIEkob2xkX2lkID09IGNoZWNrKTsKICAgICAg
CiAgdHJhbnNhY3Rpb25fZ3VhcmQgZ3VhcmQoKnRoaXMpOwogIHB1dF9kZWx0YShvbGRfaWQs
IG5ld19pZCwgcmV2ZXJzZV9kZWwsIGRlbHRhX3RhYmxlKTsKICBndWFyZC5jb21taXQoKTsK
fQoKCgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLy8gLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC0tCi8vIC0tICAgICAgICAgICAgICBwdWJsaWMgaW50
ZXJmYWNlIGZvbGxvd3MgICAgICAgICAgICAgICAgICAtLQovLyAtLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Cgpib29sIApkYXRhYmFzZTo6ZmlsZV92ZXJzaW9uX2V4aXN0cyhmaWxlX2lkIGNvbnN0ICYg
aWQpCnsKICByZXR1cm4gZGVsdGFfZXhpc3RzKGlkLmlubmVyKCksICJmaWxlX2RlbHRhcyIp
IAogICAgfHwgZXhpc3RzKGlkLmlubmVyKCksICJmaWxlcyIpOwp9Cgpib29sIApkYXRhYmFz
ZTo6bWFuaWZlc3RfdmVyc2lvbl9leGlzdHMobWFuaWZlc3RfaWQgY29uc3QgJiBpZCkKewog
IHJldHVybiBkZWx0YV9leGlzdHMoaWQuaW5uZXIoKSwgIm1hbmlmZXN0X2RlbHRhcyIpIAog
ICAgfHwgZXhpc3RzKGlkLmlubmVyKCksICJtYW5pZmVzdHMiKTsKfQoKYm9vbCAKZGF0YWJh
c2U6OnJldmlzaW9uX2V4aXN0cyhyZXZpc2lvbl9pZCBjb25zdCAmIGlkKQp7CiAgcmV0dXJu
IGV4aXN0cyhpZC5pbm5lcigpLCAicmV2aXNpb25zIik7Cn0KCgp2b2lkIApkYXRhYmFzZTo6
Z2V0X2ZpbGVfdmVyc2lvbihmaWxlX2lkIGNvbnN0ICYgaWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZpbGVfZGF0YSAmIGRhdCkKewogIGJhc2U2NDwgZ3ppcDxkYXRhPiA+IHRt
cDsKICBnZXRfdmVyc2lvbihpZC5pbm5lcigpLCB0bXAsICJmaWxlcyIsICJmaWxlX2RlbHRh
cyIpOwogIGRhdCA9IHRtcDsKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9tYW5pZmVzdF92ZXJz
aW9uKG1hbmlmZXN0X2lkIGNvbnN0ICYgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtYW5pZmVzdF9kYXRhICYgZGF0KQp7CiAgYmFzZTY0PCBnemlwPGRhdGE+ID4gdG1w
OwogIGdldF92ZXJzaW9uKGlkLmlubmVyKCksIHRtcCwgIm1hbmlmZXN0cyIsICJtYW5pZmVz
dF9kZWx0YXMiKTsKICBkYXQgPSB0bXA7Cn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRfbWFuaWZl
c3QobWFuaWZlc3RfaWQgY29uc3QgJiBpZCwKICAgICAgICAgICAgICAgICAgICAgICBtYW5p
ZmVzdF9tYXAgJiBtbSkKewogIG1hbmlmZXN0X2RhdGEgbWRhdDsKICBnZXRfbWFuaWZlc3Rf
dmVyc2lvbihpZCwgbWRhdCk7CiAgcmVhZF9tYW5pZmVzdF9tYXAobWRhdCwgbW0pOwp9CgoK
dm9pZCAKZGF0YWJhc2U6OnB1dF9maWxlKGZpbGVfaWQgY29uc3QgJiBpZCwKICAgICAgICAg
ICAgICAgICAgIGZpbGVfZGF0YSBjb25zdCAmIGRhdCkKewogIHB1dChpZC5pbm5lcigpLCBk
YXQuaW5uZXIoKSwgImZpbGVzIik7Cn0KCnZvaWQgCmRhdGFiYXNlOjpwdXRfZmlsZV92ZXJz
aW9uKGZpbGVfaWQgY29uc3QgJiBvbGRfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZpbGVfaWQgY29uc3QgJiBuZXdfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZp
bGVfZGVsdGEgY29uc3QgJiBkZWwpCnsKICBwdXRfdmVyc2lvbihvbGRfaWQuaW5uZXIoKSwg
bmV3X2lkLmlubmVyKCksIGRlbC5pbm5lcigpLCAKICAgICAgICAgICAgICAiZmlsZXMiLCAi
ZmlsZV9kZWx0YXMiKTsKfQoKdm9pZCAKZGF0YWJhc2U6OnB1dF9maWxlX3JldmVyc2VfdmVy
c2lvbihmaWxlX2lkIGNvbnN0ICYgbmV3X2lkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZpbGVfaWQgY29uc3QgJiBvbGRfaWQsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9k
ZWx0YSBjb25zdCAmIGRlbCkKewogIHB1dF9yZXZlcnNlX3ZlcnNpb24obmV3X2lkLmlubmVy
KCksIG9sZF9pZC5pbm5lcigpLCBkZWwuaW5uZXIoKSwgCiAgICAgICAgICAgICAgICAgICAg
ICAiZmlsZXMiLCAiZmlsZV9kZWx0YXMiKTsKfQoKCnZvaWQgCmRhdGFiYXNlOjpwdXRfbWFu
aWZlc3QobWFuaWZlc3RfaWQgY29uc3QgJiBpZCwKICAgICAgICAgICAgICAgICAgICAgICBt
YW5pZmVzdF9kYXRhIGNvbnN0ICYgZGF0KQp7CiAgcHV0KGlkLmlubmVyKCksIGRhdC5pbm5l
cigpLCAibWFuaWZlc3RzIik7Cn0KCnZvaWQgCmRhdGFiYXNlOjpwdXRfbWFuaWZlc3RfdmVy
c2lvbihtYW5pZmVzdF9pZCBjb25zdCAmIG9sZF9pZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hbmlmZXN0X2lkIGNvbnN0ICYgbmV3X2lkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWFuaWZlc3RfZGVsdGEgY29uc3QgJiBkZWwpCnsKICBwdXRfdmVy
c2lvbihvbGRfaWQuaW5uZXIoKSwgbmV3X2lkLmlubmVyKCksIGRlbC5pbm5lcigpLCAKICAg
ICAgICAgICAgICAibWFuaWZlc3RzIiwgIm1hbmlmZXN0X2RlbHRhcyIpOwp9Cgp2b2lkIApk
YXRhYmFzZTo6cHV0X21hbmlmZXN0X3JldmVyc2VfdmVyc2lvbihtYW5pZmVzdF9pZCBjb25z
dCAmIG5ld19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFu
aWZlc3RfaWQgY29uc3QgJiBvbGRfaWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X2Rl
bHRhIGNvbnN0ICYgZGVsKQp7CiAgcHV0X3JldmVyc2VfdmVyc2lvbihuZXdfaWQuaW5uZXIo
KSwgb2xkX2lkLmlubmVyKCksIGRlbC5pbm5lcigpLCAKICAgICAgICAgICAgICAgICAgICAg
ICJtYW5pZmVzdHMiLCAibWFuaWZlc3RfZGVsdGFzIik7Cn0KCgp2b2lkIApkYXRhYmFzZTo6
Z2V0X3JldmlzaW9uX2FuY2VzdHJ5KHN0ZDo6c2V0PHN0ZDo6cGFpcjxyZXZpc2lvbl9pZCwg
cmV2aXNpb25faWQ+ID4gJiBncmFwaCkKewogIHJlc3VsdHMgcmVzOwogIGdyYXBoLmNsZWFy
KCk7CiAgZmV0Y2gocmVzLCAyLCBhbnlfcm93cywgCiAgICAgICAgIlNFTEVDVCBwYXJlbnQs
Y2hpbGQgRlJPTSByZXZpc2lvbl9hbmNlc3RyeSIpOwogIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcmVzLnNpemUoKTsgKytpKQogICAgZ3JhcGguaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKHJl
dmlzaW9uX2lkKHJlc1tpXVswXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV2aXNpb25faWQocmVzW2ldWzFdKSkpOwp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X3Jldmlz
aW9uX3BhcmVudHMocmV2aXNpb25faWQgY29uc3QgJiBpZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0PHJldmlzaW9uX2lkPiAmIHBhcmVudHMpCnsKICByZXN1bHRzIHJl
czsKICBwYXJlbnRzLmNsZWFyKCk7CiAgZmV0Y2gocmVzLCBvbmVfY29sLCBhbnlfcm93cywg
CiAgICAgICAgIlNFTEVDVCBwYXJlbnQgRlJPTSByZXZpc2lvbl9hbmNlc3RyeSBXSEVSRSBj
aGlsZCA9ICclcSciLAogICAgICAgIGlkLmlubmVyKCkoKS5jX3N0cigpKTsKICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHJlcy5zaXplKCk7ICsraSkKICAgIHBhcmVudHMuaW5zZXJ0KHJl
dmlzaW9uX2lkKHJlc1tpXVswXSkpOwp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X3JldmlzaW9u
X2NoaWxkcmVuKHJldmlzaW9uX2lkIGNvbnN0ICYgaWQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0PHJldmlzaW9uX2lkPiAmIGNoaWxkcmVuKQp7CiAgcmVzdWx0cyBy
ZXM7CiAgY2hpbGRyZW4uY2xlYXIoKTsKICBmZXRjaChyZXMsIG9uZV9jb2wsIGFueV9yb3dz
LCAKICAgICAgICAiU0VMRUNUIGNoaWxkIEZST00gcmV2aXNpb25fYW5jZXN0cnkgV0hFUkUg
cGFyZW50ID0gJyVxJyIsCiAgICAgICAgaWQuaW5uZXIoKSgpLmNfc3RyKCkpOwogIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcmVzLnNpemUoKTsgKytpKQogICAgY2hpbGRyZW4uaW5zZXJ0
KHJldmlzaW9uX2lkKHJlc1tpXVswXSkpOwp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X3Jldmlz
aW9uX21hbmlmZXN0KHJldmlzaW9uX2lkIGNvbnN0ICYgcmlkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWFuaWZlc3RfaWQgJiBtaWQpCnsKICByZXZpc2lvbl9zZXQgcmV2
OwogIGdldF9yZXZpc2lvbihyaWQsIHJldik7CiAgbWlkID0gcmV2Lm5ld19tYW5pZmVzdDsK
fQoKdm9pZCAKZGF0YWJhc2U6OmdldF9yZXZpc2lvbihyZXZpc2lvbl9pZCBjb25zdCAmIGlk
LAogICAgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uX3NldCAmIHJldikKewogIHJldmlz
aW9uX2RhdGEgZDsKICBnZXRfcmV2aXNpb24oaWQsIGQpOwogIHJlYWRfcmV2aXNpb25fc2V0
KGQsIHJldik7Cn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRfcmV2aXNpb24ocmV2aXNpb25faWQg
Y29uc3QgJiBpZCwKICAgICAgICAgICAgICAgICAgICAgICByZXZpc2lvbl9kYXRhICYgZGF0
KQp7CiAgcmVzdWx0cyByZXM7CiAgZmV0Y2gocmVzLCBvbmVfY29sLCBvbmVfcm93LCAKICAg
ICAgICAiU0VMRUNUIGRhdGEgRlJPTSByZXZpc2lvbnMgV0hFUkUgaWQgPSAnJXEnIiwKICAg
ICAgICBpZC5pbm5lcigpKCkuY19zdHIoKSk7CgogIGRhdCA9IHJldmlzaW9uX2RhdGEocmVz
WzBdWzBdKTsKCiAgLy8gdmVyaWZ5IHRoYXQgd2UgZ290IGEgcmV2aXNpb24gd2l0aCB0aGUg
cmlnaHQgaWQKICB7CiAgICByZXZpc2lvbl9pZCB0bXA7CiAgICBjYWxjdWxhdGVfaWRlbnQo
ZGF0LCB0bXApOwogICAgSShpZCA9PSB0bXApOwogIH0KfQoKdm9pZCAKZGF0YWJhc2U6OnB1
dF9yZXZpc2lvbihyZXZpc2lvbl9pZCBjb25zdCAmIG5ld19pZCwKICAgICAgICAgICAgICAg
ICAgICAgICByZXZpc2lvbl9zZXQgY29uc3QgJiByZXYpCnsKCiAgSSghcmV2aXNpb25fZXhp
c3RzKG5ld19pZCkpOwogIHJldmlzaW9uX2RhdGEgZDsKCiAgd3JpdGVfcmV2aXNpb25fc2V0
KHJldiwgZCk7CiAgcmV2aXNpb25faWQgdG1wOwogIGNhbGN1bGF0ZV9pZGVudChkLCB0bXAp
OwogIEkodG1wID09IG5ld19pZCk7CgogIHRyYW5zYWN0aW9uX2d1YXJkIGd1YXJkKCp0aGlz
KTsKCiAgZXhlY3V0ZSgiSU5TRVJUIElOVE8gcmV2aXNpb25zIFZBTFVFUygnJXEnLCAnJXEn
KSIsIAogICAgICAgICAgbmV3X2lkLmlubmVyKCkoKS5jX3N0cigpLCAKICAgICAgICAgIGQu
aW5uZXIoKSgpLmNfc3RyKCkpOwoKICBmb3IgKGVkZ2VfbWFwOjpjb25zdF9pdGVyYXRvciBl
ID0gcmV2LmVkZ2VzLmJlZ2luKCk7CiAgICAgICBlICE9IHJldi5lZGdlcy5lbmQoKTsgKytl
KQogICAgewogICAgICBleGVjdXRlKCJJTlNFUlQgSU5UTyByZXZpc2lvbl9hbmNlc3RyeSBW
QUxVRVMoJyVxJywgJyVxJykiLCAKICAgICAgICAgICAgICBlZGdlX29sZF9yZXZpc2lvbihl
KS5pbm5lcigpKCkuY19zdHIoKSwKICAgICAgICAgICAgICBuZXdfaWQuaW5uZXIoKSgpLmNf
c3RyKCkpOwogICAgfQoKICBndWFyZC5jb21taXQoKTsKfQoKdm9pZCAKZGF0YWJhc2U6OnB1
dF9yZXZpc2lvbihyZXZpc2lvbl9pZCBjb25zdCAmIG5ld19pZCwKICAgICAgICAgICAgICAg
ICAgICAgICByZXZpc2lvbl9kYXRhIGNvbnN0ICYgZGF0KQp7CiAgcmV2aXNpb25fc2V0IHJl
djsKICByZWFkX3JldmlzaW9uX3NldChkYXQsIHJldik7CiAgcHV0X3JldmlzaW9uKG5ld19p
ZCwgcmV2KTsKfQoKCi8vIGNyeXB0byBrZXkgbWFuYWdlbWVudAoKdm9pZCAKZGF0YWJhc2U6
OmdldF9rZXlfaWRzKHN0cmluZyBjb25zdCAmIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAg
ICAgICB2ZWN0b3I8cnNhX2tleXBhaXJfaWQ+ICYgcHVia2V5cywKICAgICAgICAgICAgICAg
ICAgICAgIHZlY3Rvcjxyc2Ffa2V5cGFpcl9pZD4gJiBwcml2a2V5cykKewogIHB1YmtleXMu
Y2xlYXIoKTsKICBwcml2a2V5cy5jbGVhcigpOwogIHJlc3VsdHMgcmVzOwoKICBpZiAocGF0
dGVybiAhPSAiIikKICAgIGZldGNoKHJlcywgb25lX2NvbCwgYW55X3Jvd3MsIAogICAgICAg
ICAgIlNFTEVDVCBpZCBmcm9tIHB1YmxpY19rZXlzIFdIRVJFIGlkIEdMT0IgJyVxJyIsCiAg
ICAgICAgICBwYXR0ZXJuLmNfc3RyKCkpOwogIGVsc2UKICAgIGZldGNoKHJlcywgb25lX2Nv
bCwgYW55X3Jvd3MsIAogICAgICAgICAgIlNFTEVDVCBpZCBmcm9tIHB1YmxpY19rZXlzIik7
CgogIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzLnNpemUoKTsgKytpKQogICAgcHVia2V5
cy5wdXNoX2JhY2socmVzW2ldWzBdKTsKCiAgaWYgKHBhdHRlcm4gIT0gIiIpCiAgICBmZXRj
aChyZXMsIG9uZV9jb2wsIGFueV9yb3dzLCAKICAgICAgICAgICJTRUxFQ1QgaWQgZnJvbSBw
cml2YXRlX2tleXMgV0hFUkUgaWQgR0xPQiAnJXEnIiwKICAgICAgICAgIHBhdHRlcm4uY19z
dHIoKSk7CiAgZWxzZQogICAgZmV0Y2gocmVzLCBvbmVfY29sLCBhbnlfcm93cywgCiAgICAg
ICAgICAiU0VMRUNUIGlkIGZyb20gcHJpdmF0ZV9rZXlzIik7CgogIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcmVzLnNpemUoKTsgKytpKQogICAgcHJpdmtleXMucHVzaF9iYWNrKHJlc1tp
XVswXSk7Cn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRfcHJpdmF0ZV9rZXlzKHZlY3Rvcjxyc2Ff
a2V5cGFpcl9pZD4gJiBwcml2a2V5cykKewogIHByaXZrZXlzLmNsZWFyKCk7CiAgcmVzdWx0
cyByZXM7CiAgZmV0Y2gocmVzLCBvbmVfY29sLCBhbnlfcm93cywgICJTRUxFQ1QgaWQgZnJv
bSBwcml2YXRlX2tleXMiKTsKICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlcy5zaXplKCk7
ICsraSkKICAgIHByaXZrZXlzLnB1c2hfYmFjayhyZXNbaV1bMF0pOwp9Cgpib29sIApkYXRh
YmFzZTo6cHVibGljX2tleV9leGlzdHMoaGV4ZW5jPGlkPiBjb25zdCAmIGhhc2gpCnsKICBy
ZXN1bHRzIHJlczsKICBmZXRjaChyZXMsIG9uZV9jb2wsIGFueV9yb3dzLCAKICAgICAgICAi
U0VMRUNUIGlkIEZST00gcHVibGljX2tleXMgV0hFUkUgaGFzaCA9ICclcSciLAogICAgICAg
IGhhc2goKS5jX3N0cigpKTsKICBJKChyZXMuc2l6ZSgpID09IDEpIHx8IChyZXMuc2l6ZSgp
ID09IDApKTsKICBpZiAocmVzLnNpemUoKSA9PSAxKSAKICAgIHJldHVybiB0cnVlOwogIHJl
dHVybiBmYWxzZTsKfQoKYm9vbCAKZGF0YWJhc2U6OnB1YmxpY19rZXlfZXhpc3RzKHJzYV9r
ZXlwYWlyX2lkIGNvbnN0ICYgaWQpCnsKICByZXN1bHRzIHJlczsKICBmZXRjaChyZXMsIG9u
ZV9jb2wsIGFueV9yb3dzLCAKICAgICAgICAiU0VMRUNUIGlkIEZST00gcHVibGljX2tleXMg
V0hFUkUgaWQgPSAnJXEnIiwKICAgICAgICBpZCgpLmNfc3RyKCkpOwogIEkoKHJlcy5zaXpl
KCkgPT0gMSkgfHwgKHJlcy5zaXplKCkgPT0gMCkpOwogIGlmIChyZXMuc2l6ZSgpID09IDEp
IAogICAgcmV0dXJuIHRydWU7CiAgcmV0dXJuIGZhbHNlOwp9Cgpib29sIApkYXRhYmFzZTo6
cHJpdmF0ZV9rZXlfZXhpc3RzKHJzYV9rZXlwYWlyX2lkIGNvbnN0ICYgaWQpCnsKICByZXN1
bHRzIHJlczsKICBmZXRjaChyZXMsIG9uZV9jb2wsIGFueV9yb3dzLAogICAgICAgICJTRUxF
Q1QgaWQgRlJPTSBwcml2YXRlX2tleXMgV0hFUkUgaWQgPSAnJXEnIiwKICAgICAgICBpZCgp
LmNfc3RyKCkpOwogIEkoKHJlcy5zaXplKCkgPT0gMSkgfHwgKHJlcy5zaXplKCkgPT0gMCkp
OwogIGlmIChyZXMuc2l6ZSgpID09IDEpCiAgICByZXR1cm4gdHJ1ZTsKICByZXR1cm4gZmFs
c2U7Cn0KCmJvb2wgCmRhdGFiYXNlOjprZXlfZXhpc3RzKHJzYV9rZXlwYWlyX2lkIGNvbnN0
ICYgaWQpCnsKICByZXR1cm4gcHVibGljX2tleV9leGlzdHMoaWQpIHx8IHByaXZhdGVfa2V5
X2V4aXN0cyhpZCk7Cn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRfcHVia2V5KGhleGVuYzxpZD4g
Y29uc3QgJiBoYXNoLCAKICAgICAgICAgICAgICAgICAgICAgcnNhX2tleXBhaXJfaWQgJiBp
ZCwKICAgICAgICAgICAgICAgICAgICAgYmFzZTY0PHJzYV9wdWJfa2V5PiAmIHB1Yl9lbmNv
ZGVkKQp7CiAgcmVzdWx0cyByZXM7CiAgZmV0Y2gocmVzLCAyLCBvbmVfcm93LCAKICAgICAg
ICAiU0VMRUNUIGlkLCBrZXlkYXRhIEZST00gcHVibGljX2tleXMgd2hlcmUgaGFzaCA9ICcl
cSciLCAKICAgICAgICBoYXNoKCkuY19zdHIoKSk7CiAgaWQgPSByZXNbMF1bMF07CiAgcHVi
X2VuY29kZWQgPSByZXNbMF1bMV07Cn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRfa2V5KHJzYV9r
ZXlwYWlyX2lkIGNvbnN0ICYgcHViX2lkLCAKICAgICAgICAgICAgICAgICAgYmFzZTY0PHJz
YV9wdWJfa2V5PiAmIHB1Yl9lbmNvZGVkKQp7CiAgcmVzdWx0cyByZXM7CiAgZmV0Y2gocmVz
LCBvbmVfY29sLCBvbmVfcm93LCAKICAgICAgICAiU0VMRUNUIGtleWRhdGEgRlJPTSBwdWJs
aWNfa2V5cyB3aGVyZSBpZCA9ICclcSciLCAKICAgICAgICBwdWJfaWQoKS5jX3N0cigpKTsK
ICBwdWJfZW5jb2RlZCA9IHJlc1swXVswXTsKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9rZXko
cnNhX2tleXBhaXJfaWQgY29uc3QgJiBwcml2X2lkLCAKICAgICAgICAgICAgICAgICAgYmFz
ZTY0PCBhcmM0PHJzYV9wcml2X2tleT4gPiAmIHByaXZfZW5jb2RlZCkKewogIHJlc3VsdHMg
cmVzOwogIGZldGNoKHJlcywgb25lX2NvbCwgb25lX2NvbCwgCiAgICAgICAgIlNFTEVDVCBr
ZXlkYXRhIEZST00gcHJpdmF0ZV9rZXlzIHdoZXJlIGlkID0gJyVxJyIsIAogICAgICAgIHBy
aXZfaWQoKS5jX3N0cigpKTsKICBwcml2X2VuY29kZWQgPSByZXNbMF1bMF07Cn0KCgp2b2lk
IApkYXRhYmFzZTo6cHV0X2tleShyc2Ffa2V5cGFpcl9pZCBjb25zdCAmIHB1Yl9pZCwgCiAg
ICAgICAgICAgICAgICAgIGJhc2U2NDxyc2FfcHViX2tleT4gY29uc3QgJiBwdWJfZW5jb2Rl
ZCkKewogIGhleGVuYzxpZD4gdGhhc2g7CiAga2V5X2hhc2hfY29kZShwdWJfaWQsIHB1Yl9l
bmNvZGVkLCB0aGFzaCk7CiAgZXhlY3V0ZSgiSU5TRVJUIElOVE8gcHVibGljX2tleXMgVkFM
VUVTKCclcScsICclcScsICclcScpIiwgCiAgICAgICAgICB0aGFzaCgpLmNfc3RyKCksIHB1
Yl9pZCgpLmNfc3RyKCksIHB1Yl9lbmNvZGVkKCkuY19zdHIoKSk7Cn0KCnZvaWQgCmRhdGFi
YXNlOjpwdXRfa2V5KHJzYV9rZXlwYWlyX2lkIGNvbnN0ICYgcHJpdl9pZCwgCiAgICAgICAg
ICAgICAgICAgIGJhc2U2NDwgYXJjNDxyc2FfcHJpdl9rZXk+ID4gY29uc3QgJiBwcml2X2Vu
Y29kZWQpCnsKICAKICBoZXhlbmM8aWQ+IHRoYXNoOwogIGtleV9oYXNoX2NvZGUocHJpdl9p
ZCwgcHJpdl9lbmNvZGVkLCB0aGFzaCk7CiAgZXhlY3V0ZSgiSU5TRVJUIElOVE8gcHJpdmF0
ZV9rZXlzIFZBTFVFUygnJXEnLCAnJXEnLCAnJXEnKSIsIAogICAgICAgICAgdGhhc2goKS5j
X3N0cigpLCBwcml2X2lkKCkuY19zdHIoKSwgcHJpdl9lbmNvZGVkKCkuY19zdHIoKSk7Cn0K
CnZvaWQgCmRhdGFiYXNlOjpwdXRfa2V5X3BhaXIocnNhX2tleXBhaXJfaWQgY29uc3QgJiBp
ZCwgCiAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0PHJzYV9wdWJfa2V5PiBjb25zdCAm
IHB1Yl9lbmNvZGVkLAogICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NDwgYXJjNDxyc2Ff
cHJpdl9rZXk+ID4gY29uc3QgJiBwcml2X2VuY29kZWQpCnsKICB0cmFuc2FjdGlvbl9ndWFy
ZCBndWFyZCgqdGhpcyk7CiAgcHV0X2tleShpZCwgcHViX2VuY29kZWQpOwogIHB1dF9rZXko
aWQsIHByaXZfZW5jb2RlZCk7CiAgZ3VhcmQuY29tbWl0KCk7Cn0KCnZvaWQKZGF0YWJhc2U6
OmRlbGV0ZV9wcml2YXRlX2tleShyc2Ffa2V5cGFpcl9pZCBjb25zdCAmIHB1Yl9pZCkKewog
IGV4ZWN1dGUoIkRFTEVURSBGUk9NIHByaXZhdGVfa2V5cyBXSEVSRSBpZCA9ICclcSciLAoJ
ICBwdWJfaWQoKS5jX3N0cigpKTsKfQoKLy8gY2VydCBtYW5hZ2VtZW50Cgpib29sIApkYXRh
YmFzZTo6Y2VydF9leGlzdHMoY2VydCBjb25zdCAmIHQsCiAgICAgICAgICAgICAgICAgICAg
ICBzdHJpbmcgY29uc3QgJiB0YWJsZSkKewogIHJlc3VsdHMgcmVzOwogIGZldGNoKHJlcywg
MSwgYW55X3Jvd3MsCiAgICAgICAgIlNFTEVDVCBpZCBGUk9NICclcScgV0hFUkUgaWQgPSAn
JXEnICIKICAgICAgICAiQU5EIG5hbWUgPSAnJXEnIEFORCB2YWx1ZSA9ICclcScgIiAKICAg
ICAgICAiQU5EIGtleXBhaXIgPSAnJXEnIEFORCBzaWduYXR1cmUgPSAnJXEnICIsCiAgICAg
ICAgdGFibGUuY19zdHIoKSwKICAgICAgICB0LmlkZW50KCkuY19zdHIoKSwKICAgICAgICB0
Lm5hbWUoKS5jX3N0cigpLAogICAgICAgIHQudmFsdWUoKS5jX3N0cigpLAogICAgICAgIHQu
a2V5KCkuY19zdHIoKSwKICAgICAgICB0LnNpZygpLmNfc3RyKCkpOwogIEkocmVzLnNpemUo
KSA9PSAwIHx8IHJlcy5zaXplKCkgPT0gMSk7CiAgcmV0dXJuIHJlcy5zaXplKCkgPT0gMTsK
fQoKdm9pZCAKZGF0YWJhc2U6OnB1dF9jZXJ0KGNlcnQgY29uc3QgJiB0LAogICAgICAgICAg
ICAgICAgICAgc3RyaW5nIGNvbnN0ICYgdGFibGUpCnsKICBoZXhlbmM8aWQ+IHRoYXNoOwog
IGNlcnRfaGFzaF9jb2RlKHQsIHRoYXNoKTsKICBleGVjdXRlKCJJTlNFUlQgSU5UTyAnJXEn
IFZBTFVFUygnJXEnLCAnJXEnLCAnJXEnLCAnJXEnLCAnJXEnLCAnJXEnKSIsIAogICAgICAg
ICAgdGFibGUuY19zdHIoKSwKICAgICAgICAgIHRoYXNoKCkuY19zdHIoKSwKICAgICAgICAg
IHQuaWRlbnQoKS5jX3N0cigpLAogICAgICAgICAgdC5uYW1lKCkuY19zdHIoKSwgCiAgICAg
ICAgICB0LnZhbHVlKCkuY19zdHIoKSwKICAgICAgICAgIHQua2V5KCkuY19zdHIoKSwKICAg
ICAgICAgIHQuc2lnKCkuY19zdHIoKSk7Cn0KCnZvaWQgCmRhdGFiYXNlOjpyZXN1bHRzX3Rv
X2NlcnRzKHJlc3VsdHMgY29uc3QgJiByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZlY3RvcjxjZXJ0PiAmIGNlcnRzKQp7CiAgY2VydHMuY2xlYXIoKTsKICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHJlcy5zaXplKCk7ICsraSkKICAgIHsKICAgICAgY2VydCB0OwogICAg
ICB0ID0gY2VydChoZXhlbmM8aWQ+KHJlc1tpXVswXSksIAogICAgICAgICAgICAgIGNlcnRf
bmFtZShyZXNbaV1bMV0pLAogICAgICAgICAgICAgIGJhc2U2NDxjZXJ0X3ZhbHVlPihyZXNb
aV1bMl0pLAogICAgICAgICAgICAgIHJzYV9rZXlwYWlyX2lkKHJlc1tpXVszXSksCiAgICAg
ICAgICAgICAgYmFzZTY0PHJzYV9zaGExX3NpZ25hdHVyZT4ocmVzW2ldWzRdKSk7CiAgICAg
IGNlcnRzLnB1c2hfYmFjayh0KTsKICAgIH0KfQoKCnN0cnVjdCB2YWxpZF9jZXJ0cwp7CiAg
c2V0PHJzYV9rZXlwYWlyX2lkPiB2YWxpZF9zaWduZXJzOwogIGhleGVuYzxpZD4gaWRlbnQ7
CiAgY2VydF9uYW1lIG5hbWU7CiAgYmFzZTY0PGNlcnRfdmFsdWU+IHZhbDsKICBzdHJpbmcg
c2lnbmF0dXJlX3R5cGU7CgogIHZhbGlkX2NlcnRzKHN0cmluZyBjb25zdCAmIHR5KSAKICAg
IDogc2lnbmF0dXJlX3R5cGUodHkpIAogIHsKICAgIEwoRigiY29uc3RydWN0aW5nIHZhbGlk
aXR5IGNoZWNrZXIgZm9yICVzIGNlcnRzXG4iKSAlIHR5KTsKICB9CgogIGJvb2wgY2hlY2tf
c2lnbmVyX3RydXN0KGFwcF9zdGF0ZSAmIGFwcCkKICB7CiAgICBib29sIHRydXN0ZWQgPSBm
YWxzZTsKCiAgICBMKEYoImNoZWNraW5nICVkIHNpZ25lciAlcyBjZXJ0IHRydXN0IHNldFxu
IikgCiAgICAgICUgdmFsaWRfc2lnbmVycy5zaXplKCkgJSBzaWduYXR1cmVfdHlwZSk7CiAg
ICB0cnkKICAgICAgewogICAgICAgIGNlcnRfdmFsdWUgdjsKICAgICAgICBkZWNvZGVfYmFz
ZTY0KHZhbCwgdik7CiAgICAgICAgLy8gRklYTUU6IGxhbWUgc3RyaW5nLW1ha2VzLXRoZS1t
b2RlIGFyZ3VtZW50CiAgICAgICAgaWYgKHNpZ25hdHVyZV90eXBlID09ICJyZXZpc2lvbiIp
CiAgICAgICAgICB0cnVzdGVkID0gYXBwLmx1YS5ob29rX2dldF9yZXZpc2lvbl9jZXJ0X3Ry
dXN0KHZhbGlkX3NpZ25lcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWRlbnQsIG5hbWUsIHYpOwogICAgICAgIGVsc2UgaWYg
KHNpZ25hdHVyZV90eXBlID09ICJtYW5pZmVzdCIpCiAgICAgICAgICB0cnVzdGVkID0gYXBw
Lmx1YS5ob29rX2dldF9tYW5pZmVzdF9jZXJ0X3RydXN0KHZhbGlkX3NpZ25lcnMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlk
ZW50LCBuYW1lLCB2KTsKICAgICAgICBlbHNlIGlmIChzaWduYXR1cmVfdHlwZSA9PSAiZmls
ZSIpCiAgICAgICAgICB0cnVzdGVkID0gYXBwLmx1YS5ob29rX2dldF9maWxlX2NlcnRfdHJ1
c3QodmFsaWRfc2lnbmVycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZGVudCwgbmFtZSwgdik7CiAgICAgICAgZWxzZQogICAgICAg
ICAgSShmYWxzZSk7IC8vIHNob3VsZCBiZSBpbGxlZ2FsCiAgICAgIH0KICAgIGNhdGNoICgu
Li4pCiAgICAgIHsKICAgICAgICBXKEYoImV4Y2VwdGlvbiBpbiBzcWxpdGUgdmFsaWRfY2Vy
dHM6OmNoZWNrX3NldF90cnVzdFxuIikpOwogICAgICB9CiAgICAKICAgIGlmICh0cnVzdGVk
KQogICAgICBMKEYoInRydXN0IGZ1bmN0aW9uIGxpa2VkICVkICVzIHNpZ25lcnNcbiIpIAog
ICAgICAgICUgdmFsaWRfc2lnbmVycy5zaXplKCkgJSBzaWduYXR1cmVfdHlwZSk7CiAgICBl
bHNlCiAgICAgIEwoRigidHJ1c3QgZnVuY3Rpb24gZGlzbGlrZWQgJWQgJXMgc2lnbmVyc1xu
IikgCiAgICAgICAgJSB2YWxpZF9zaWduZXJzLnNpemUoKSAlIHNpZ25hdHVyZV90eXBlKTsK
ICAgIAogICAgcmV0dXJuIHRydXN0ZWQ7CiAgfQoKICB2b2lkIGNoZWNrX3NpbmdsZV9zaWdu
ZXIoYXBwX3N0YXRlICYgYXBwLAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYXJn
YywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3QgKiogYXJndikKICB7
CiAgICB0cnkKICAgICAgewogICAgICAgIC8vIGFyZ3MgYXJlOiBoYXNoLCBpZCwgbmFtZSwg
dmFsdWUsIGtleXBhaXIsIHB1YmtleSwgc2lnbmF0dXJlCiAgICAgICAgLy8gTChGKCJlbnRy
aWVzIGFyZSBbJXNdIFslc10gWyVzXSBbJXNdIFslc10gWyVzXSBbJXNdXG4iKSAKICAgICAg
ICAvLyAgICAgICAgJSBhcmd2WzBdICUgYXJndlsxXSAlIGFyZ3ZbMl0gJSBhcmd2WzNdICUg
YXJndls0XSAlIGFyZ3ZbNV0gJSBhcmd2WzZdKTsKCiAgICAgICAgY2VydCB0bXAgPSBjZXJ0
KGhleGVuYzxpZD4oYXJndlsxXSksIAogICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X25h
bWUoYXJndlsyXSksCiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NDxjZXJ0X3ZhbHVl
Pihhcmd2WzNdKSwKICAgICAgICAgICAgICAgICAgICAgICAgcnNhX2tleXBhaXJfaWQoYXJn
dls0XSksCiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NDxyc2Ffc2hhMV9zaWduYXR1
cmU+KGFyZ3ZbNl0pKTsKCiAgICAgICAgYmFzZTY0PHJzYV9wdWJfa2V5PiBwayhhcmd2WzVd
KTsKCiAgICAgICAgaWYgKGlkZW50KCkuZW1wdHkoKSkKICAgICAgICAgIGlkZW50ID0gdG1w
LmlkZW50OwogICAgICAgIGVsc2UKICAgICAgICAgIEkoaWRlbnQgPT0gdG1wLmlkZW50KTsK
CiAgICAgICAgaWYgKG5hbWUoKS5lbXB0eSgpKQogICAgICAgICAgbmFtZSA9IHRtcC5uYW1l
OwogICAgICAgIGVsc2UKICAgICAgICAgIEkobmFtZSA9PSB0bXAubmFtZSk7CgogICAgICAg
IGlmICh2YWwoKS5lbXB0eSgpKQogICAgICAgICAgdmFsID0gdG1wLnZhbHVlOwogICAgICAg
IGVsc2UKICAgICAgICAgIEkodmFsID09IHRtcC52YWx1ZSk7CgogICAgICAgIC8vICAgICAg
TChGKCJleGFtaW5pbmcgJyVzJyAlcyBjZXJ0IGZyb20gJXNcbiIpIAogICAgICAgIC8vICAg
ICAgICAlIG5hbWUgJSBzaWduYXR1cmVfdHlwZSAlIGlkZW50KTsKCiAgICAgICAgc3RyaW5n
IHR4dDsKICAgICAgICBjZXJ0X3NpZ25hYmxlX3RleHQodG1wLCB0eHQpOwogICAgICAgIGlm
IChjaGVja19zaWduYXR1cmUoYXBwLmx1YSwgdG1wLmtleSwgcGssIHR4dCwgdG1wLnNpZykp
CiAgICAgICAgICB7CiAgICAgICAgICAgIEwoRigib2sgJyVzJyAlcyBjZXJ0IGZyb20gJXNc
biIpIAogICAgICAgICAgICAgICUgbmFtZSAlIHNpZ25hdHVyZV90eXBlICUgdG1wLmtleSk7
CiAgICAgICAgICAgIHZhbGlkX3NpZ25lcnMuaW5zZXJ0KHRtcC5rZXkpOwogICAgICAgICAg
fQogICAgICAgIGVsc2UKICAgICAgICAgIHsKICAgICAgICAgICAgVyhGKCJiYWQgJyVzJyAl
cyBjZXJ0IGZyb20gJXNcbiIpIAogICAgICAgICAgICAgICUgbmFtZSAlIHNpZ25hdHVyZV90
eXBlICUgdG1wLmtleSk7CiAgICAgICAgICB9CiAgICAgIH0KICAgIGNhdGNoIChzdGQ6OmV4
Y2VwdGlvbiAmIGUpCiAgICAgIHsKICAgICAgICBXKEYoInN0ZDo6ZXhjZXB0aW9uIGluIHNx
bGl0ZSB2YWxpZF9jZXJ0czo6Y2hlY2tfc2luZ2xlX3NpZ25lcjogJXNcbiIpICUgZS53aGF0
KCkpOwogICAgICB9CiAgICBjYXRjaCAoLi4uKQogICAgICB7CiAgICAgICAgVyhGKCJ1bmtu
b3duIGV4Y2VwdGlvbiBpbiBzcWxpdGUgdmFsaWRfY2VydHM6OmNoZWNrX3NpbmdsZV9zaWdu
ZXJcbiIpKTsKICAgICAgfQogIH0KfTsKCmV4dGVybiAiQyIKewoKc3RhdGljIHZvaWQKdHJ1
c3RlZF9zdGVwX2NhbGxiYWNrKHNxbGl0ZV9mdW5jICogZm5fY3R4LCAKICAgICAgICAgICAg
ICAgICAgICAgIGludCBhcmdjLCAKICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY29uc3Qg
KiogYXJndikKewogIGFwcF9zdGF0ZSAqIGFwcCA9IE5VTEw7IAogIHZhbGlkX2NlcnRzICoq
IHZwcDsKCiAgSShmbl9jdHgpOwogIEkoYXJnYyA9PSA4KTsKICBJKGFyZ3YpOwogIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgODsgKytpKQogICAgSShhcmd2W2ldKTsKCiAgYXBwID0gc3Rh
dGljX2Nhc3Q8YXBwX3N0YXRlICo+KHNxbGl0ZV91c2VyX2RhdGEoZm5fY3R4KSk7CiAgSShh
cHApOwogIHZwcCA9IHN0YXRpY19jYXN0PHZhbGlkX2NlcnRzICoqPihzcWxpdGVfYWdncmVn
YXRlX2NvbnRleHQoZm5fY3R4LCBzaXplb2YodmFsaWRfY2VydHMgKikpKTsKICBJKHZwcCk7
CiAgaWYgKCEgKCp2cHApKQogICAgKnZwcCA9IG5ldyB2YWxpZF9jZXJ0cyhzdHJpbmcoYXJn
dlswXSkpOwogIEkoKnZwcCk7CiAgKCp2cHApLT5jaGVja19zaW5nbGVfc2lnbmVyKCphcHAs
IGFyZ2MtMSwgYXJndisxKTsgIAp9CgpzdGF0aWMgdm9pZAp0cnVzdGVkX2ZpbmFsaXplX2Nh
bGxiYWNrKHNxbGl0ZV9mdW5jICogZm5fY3R4KQp7CiAgYXBwX3N0YXRlICogYXBwID0gTlVM
TDsgCiAgdmFsaWRfY2VydHMgKiogdnBwOwogIGFwcCA9IHN0YXRpY19jYXN0PGFwcF9zdGF0
ZSAqPihzcWxpdGVfdXNlcl9kYXRhKGZuX2N0eCkpOwogIEkoYXBwKTsKICB2cHAgPSBzdGF0
aWNfY2FzdDx2YWxpZF9jZXJ0cyAqKj4oc3FsaXRlX2FnZ3JlZ2F0ZV9jb250ZXh0KGZuX2N0
eCwgc2l6ZW9mKHZhbGlkX2NlcnRzICopKSk7CgogIEkodnBwKTsKICBJKCp2cHApOwoKICBp
ZiAoKCp2cHApLT5jaGVja19zaWduZXJfdHJ1c3QoKmFwcCkpCiAgICBzcWxpdGVfc2V0X3Jl
c3VsdF9pbnQoZm5fY3R4LCAxKTsKICBlbHNlCiAgICBzcWxpdGVfc2V0X3Jlc3VsdF9pbnQo
Zm5fY3R4LCAwKTsKCiAgZGVsZXRlICgqdnBwKTsKfQp9CgoKdm9pZApkYXRhYmFzZTo6aW5z
dGFsbF9mdW5jdGlvbnMoYXBwX3N0YXRlICogYXBwKQp7CiAgLy8gcmVnaXN0ZXIgYW55IGZ1
bmN0aW9ucyB3ZSdyZSBnb2luZyB0byB1c2UKICBJKHNxbGl0ZV9jcmVhdGVfZnVuY3Rpb24o
c3FsKCksICJ1bmJhc2U2NCIsIC0xLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNx
bGl0ZV91bmJhc2U2NF9mbiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpID09
IDApOwoKICBJKHNxbGl0ZV9jcmVhdGVfYWdncmVnYXRlKHNxbCgpLCAidHJ1c3RlZCIsIDgs
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRydXN0ZWRfc3RlcF9jYWxsYmFjaywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cnVzdGVkX2ZpbmFsaXplX2NhbGxiYWNr
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwKSA9PSAwKTsKfQoKdm9pZApkYXRh
YmFzZTo6aW5zdGFsbF92aWV3cygpCnsKICAvLyBkZWxldGUgYW55IGV4aXN0aW5nIHZpZXdz
CiAgcmVzdWx0cyByZXM7CiAgZmV0Y2gocmVzLCBvbmVfY29sLCBhbnlfcm93cywKICAgICAg
ICAiU0VMRUNUIG5hbWUgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGU9J3ZpZXcnIik7
CiAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXMuc2l6ZSgpOyArK2kpCiAgICB7CiAgICAg
IGV4ZWN1dGUoIkRST1AgVklFVyAnJXEnIiwgcmVzW2ldWzBdLmNfc3RyKCkpOwogICAgfQog
IC8vIHJlZ2lzdGVyIGFueSB2aWV3cyB3ZSdyZSBnb2luZyB0byB1c2UKICBleGVjdXRlKHZp
ZXdzX2NvbnN0YW50KTsKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9oZWFkcyhiYXNlNjQ8Y2Vy
dF92YWx1ZT4gY29uc3QgJiBicmFuY2gsCiAgICAgICAgICAgICAgICAgICAgc3RkOjpzZXQ8
cmV2aXNpb25faWQ+ICYgaGVhZHMpCnsKICByZXN1bHRzIHJlczsKICBmZXRjaChyZXMsIG9u
ZV9jb2wsIGFueV9yb3dzLAogICAgICAgICJTRUxFQ1QgcGFyZW50ICIKICAgICAgICAiRlJP
TSBicmFuY2hfaGVhZHMgIgogICAgICAgICJXSEVSRSB2YWx1ZSA9ICclcSciLAogICAgICAg
IGJyYW5jaCgpLmNfc3RyKCkpOwogIGhlYWRzLmNsZWFyKCk7CiAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCByZXMuc2l6ZSgpOyArK2kpCiAgICB7CiAgICAgIGhlYWRzLmluc2VydChyZXZp
c2lvbl9pZChyZXNbaV1bMF0pKTsKICAgIH0KfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9jZXJ0
cyhoZXhlbmM8aWQ+IGNvbnN0ICYgaWRlbnQsIAogICAgICAgICAgICAgICAgICAgIHZlY3Rv
cjxjZXJ0PiAmIGNlcnRzLCAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgc3RyaW5nIGNvbnN0ICYgdGFibGUpCnsKICByZXN1bHRzIHJlczsKICBmZXRjaChy
ZXMsIDUsIGFueV9yb3dzLCAKICAgICAgICAiU0VMRUNUIGlkLCBuYW1lLCB2YWx1ZSwga2V5
cGFpciwgc2lnbmF0dXJlIEZST00gJyVxJyAiCiAgICAgICAgIldIRVJFIGlkID0gJyVxJyIs
IAogICAgICAgIHRhYmxlLmNfc3RyKCksICAKICAgICAgICBpZGVudCgpLmNfc3RyKCkpOwog
IHJlc3VsdHNfdG9fY2VydHMocmVzLCBjZXJ0cyk7Cn0KCgp2b2lkIApkYXRhYmFzZTo6Z2V0
X2NlcnRzKGNlcnRfbmFtZSBjb25zdCAmIG5hbWUsICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICB2ZWN0b3I8Y2VydD4gJiBjZXJ0cywKICAgICAgICAgICAgICAgICAgICBzdHJp
bmcgY29uc3QgJiB0YWJsZSkKewogIHJlc3VsdHMgcmVzOwogIGZldGNoKHJlcywgNSwgYW55
X3Jvd3MsIAogICAgICAgICJTRUxFQ1QgaWQsIG5hbWUsIHZhbHVlLCBrZXlwYWlyLCBzaWdu
YXR1cmUgIgogICAgICAgICJGUk9NICclcScgV0hFUkUgbmFtZSA9ICclcSciLCAKICAgICAg
ICB0YWJsZS5jX3N0cigpLCAgCiAgICAgICAgbmFtZSgpLmNfc3RyKCkpOwogIHJlc3VsdHNf
dG9fY2VydHMocmVzLCBjZXJ0cyk7Cn0KCgp2b2lkIApkYXRhYmFzZTo6Z2V0X2NlcnRzKGhl
eGVuYzxpZD4gY29uc3QgJiBpZGVudCwgCiAgICAgICAgICAgICAgICAgICAgY2VydF9uYW1l
IGNvbnN0ICYgbmFtZSwgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIHZlY3Rvcjxj
ZXJ0PiAmIGNlcnRzLAogICAgICAgICAgICAgICAgICAgIHN0cmluZyBjb25zdCAmIHRhYmxl
KQp7CiAgcmVzdWx0cyByZXM7CiAgZmV0Y2gocmVzLCA1LCBhbnlfcm93cywgCiAgICAgICAg
IlNFTEVDVCBpZCwgbmFtZSwgdmFsdWUsIGtleXBhaXIsIHNpZ25hdHVyZSAiCiAgICAgICAg
IkZST00gJyVxJyAiCiAgICAgICAgIldIRVJFIGlkID0gJyVxJyBBTkQgbmFtZSA9ICclcSci
LCAKICAgICAgICB0YWJsZS5jX3N0cigpLCAgCiAgICAgICAgaWRlbnQoKS5jX3N0cigpLAog
ICAgICAgIG5hbWUoKS5jX3N0cigpKTsKICByZXN1bHRzX3RvX2NlcnRzKHJlcywgY2VydHMp
Owp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X2NlcnRzKGNlcnRfbmFtZSBjb25zdCAmIG5hbWUs
CiAgICAgICAgICAgICAgICAgICAgYmFzZTY0PGNlcnRfdmFsdWU+IGNvbnN0ICYgdmFsLCAK
ICAgICAgICAgICAgICAgICAgICB2ZWN0b3I8Y2VydD4gJiBjZXJ0cywKICAgICAgICAgICAg
ICAgICAgICBzdHJpbmcgY29uc3QgJiB0YWJsZSkKewogIHJlc3VsdHMgcmVzOwogIGZldGNo
KHJlcywgNSwgYW55X3Jvd3MsIAogICAgICAgICJTRUxFQ1QgaWQsIG5hbWUsIHZhbHVlLCBr
ZXlwYWlyLCBzaWduYXR1cmUgIgogICAgICAgICJGUk9NICclcScgIgogICAgICAgICJXSEVS
RSBuYW1lID0gJyVxJyBBTkQgdmFsdWUgPSAnJXEnIiwgCiAgICAgICAgdGFibGUuY19zdHIo
KSwgIAogICAgICAgIG5hbWUoKS5jX3N0cigpLAogICAgICAgIHZhbCgpLmNfc3RyKCkpOwog
IHJlc3VsdHNfdG9fY2VydHMocmVzLCBjZXJ0cyk7Cn0KCgp2b2lkIApkYXRhYmFzZTo6Z2V0
X2NlcnRzKGhleGVuYzxpZD4gY29uc3QgJiBpZGVudCwgCiAgICAgICAgICAgICAgICAgICAg
Y2VydF9uYW1lIGNvbnN0ICYgbmFtZSwgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
IGJhc2U2NDxjZXJ0X3ZhbHVlPiBjb25zdCAmIHZhbHVlLAogICAgICAgICAgICAgICAgICAg
IHZlY3RvcjxjZXJ0PiAmIGNlcnRzLAogICAgICAgICAgICAgICAgICAgIHN0cmluZyBjb25z
dCAmIHRhYmxlKQp7CiAgcmVzdWx0cyByZXM7CiAgZmV0Y2gocmVzLCA1LCBhbnlfcm93cywg
CiAgICAgICAgIlNFTEVDVCBpZCwgbmFtZSwgdmFsdWUsIGtleXBhaXIsIHNpZ25hdHVyZSAi
CiAgICAgICAgIkZST00gJyVxJyAiCiAgICAgICAgIldIRVJFIGlkID0gJyVxJyBBTkQgbmFt
ZSA9ICclcScgQU5EIHZhbHVlID0gJyVxJyIsIAogICAgICAgIHRhYmxlLmNfc3RyKCksICAK
ICAgICAgICBpZGVudCgpLmNfc3RyKCksCiAgICAgICAgbmFtZSgpLmNfc3RyKCksCiAgICAg
ICAgdmFsdWUoKS5jX3N0cigpKTsKICByZXN1bHRzX3RvX2NlcnRzKHJlcywgY2VydHMpOwp9
CgoKCmJvb2wgCmRhdGFiYXNlOjpyZXZpc2lvbl9jZXJ0X2V4aXN0cyhyZXZpc2lvbjxjZXJ0
PiBjb25zdCAmIGNlcnQpCnsgCiAgcmV0dXJuIGNlcnRfZXhpc3RzKGNlcnQuaW5uZXIoKSwg
InJldmlzaW9uX2NlcnRzIik7IAp9Cgpib29sIApkYXRhYmFzZTo6bWFuaWZlc3RfY2VydF9l
eGlzdHMobWFuaWZlc3Q8Y2VydD4gY29uc3QgJiBjZXJ0KQp7IAogIHJldHVybiBjZXJ0X2V4
aXN0cyhjZXJ0LmlubmVyKCksICJtYW5pZmVzdF9jZXJ0cyIpOyAKfQoKYm9vbCAKZGF0YWJh
c2U6OmZpbGVfY2VydF9leGlzdHMoZmlsZTxjZXJ0PiBjb25zdCAmIGNlcnQpCnsgCiAgcmV0
dXJuIGNlcnRfZXhpc3RzKGNlcnQuaW5uZXIoKSwgImZpbGVfY2VydHMiKTsgCn0KCnZvaWQg
CmRhdGFiYXNlOjpwdXRfbWFuaWZlc3RfY2VydChtYW5pZmVzdDxjZXJ0PiBjb25zdCAmIGNl
cnQpCnsgCiAgcHV0X2NlcnQoY2VydC5pbm5lcigpLCAibWFuaWZlc3RfY2VydHMiKTsgCn0K
CnZvaWQgCmRhdGFiYXNlOjpwdXRfcmV2aXNpb25fY2VydChyZXZpc2lvbjxjZXJ0PiBjb25z
dCAmIGNlcnQpCnsgCiAgcHV0X2NlcnQoY2VydC5pbm5lcigpLCAicmV2aXNpb25fY2VydHMi
KTsgCn0KCnZvaWQgCmRhdGFiYXNlOjpwdXRfZmlsZV9jZXJ0KGZpbGU8Y2VydD4gY29uc3Qg
JiBjZXJ0KQp7IAogIHB1dF9jZXJ0KGNlcnQuaW5uZXIoKSwgImZpbGVfY2VydHMiKTsgCn0K
CnZvaWQgCmRhdGFiYXNlOjpnZXRfZmlsZV9jZXJ0cyhjZXJ0X25hbWUgY29uc3QgJiBuYW1l
LCAKICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvcjwgZmlsZTxjZXJ0PiA+ICYgdHMp
CnsKICB2ZWN0b3I8Y2VydD4gY2VydHM7CiAgZ2V0X2NlcnRzKG5hbWUsIGNlcnRzLCAiZmls
ZV9jZXJ0cyIpOwogIHRzLmNsZWFyKCk7CiAgY29weShjZXJ0cy5iZWdpbigpLCBjZXJ0cy5l
bmQoKSwgYmFja19pbnNlcnRlcih0cykpOyAgCn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRfZmls
ZV9jZXJ0cyhmaWxlX2lkIGNvbnN0ICYgaWQsIAogICAgICAgICAgICAgICAgICAgICAgICAg
Y2VydF9uYW1lIGNvbnN0ICYgbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0
b3I8IGZpbGU8Y2VydD4gPiAmIHRzKQp7CiAgdmVjdG9yPGNlcnQ+IGNlcnRzOwogIGdldF9j
ZXJ0cyhpZC5pbm5lcigpLCBuYW1lLCBjZXJ0cywgImZpbGVfY2VydHMiKTsKICB0cy5jbGVh
cigpOwogIGNvcHkoY2VydHMuYmVnaW4oKSwgY2VydHMuZW5kKCksIGJhY2tfaW5zZXJ0ZXIo
dHMpKTsgICAgCn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRfZmlsZV9jZXJ0cyhjZXJ0X25hbWUg
Y29uc3QgJiBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0PGNlcnRfdmFs
dWU+IGNvbnN0ICYgdmFsLCAKICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvcjwgZmls
ZTxjZXJ0PiA+ICYgdHMpCnsKICB2ZWN0b3I8Y2VydD4gY2VydHM7CiAgZ2V0X2NlcnRzKG5h
bWUsIHZhbCwgY2VydHMsICJmaWxlX2NlcnRzIik7CiAgdHMuY2xlYXIoKTsKICBjb3B5KGNl
cnRzLmJlZ2luKCksIGNlcnRzLmVuZCgpLCBiYWNrX2luc2VydGVyKHRzKSk7ICAKfQoKdm9p
ZCAKZGF0YWJhc2U6OmdldF9maWxlX2NlcnRzKGZpbGVfaWQgY29uc3QgJiBpZCwgCiAgICAg
ICAgICAgICAgICAgICAgICAgICBjZXJ0X25hbWUgY29uc3QgJiBuYW1lLAogICAgICAgICAg
ICAgICAgICAgICAgICAgYmFzZTY0PGNlcnRfdmFsdWU+IGNvbnN0ICYgdmFsLCAKICAgICAg
ICAgICAgICAgICAgICAgICAgIHZlY3RvcjwgZmlsZTxjZXJ0PiA+ICYgdHMpCnsKICB2ZWN0
b3I8Y2VydD4gY2VydHM7CiAgZ2V0X2NlcnRzKGlkLmlubmVyKCksIG5hbWUsIHZhbCwgY2Vy
dHMsICJmaWxlX2NlcnRzIik7CiAgdHMuY2xlYXIoKTsKICBjb3B5KGNlcnRzLmJlZ2luKCks
IGNlcnRzLmVuZCgpLCBiYWNrX2luc2VydGVyKHRzKSk7ICAKfQoKdm9pZCAKZGF0YWJhc2U6
OmdldF9maWxlX2NlcnRzKGZpbGVfaWQgY29uc3QgJiBpZCwgCiAgICAgICAgICAgICAgICAg
ICAgICAgICB2ZWN0b3I8IGZpbGU8Y2VydD4gPiAmIHRzKQp7IAogIHZlY3RvcjxjZXJ0PiBj
ZXJ0czsKICBnZXRfY2VydHMoaWQuaW5uZXIoKSwgY2VydHMsICJmaWxlX2NlcnRzIik7IAog
IHRzLmNsZWFyKCk7CiAgY29weShjZXJ0cy5iZWdpbigpLCBjZXJ0cy5lbmQoKSwgYmFja19p
bnNlcnRlcih0cykpOwp9CgoKYm9vbCAKZGF0YWJhc2U6OmZpbGVfY2VydF9leGlzdHMoaGV4
ZW5jPGlkPiBjb25zdCAmIGhhc2gpCnsKICByZXN1bHRzIHJlczsKICB2ZWN0b3I8Y2VydD4g
Y2VydHM7CiAgZmV0Y2gocmVzLCBvbmVfY29sLCBhbnlfcm93cywgCiAgICAgICAgIlNFTEVD
VCBpZCAiCiAgICAgICAgIkZST00gZmlsZV9jZXJ0cyAiCiAgICAgICAgIldIRVJFIGhhc2gg
PSAnJXEnIiwgCiAgICAgICAgaGFzaCgpLmNfc3RyKCkpOwogIEkocmVzLnNpemUoKSA9PSAw
IHx8IHJlcy5zaXplKCkgPT0gMSk7CiAgcmV0dXJuIChyZXMuc2l6ZSgpID09IDEpOwp9Cgp2
b2lkIApkYXRhYmFzZTo6Z2V0X2ZpbGVfY2VydChoZXhlbmM8aWQ+IGNvbnN0ICYgaGFzaCwK
ICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTxjZXJ0PiAmIGMpCnsKICByZXN1bHRzIHJl
czsKICB2ZWN0b3I8Y2VydD4gY2VydHM7CiAgZmV0Y2gocmVzLCA1LCBvbmVfcm93LCAKICAg
ICAgICAiU0VMRUNUIGlkLCBuYW1lLCB2YWx1ZSwga2V5cGFpciwgc2lnbmF0dXJlICIKICAg
ICAgICAiRlJPTSBmaWxlX2NlcnRzICIKICAgICAgICAiV0hFUkUgaGFzaCA9ICclcSciLCAK
ICAgICAgICBoYXNoKCkuY19zdHIoKSk7CiAgcmVzdWx0c190b19jZXJ0cyhyZXMsIGNlcnRz
KTsKICBJKGNlcnRzLnNpemUoKSA9PSAxKTsKICBjID0gZmlsZTxjZXJ0PihjZXJ0c1swXSk7
Cn0KCgoKdm9pZCAKZGF0YWJhc2U6OmdldF9yZXZpc2lvbl9jZXJ0cyhjZXJ0X25hbWUgY29u
c3QgJiBuYW1lLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3RvcjwgcmV2aXNp
b248Y2VydD4gPiAmIHRzKQp7CiAgdmVjdG9yPGNlcnQ+IGNlcnRzOwogIGdldF9jZXJ0cyhu
YW1lLCBjZXJ0cywgInJldmlzaW9uX2NlcnRzIik7CiAgdHMuY2xlYXIoKTsKICBjb3B5KGNl
cnRzLmJlZ2luKCksIGNlcnRzLmVuZCgpLCBiYWNrX2luc2VydGVyKHRzKSk7ICAKfQoKdm9p
ZCAKZGF0YWJhc2U6OmdldF9yZXZpc2lvbl9jZXJ0cyhyZXZpc2lvbl9pZCBjb25zdCAmIGlk
LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfbmFtZSBjb25zdCAmIG5hbWUs
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yPCByZXZpc2lvbjxjZXJ0PiA+
ICYgdHMpCnsKICB2ZWN0b3I8Y2VydD4gY2VydHM7CiAgZ2V0X2NlcnRzKGlkLmlubmVyKCks
IG5hbWUsIGNlcnRzLCAicmV2aXNpb25fY2VydHMiKTsKICB0cy5jbGVhcigpOwogIGNvcHko
Y2VydHMuYmVnaW4oKSwgY2VydHMuZW5kKCksIGJhY2tfaW5zZXJ0ZXIodHMpKTsgIAp9Cgp2
b2lkIApkYXRhYmFzZTo6Z2V0X3JldmlzaW9uX2NlcnRzKHJldmlzaW9uX2lkIGNvbnN0ICYg
aWQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9uYW1lIGNvbnN0ICYgbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NDxjZXJ0X3ZhbHVlPiBjb25z
dCAmIHZhbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3I8IHJldmlzaW9u
PGNlcnQ+ID4gJiB0cykKewogIHZlY3RvcjxjZXJ0PiBjZXJ0czsKICBnZXRfY2VydHMoaWQu
aW5uZXIoKSwgbmFtZSwgdmFsLCBjZXJ0cywgInJldmlzaW9uX2NlcnRzIik7CiAgdHMuY2xl
YXIoKTsKICBjb3B5KGNlcnRzLmJlZ2luKCksIGNlcnRzLmVuZCgpLCBiYWNrX2luc2VydGVy
KHRzKSk7ICAKfQoKdm9pZCAKZGF0YWJhc2U6OmdldF9yZXZpc2lvbl9jZXJ0cyhjZXJ0X25h
bWUgY29uc3QgJiBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0PGNl
cnRfdmFsdWU+IGNvbnN0ICYgdmFsLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZl
Y3RvcjwgcmV2aXNpb248Y2VydD4gPiAmIHRzKQp7CiAgdmVjdG9yPGNlcnQ+IGNlcnRzOwog
IGdldF9jZXJ0cyhuYW1lLCB2YWwsIGNlcnRzLCAicmV2aXNpb25fY2VydHMiKTsKICB0cy5j
bGVhcigpOwogIGNvcHkoY2VydHMuYmVnaW4oKSwgY2VydHMuZW5kKCksIGJhY2tfaW5zZXJ0
ZXIodHMpKTsgIAp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X3JldmlzaW9uX2NlcnRzKHJldmlz
aW9uX2lkIGNvbnN0ICYgaWQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9y
PCByZXZpc2lvbjxjZXJ0PiA+ICYgdHMpCnsgCiAgdmVjdG9yPGNlcnQ+IGNlcnRzOwogIGdl
dF9jZXJ0cyhpZC5pbm5lcigpLCBjZXJ0cywgInJldmlzaW9uX2NlcnRzIik7IAogIHRzLmNs
ZWFyKCk7CiAgY29weShjZXJ0cy5iZWdpbigpLCBjZXJ0cy5lbmQoKSwgYmFja19pbnNlcnRl
cih0cykpOwp9Cgp2b2lkIApkYXRhYmFzZTo6Z2V0X3JldmlzaW9uX2NlcnQoaGV4ZW5jPGlk
PiBjb25zdCAmIGhhc2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uPGNl
cnQ+ICYgYykKewogIHJlc3VsdHMgcmVzOwogIHZlY3RvcjxjZXJ0PiBjZXJ0czsKICBmZXRj
aChyZXMsIDUsIG9uZV9yb3csIAogICAgICAgICJTRUxFQ1QgaWQsIG5hbWUsIHZhbHVlLCBr
ZXlwYWlyLCBzaWduYXR1cmUgIgogICAgICAgICJGUk9NIHJldmlzaW9uX2NlcnRzICIKICAg
ICAgICAiV0hFUkUgaGFzaCA9ICclcSciLCAKICAgICAgICBoYXNoKCkuY19zdHIoKSk7CiAg
cmVzdWx0c190b19jZXJ0cyhyZXMsIGNlcnRzKTsKICBJKGNlcnRzLnNpemUoKSA9PSAxKTsK
ICBjID0gcmV2aXNpb248Y2VydD4oY2VydHNbMF0pOwp9Cgpib29sIApkYXRhYmFzZTo6cmV2
aXNpb25fY2VydF9leGlzdHMoaGV4ZW5jPGlkPiBjb25zdCAmIGhhc2gpCnsKICByZXN1bHRz
IHJlczsKICB2ZWN0b3I8Y2VydD4gY2VydHM7CiAgZmV0Y2gocmVzLCBvbmVfY29sLCBhbnlf
cm93cywgCiAgICAgICAgIlNFTEVDVCBpZCAiCiAgICAgICAgIkZST00gcmV2aXNpb25fY2Vy
dHMgIgogICAgICAgICJXSEVSRSBoYXNoID0gJyVxJyIsIAogICAgICAgIGhhc2goKS5jX3N0
cigpKTsKICBJKHJlcy5zaXplKCkgPT0gMCB8fCByZXMuc2l6ZSgpID09IDEpOwogIHJldHVy
biAocmVzLnNpemUoKSA9PSAxKTsKfQoKYm9vbCAKZGF0YWJhc2U6Om1hbmlmZXN0X2NlcnRf
ZXhpc3RzKGhleGVuYzxpZD4gY29uc3QgJiBoYXNoKQp7CiAgcmVzdWx0cyByZXM7CiAgdmVj
dG9yPGNlcnQ+IGNlcnRzOwogIGZldGNoKHJlcywgb25lX2NvbCwgYW55X3Jvd3MsIAogICAg
ICAgICJTRUxFQ1QgaWQgIgogICAgICAgICJGUk9NIG1hbmlmZXN0X2NlcnRzICIKICAgICAg
ICAiV0hFUkUgaGFzaCA9ICclcSciLCAKICAgICAgICBoYXNoKCkuY19zdHIoKSk7CiAgSShy
ZXMuc2l6ZSgpID09IDAgfHwgcmVzLnNpemUoKSA9PSAxKTsKICByZXR1cm4gKHJlcy5zaXpl
KCkgPT0gMSk7Cn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRfbWFuaWZlc3RfY2VydChoZXhlbmM8
aWQ+IGNvbnN0ICYgaGFzaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0
PGNlcnQ+ICYgYykKewogIHJlc3VsdHMgcmVzOwogIHZlY3RvcjxjZXJ0PiBjZXJ0czsKICBm
ZXRjaChyZXMsIDUsIG9uZV9yb3csIAogICAgICAgICJTRUxFQ1QgaWQsIG5hbWUsIHZhbHVl
LCBrZXlwYWlyLCBzaWduYXR1cmUgIgogICAgICAgICJGUk9NIG1hbmlmZXN0X2NlcnRzICIK
ICAgICAgICAiV0hFUkUgaGFzaCA9ICclcSciLCAKICAgICAgICBoYXNoKCkuY19zdHIoKSk7
CiAgcmVzdWx0c190b19jZXJ0cyhyZXMsIGNlcnRzKTsKICBJKGNlcnRzLnNpemUoKSA9PSAx
KTsKICBjID0gbWFuaWZlc3Q8Y2VydD4oY2VydHNbMF0pOwp9Cgp2b2lkIApkYXRhYmFzZTo6
Z2V0X21hbmlmZXN0X2NlcnRzKG1hbmlmZXN0X2lkIGNvbnN0ICYgaWQsIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZlY3RvcjwgbWFuaWZlc3Q8Y2VydD4gPiAmIHRzKQp7IAog
IHZlY3RvcjxjZXJ0PiBjZXJ0czsKICBnZXRfY2VydHMoaWQuaW5uZXIoKSwgY2VydHMsICJt
YW5pZmVzdF9jZXJ0cyIpOyAKICB0cy5jbGVhcigpOwogIGNvcHkoY2VydHMuYmVnaW4oKSwg
Y2VydHMuZW5kKCksIGJhY2tfaW5zZXJ0ZXIodHMpKTsKfQoKCnZvaWQgCmRhdGFiYXNlOjpn
ZXRfbWFuaWZlc3RfY2VydHMoY2VydF9uYW1lIGNvbnN0ICYgbmFtZSwgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2ZWN0b3I8IG1hbmlmZXN0PGNlcnQ+ID4gJiB0cykKewogIHZl
Y3RvcjxjZXJ0PiBjZXJ0czsKICBnZXRfY2VydHMobmFtZSwgY2VydHMsICJtYW5pZmVzdF9j
ZXJ0cyIpOwogIHRzLmNsZWFyKCk7CiAgY29weShjZXJ0cy5iZWdpbigpLCBjZXJ0cy5lbmQo
KSwgYmFja19pbnNlcnRlcih0cykpOyAgCn0KCnZvaWQgCmRhdGFiYXNlOjpnZXRfbWFuaWZl
c3RfY2VydHMobWFuaWZlc3RfaWQgY29uc3QgJiBpZCwgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2VydF9uYW1lIGNvbnN0ICYgbmFtZSwgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmVjdG9yPCBtYW5pZmVzdDxjZXJ0PiA+ICYgdHMpCnsKICB2ZWN0b3I8Y2Vy
dD4gY2VydHM7CiAgZ2V0X2NlcnRzKGlkLmlubmVyKCksIG5hbWUsIGNlcnRzLCAibWFuaWZl
c3RfY2VydHMiKTsKICB0cy5jbGVhcigpOwogIGNvcHkoY2VydHMuYmVnaW4oKSwgY2VydHMu
ZW5kKCksIGJhY2tfaW5zZXJ0ZXIodHMpKTsgIAp9CgoKLy8gY29tcGxldGlvbnMKdm9pZCAK
ZGF0YWJhc2U6OmNvbXBsZXRlKHN0cmluZyBjb25zdCAmIHBhcnRpYWwsCiAgICAgICAgICAg
ICAgICAgICBzZXQ8cmV2aXNpb25faWQ+ICYgY29tcGxldGlvbnMpCnsKICByZXN1bHRzIHJl
czsKICBjb21wbGV0aW9ucy5jbGVhcigpOwoKICBmZXRjaChyZXMsIDEsIGFueV9yb3dzLAog
ICAgICAgICJTRUxFQ1QgaWQgRlJPTSByZXZpc2lvbnMgV0hFUkUgaWQgR0xPQiAnJXEqJyIs
CiAgICAgICAgcGFydGlhbC5jX3N0cigpKTsKCiAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBy
ZXMuc2l6ZSgpOyArK2kpCiAgICBjb21wbGV0aW9ucy5pbnNlcnQocmV2aXNpb25faWQocmVz
W2ldWzBdKSk7ICAKfQoKCnZvaWQgCmRhdGFiYXNlOjpjb21wbGV0ZShzdHJpbmcgY29uc3Qg
JiBwYXJ0aWFsLAogICAgICAgICAgICAgICAgICAgc2V0PG1hbmlmZXN0X2lkPiAmIGNvbXBs
ZXRpb25zKQp7CiAgcmVzdWx0cyByZXM7CiAgY29tcGxldGlvbnMuY2xlYXIoKTsKCiAgZmV0
Y2gocmVzLCAxLCBhbnlfcm93cywKICAgICAgICAiU0VMRUNUIGlkIEZST00gbWFuaWZlc3Rz
IFdIRVJFIGlkIEdMT0IgJyVxKiciLAogICAgICAgIHBhcnRpYWwuY19zdHIoKSk7CgogIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzLnNpemUoKTsgKytpKQogICAgY29tcGxldGlvbnMu
aW5zZXJ0KG1hbmlmZXN0X2lkKHJlc1tpXVswXSkpOyAgCiAgCiAgcmVzLmNsZWFyKCk7Cgog
IGZldGNoKHJlcywgMSwgYW55X3Jvd3MsCiAgICAgICAgIlNFTEVDVCBpZCBGUk9NIG1hbmlm
ZXN0X2RlbHRhcyBXSEVSRSBpZCBHTE9CICclcSonIiwKICAgICAgICBwYXJ0aWFsLmNfc3Ry
KCkpOwoKICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlcy5zaXplKCk7ICsraSkKICAgIGNv
bXBsZXRpb25zLmluc2VydChtYW5pZmVzdF9pZChyZXNbaV1bMF0pKTsgIAp9Cgp2b2lkIApk
YXRhYmFzZTo6Y29tcGxldGUoc3RyaW5nIGNvbnN0ICYgcGFydGlhbCwKICAgICAgICAgICAg
ICAgICAgIHNldDxmaWxlX2lkPiAmIGNvbXBsZXRpb25zKQp7CiAgcmVzdWx0cyByZXM7CiAg
Y29tcGxldGlvbnMuY2xlYXIoKTsKCiAgZmV0Y2gocmVzLCAxLCBhbnlfcm93cywKICAgICAg
ICAiU0VMRUNUIGlkIEZST00gZmlsZXMgV0hFUkUgaWQgR0xPQiAnJXEqJyIsCiAgICAgICAg
cGFydGlhbC5jX3N0cigpKTsKCiAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXMuc2l6ZSgp
OyArK2kpCiAgICBjb21wbGV0aW9ucy5pbnNlcnQoZmlsZV9pZChyZXNbaV1bMF0pKTsgIAog
IAogIHJlcy5jbGVhcigpOwoKICBmZXRjaChyZXMsIDEsIGFueV9yb3dzLAogICAgICAgICJT
RUxFQ1QgaWQgRlJPTSBmaWxlX2RlbHRhcyBXSEVSRSBpZCBHTE9CICclcSonIiwKICAgICAg
ICBwYXJ0aWFsLmNfc3RyKCkpOwoKICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlcy5zaXpl
KCk7ICsraSkKICAgIGNvbXBsZXRpb25zLmluc2VydChmaWxlX2lkKHJlc1tpXVswXSkpOyAg
Cn0KCnVzaW5nIGNvbW1hbmRzOjpzZWxlY3Rvcl90eXBlOwoKc3RhdGljIHZvaWQgc2VsZWN0
b3JfdG9fY2VydG5hbWUoc2VsZWN0b3JfdHlwZSB0eSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyaW5nICYgcykKewogIHN3aXRjaCAodHkpCiAgICB7CiAgICBjYXNl
IGNvbW1hbmRzOjpzZWxfYXV0aG9yOgogICAgICBzID0gYXV0aG9yX2NlcnRfbmFtZTsKICAg
ICAgYnJlYWs7CiAgICBjYXNlIGNvbW1hbmRzOjpzZWxfYnJhbmNoOgogICAgICBzID0gYnJh
bmNoX2NlcnRfbmFtZTsKICAgICAgYnJlYWs7CiAgICBjYXNlIGNvbW1hbmRzOjpzZWxfZGF0
ZToKICAgICAgcyA9IGRhdGVfY2VydF9uYW1lOwogICAgICBicmVhazsKICAgIGNhc2UgY29t
bWFuZHM6OnNlbF90YWc6CiAgICAgIHMgPSB0YWdfY2VydF9uYW1lOwogICAgICBicmVhazsK
ICAgIGNhc2UgY29tbWFuZHM6OnNlbF9pZGVudDoKICAgIGNhc2UgY29tbWFuZHM6OnNlbF91
bmtub3duOgogICAgICBJKGZhbHNlKTsgLy8gZG9uJ3QgZG8gdGhpcy4KICAgICAgYnJlYWs7
CiAgICB9Cn0KCnZvaWQgZGF0YWJhc2U6OmNvbXBsZXRlKHNlbGVjdG9yX3R5cGUgdHksCiAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyBjb25zdCAmIHBhcnRpYWwsCiAgICAgICAg
ICAgICAgICAgICAgICAgIHZlY3RvcjxwYWlyPHNlbGVjdG9yX3R5cGUsIHN0cmluZz4gPiBj
b25zdCAmIGxpbWl0LAogICAgICAgICAgICAgICAgICAgICAgICBzZXQ8c3RyaW5nPiAmIGNv
bXBsZXRpb25zKQp7CiAgY29tcGxldGlvbnMuY2xlYXIoKTsKCiAgLy8gc3RlcCAxOiB0aGUg
bGltaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBTUUwgc2VsZWN0IHN0YXRlbWVudCB3aGlj
aAogIC8vIHNlbGVjdHMgYSBzZXQgb2YgSURzIGZyb20gdGhlIG1hbmlmZXN0X2NlcnRzIHRh
YmxlIHdoaWNoIG1hdGNoIHRoZQogIC8vIGxpbWl0LiAgdGhpcyBpcyBkb25lIGJ5IGJ1aWxk
aW5nIGFuIFNRTCBzZWxlY3Qgc3RhdGVtZW50IGZvciBlYWNoIHRlcm0KICAvLyBpbiB0aGUg
bGltaXQgYW5kIHRoZW4gSU5URVJTRUNUaW5nIHRoZW0gYWxsLgoKICBzdHJpbmcgbGltID0g
IigiOwogIGJvb2wgZmlyc3RfbGltaXQgPSB0cnVlOwogIGZvciAodmVjdG9yPHBhaXI8c2Vs
ZWN0b3JfdHlwZSwgc3RyaW5nPiA+Ojpjb25zdF9pdGVyYXRvciBpID0gbGltaXQuYmVnaW4o
KTsKICAgICAgIGkgIT0gbGltaXQuZW5kKCk7ICsraSkKICAgIHsKICAgICAgaWYgKGZpcnN0
X2xpbWl0KQogICAgICAgIGZpcnN0X2xpbWl0ID0gZmFsc2U7CiAgICAgIGVsc2UKICAgICAg
ICBsaW0gKz0gIiBJTlRFUlNFQ1QgIjsKICAgICAgCiAgICAgIGlmIChpLT5maXJzdCA9PSBj
b21tYW5kczo6c2VsX2lkZW50KQogICAgICAgIHsKICAgICAgICAgIGxpbSArPSAiU0VMRUNU
IGlkIEZST00gcmV2aXNpb25fY2VydHMgIjsKICAgICAgICAgIGxpbSArPSAoRigiV0hFUkUg
aWQgR0xPQiAnJXMqJyIpIAogICAgICAgICAgICAgICAgICAlIGktPnNlY29uZCkuc3RyKCk7
CiAgICAgICAgfQogICAgICBlbHNlIGlmIChpLT5maXJzdCA9PSBjb21tYW5kczo6c2VsX3Vu
a25vd24pCiAgICAgICAgewogICAgICAgICAgbGltICs9ICJTRUxFQ1QgaWQgRlJPTSByZXZp
c2lvbl9jZXJ0cyAiOwogICAgICAgICAgbGltICs9IChGKCIgV0hFUkUgKG5hbWU9JyVzJyBP
UiBuYW1lPSclcycgT1IgbmFtZT0nJXMnKSIpCiAgICAgICAgICAgICAgICAgICUgYXV0aG9y
X2NlcnRfbmFtZSAKICAgICAgICAgICAgICAgICAgJSB0YWdfY2VydF9uYW1lIAogICAgICAg
ICAgICAgICAgICAlIGJyYW5jaF9jZXJ0X25hbWUpLnN0cigpOwogICAgICAgICAgbGltICs9
IChGKCIgQU5EIHVuYmFzZTY0KHZhbHVlKSBnbG9iICcqJXMqJyIpCiAgICAgICAgICAgICAg
ICAgICUgaS0+c2Vjb25kKS5zdHIoKTsgICAgIAogICAgICAgIH0KICAgICAgZWxzZQogICAg
ICAgIHsKICAgICAgICAgIHN0cmluZyBjZXJ0bmFtZTsKICAgICAgICAgIHNlbGVjdG9yX3Rv
X2NlcnRuYW1lKGktPmZpcnN0LCBjZXJ0bmFtZSk7CiAgICAgICAgICBsaW0gKz0gIlNFTEVD
VCBpZCBGUk9NIHJldmlzaW9uX2NlcnRzICI7CiAgICAgICAgICBsaW0gKz0gKEYoIldIRVJF
IG5hbWU9JyVzJyBBTkQgdW5iYXNlNjQodmFsdWUpIGdsb2IgJyolcyonIikKICAgICAgICAg
ICAgICAgICAgJSBjZXJ0bmFtZSAlIGktPnNlY29uZCkuc3RyKCk7CiAgICAgICAgfQogICAg
fQogIGxpbSArPSAiKSI7CiAgCiAgLy8gc3RlcCAyOiBkZXBlbmRpbmcgb24gd2hhdCB3ZSd2
ZSBiZWVuIGFza2VkIHRvIGRpc2FtYmlndWF0ZSwgd2UKICAvLyB3aWxsIGNvbXBsZXRlIGVp
dGhlciBzb21lIGlkZW50cywgb3IgY2VydCB2YWx1ZXMsIG9yICJ1bmtub3duIgogIC8vIHdo
aWNoIGdlbmVyYWxseSBtZWFucyAiYXV0aG9yLCB0YWcgb3IgYnJhbmNoIgoKICBzdHJpbmcg
cXVlcnk7CiAgaWYgKHR5ID09IGNvbW1hbmRzOjpzZWxfaWRlbnQpCiAgICB7CiAgICAgIHF1
ZXJ5ID0gKEYoIlNFTEVDVCBpZCBGUk9NICVzIikgJSBsaW0pLnN0cigpOwogICAgfQogIGVs
c2UgCiAgICB7CiAgICAgIHF1ZXJ5ID0gIlNFTEVDVCB2YWx1ZSBGUk9NIHJldmlzaW9uX2Nl
cnRzIFdIRVJFIjsKICAgICAgaWYgKHR5ID09IGNvbW1hbmRzOjpzZWxfdW5rbm93bikKICAg
ICAgICB7ICAgICAgICAgICAgICAgCiAgICAgICAgICBxdWVyeSArPSAKICAgICAgICAgICAg
KEYoIiAobmFtZT0nJXMnIE9SIG5hbWU9JyVzJyBPUiBuYW1lPSclcycpIikKICAgICAgICAg
ICAgICUgYXV0aG9yX2NlcnRfbmFtZSAKICAgICAgICAgICAgICUgdGFnX2NlcnRfbmFtZSAK
ICAgICAgICAgICAgICUgYnJhbmNoX2NlcnRfbmFtZSkuc3RyKCk7CiAgICAgICAgfQogICAg
ICBlbHNlCiAgICAgICAgewogICAgICAgICAgc3RyaW5nIGNlcnRuYW1lOwogICAgICAgICAg
c2VsZWN0b3JfdG9fY2VydG5hbWUodHksIGNlcnRuYW1lKTsKICAgICAgICAgIHF1ZXJ5ICs9
IAogICAgICAgICAgICAoRigiIChuYW1lPSclcycpIikgJSBjZXJ0bmFtZSkuc3RyKCk7CiAg
ICAgICAgfQogICAgICAgIAogICAgICBxdWVyeSArPSAoRigiIEFORCAodW5iYXNlNjQodmFs
dWUpIEdMT0IgJyolcyonKSIpICUgcGFydGlhbCkuc3RyKCk7CiAgICAgIHF1ZXJ5ICs9IChG
KCIgQU5EIChpZCBJTiAlcykiKSAlIGxpbSkuc3RyKCk7CiAgICB9CgogIHJlc3VsdHMgcmVz
OwogIGZldGNoKHJlcywgb25lX2NvbCwgYW55X3Jvd3MsIHF1ZXJ5LmNfc3RyKCkpOwogIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzLnNpemUoKTsgKytpKQogICAgewogICAgICBpZiAo
dHkgPT0gY29tbWFuZHM6OnNlbF9pZGVudCkKICAgICAgICBjb21wbGV0aW9ucy5pbnNlcnQo
cmVzW2ldWzBdKTsKICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgIGJhc2U2NDxkYXRh
PiByb3dfZW5jb2RlZChyZXNbaV1bMF0pOwogICAgICAgICAgZGF0YSByb3dfZGVjb2RlZDsK
ICAgICAgICAgIGRlY29kZV9iYXNlNjQocm93X2VuY29kZWQsIHJvd19kZWNvZGVkKTsKICAg
ICAgICAgIGNvbXBsZXRpb25zLmluc2VydChyb3dfZGVjb2RlZCgpKTsKICAgICAgICB9CiAg
ICB9Cn0KCgovLyBtZXJrbGUgbm9kZXMKCmJvb2wgCmRhdGFiYXNlOjptZXJrbGVfbm9kZV9l
eGlzdHMoc3RyaW5nIGNvbnN0ICYgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1dGY4IGNvbnN0ICYgY29sbGVjdGlvbiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhleGVuYzxw
cmVmaXg+IGNvbnN0ICYgcHJlZml4KQp7CiAgcmVzdWx0cyByZXM7CiAgZmV0Y2gocmVzLCBv
bmVfY29sLCBvbmVfcm93LCAKICAgICAgICAiU0VMRUNUIENPVU5UKCopICIKICAgICAgICAi
RlJPTSBtZXJrbGVfbm9kZXMgIgogICAgICAgICJXSEVSRSB0eXBlID0gJyVxJyAiCiAgICAg
ICAgIkFORCBjb2xsZWN0aW9uID0gJyVxJyAiCiAgICAgICAgIkFORCBsZXZlbCA9ICVkICIK
ICAgICAgICAiQU5EIHByZWZpeCA9ICclcScgIiwKICAgICAgICB0eXBlLmNfc3RyKCksIGNv
bGxlY3Rpb24oKS5jX3N0cigpLCBsZXZlbCwgcHJlZml4KCkuY19zdHIoKSk7CiAgc2l6ZV90
IG5fbm9kZXMgPSBsZXhpY2FsX2Nhc3Q8c2l6ZV90PihyZXNbMF1bMF0pOwogIEkobl9ub2Rl
cyA9PSAwIHx8IG5fbm9kZXMgPT0gMSk7CiAgcmV0dXJuIG5fbm9kZXMgPT0gMTsKfQoKdm9p
ZCAKZGF0YWJhc2U6OmdldF9tZXJrbGVfbm9kZShzdHJpbmcgY29uc3QgJiB0eXBlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIHV0ZjggY29uc3QgJiBjb2xsZWN0aW9uLCAKICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGV4ZW5jPHByZWZpeD4gY29uc3QgJiBwcmVmaXgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgYmFzZTY0PG1lcmtsZT4gJiBub2RlKQp7CiAgcmVzdWx0cyByZXM7CiAgZmV0
Y2gocmVzLCBvbmVfY29sLCBvbmVfcm93LCAKICAgICAgICAiU0VMRUNUIGJvZHkgIgogICAg
ICAgICJGUk9NIG1lcmtsZV9ub2RlcyAiCiAgICAgICAgIldIRVJFIHR5cGUgPSAnJXEnICIK
ICAgICAgICAiQU5EIGNvbGxlY3Rpb24gPSAnJXEnICIKICAgICAgICAiQU5EIGxldmVsID0g
JWQgIgogICAgICAgICJBTkQgcHJlZml4ID0gJyVxJyIsCiAgICAgICAgdHlwZS5jX3N0cigp
LCBjb2xsZWN0aW9uKCkuY19zdHIoKSwgbGV2ZWwsIHByZWZpeCgpLmNfc3RyKCkpOwogIG5v
ZGUgPSByZXNbMF1bMF07Cn0KCnZvaWQgCmRhdGFiYXNlOjpwdXRfbWVya2xlX25vZGUoc3Ry
aW5nIGNvbnN0ICYgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICB1dGY4IGNvbnN0
ICYgY29sbGVjdGlvbiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVs
LAogICAgICAgICAgICAgICAgICAgICAgICAgIGhleGVuYzxwcmVmaXg+IGNvbnN0ICYgcHJl
Zml4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgIGJhc2U2NDxtZXJrbGU+IGNvbnN0ICYgbm9kZSkKewogIGV4ZWN1
dGUoIklOU0VSVCBPUiBSRVBMQUNFICIKICAgICAgICAgICJJTlRPIG1lcmtsZV9ub2RlcyAi
CiAgICAgICAgICAiVkFMVUVTICgnJXEnLCAnJXEnLCAlZCwgJyVxJywgJyVxJykiLAogICAg
ICAgICAgdHlwZS5jX3N0cigpLCBjb2xsZWN0aW9uKCkuY19zdHIoKSwgbGV2ZWwsIHByZWZp
eCgpLmNfc3RyKCksIG5vZGUoKS5jX3N0cigpKTsKfQoKdm9pZCAKZGF0YWJhc2U6OmVyYXNl
X21lcmtsZV9ub2RlcyhzdHJpbmcgY29uc3QgJiB0eXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHV0ZjggY29uc3QgJiBjb2xsZWN0aW9uKQp7CiAgZXhlY3V0ZSgiREVMRVRF
IEZST00gbWVya2xlX25vZGVzICIKICAgICAgICAgICJXSEVSRSB0eXBlID0gJyVxJyAiCiAg
ICAgICAgICAiQU5EIGNvbGxlY3Rpb24gPSAnJXEnIiwKICAgICAgICAgIHR5cGUuY19zdHIo
KSwgY29sbGVjdGlvbigpLmNfc3RyKCkpOwp9CgovLyB0cmFuc2FjdGlvbiBndWFyZHMKCnRy
YW5zYWN0aW9uX2d1YXJkOjp0cmFuc2FjdGlvbl9ndWFyZChkYXRhYmFzZSAmIGQpIDogY29t
bWl0dGVkKGZhbHNlKSwgZGIoZCkgCnsKICBkYi5iZWdpbl90cmFuc2FjdGlvbigpOwp9CnRy
YW5zYWN0aW9uX2d1YXJkOjp+dHJhbnNhY3Rpb25fZ3VhcmQoKQp7CiAgaWYgKGNvbW1pdHRl
ZCkKICAgIGRiLmNvbW1pdF90cmFuc2FjdGlvbigpOwogIGVsc2UKICAgIGRiLnJvbGxiYWNr
X3RyYW5zYWN0aW9uKCk7Cn0KCnZvaWQgCnRyYW5zYWN0aW9uX2d1YXJkOjpjb21taXQoKQp7
CiAgY29tbWl0dGVkID0gdHJ1ZTsKfQoK
_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge_1.at:4069: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o parent parent.b64
else
  \$UNB64_COMMAND <parent.b64 >parent
fi
"
echo t_merge_1.at:4069 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o parent parent.b64
else
  $UNB64_COMMAND <parent.b64 >parent
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o parent parent.b64
else
  $UNB64_COMMAND <parent.b64 >parent
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_1.at:4069: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_1.at:4070: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o left left.b64
else
  \$UNB64_COMMAND <left.b64 >left
fi
"
echo t_merge_1.at:4070 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o left left.b64
else
  $UNB64_COMMAND <left.b64 >left
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o left left.b64
else
  $UNB64_COMMAND <left.b64 >left
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_1.at:4070: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_1.at:4071: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o right right.b64
else
  \$UNB64_COMMAND <right.b64 >right
fi
"
echo t_merge_1.at:4071 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o right right.b64
else
  $UNB64_COMMAND <right.b64 >right
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o right right.b64
else
  $UNB64_COMMAND <right.b64 >right
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_1.at:4071: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_1.at:4072: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o correct correct.b64
else
  \$UNB64_COMMAND <correct.b64 >correct
fi
"
echo t_merge_1.at:4072 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o correct correct.b64
else
  $UNB64_COMMAND <correct.b64 >correct
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o correct correct.b64
else
  $UNB64_COMMAND <correct.b64 >correct
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_1.at:4072: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_1.at:4074: cp -f parent testfile"
echo t_merge_1.at:4074 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f parent testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f parent testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_1.at:4074: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_1.at:4075: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_merge_1.at:4075 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_1.at:4075: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_1.at:4076: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge_1.at:4076 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_1.at:4076: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


PARENT_SHA=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_merge_1.at:4079: cp -f left testfile"
echo t_merge_1.at:4079 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f left testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f left testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_1.at:4079: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_1.at:4080: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge_1.at:4080 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_1.at:4080: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_merge_1.at:4082: rm -rf _MTN.old"
echo t_merge_1.at:4082 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_1.at:4082: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_1.at:4082: mv  _MTN _MTN.old"
echo t_merge_1.at:4082 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_1.at:4082: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_1.at:4082: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$PARENT_SHA ."
echo t_merge_1.at:4082 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$PARENT_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$PARENT_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$PARENT_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_1.at:4082: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_merge_1.at:4082: test \$PROBE_R_SHA = \$PARENT_SHA"
echo t_merge_1.at:4082 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $PARENT_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $PARENT_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $PARENT_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_1.at:4082: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_1.at:4084: cp -f right testfile"
echo t_merge_1.at:4084 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f right testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f right testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_1.at:4084: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_1.at:4085: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge_1.at:4085 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_1.at:4085: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_1.at:4087: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge"
echo t_merge_1.at:4087 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_1.at:4087: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_1.at:4089: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_merge_1.at:4089 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_1.at:4089: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_1.at:4090: cmp testfile correct"
echo t_merge_1.at:4090 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile correct ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile correct ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_1.at:4090: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  51 ) # 51. t_merge_2.at:1: test a merge 2
    at_setup_line='t_merge_2.at:1'
    at_desc='test a merge 2'
    $at_quiet $ECHO_N " 51: test a merge 2                               $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "51. t_merge_2.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge_2.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_merge_2.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_2.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_2.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_merge_2.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_2.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_2.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_merge_2.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_2.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_2.at:2: rm test_keys"
echo t_merge_2.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_2.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_merge_2.at:4: echo \$UNB64_COMMAND"
echo t_merge_2.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_2.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# Another real merge error. This is the diff between the correct
# result and the file produced by the merge:
#
# --- correct
# +++ testfile
# @@ -336,10 +336,10 @@
#          {
#            L(F("found node %d, ancestor of left %s and right %s\n")
#              % anc % left % right);
# -          return true;
#          }
#      }
#  //      dump_bitset_map("ancestors", ancestors);
# +//      dump_bitset_map("dominators", dominators);
#  //      dump_bitset_map("parents", parents);
#    return false;
#  }

cat >parent.b64 <<'_ATEOF'
Ly8gY29weXJpZ2h0IChDKSAyMDA0IGdyYXlkb24gaG9hcmUgPGdyYXlkb25AcG9ib3guY29tPgov
LyBhbGwgcmlnaHRzIHJlc2VydmVkLgovLyBsaWNlbnNlZCB0byB0aGUgcHVibGljIHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIEdQTCAoPj0gMikKLy8gc2VlIHRoZSBmaWxlIENPUFlJTkcgZm9y
IGRldGFpbHMKCiNpbmNsdWRlIDxjY3R5cGU+CiNpbmNsdWRlIDxjc3RkbGliPgojaW5jbHVkZSA8
aW9zdHJlYW0+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDxzc3RyZWFt
PgojaW5jbHVkZSA8c3RyaW5nPgoKI2luY2x1ZGUgPGJvb3N0L2xleGljYWxfY2FzdC5ocHA+CiNp
bmNsdWRlIDxib29zdC9keW5hbWljX2JpdHNldC5ocHA+CiNpbmNsdWRlIDxib29zdC9zaGFyZWRf
cHRyLmhwcD4KCiNpbmNsdWRlICJiYXNpY19pby5oaCIKI2luY2x1ZGUgImNoYW5nZV9zZXQuaGgi
CiNpbmNsdWRlICJjb25zdGFudHMuaGgiCiNpbmNsdWRlICJyZXZpc2lvbi5oaCIKI2luY2x1ZGUg
InNhbml0eS5oaCIKI2luY2x1ZGUgInRyYW5zZm9ybXMuaGgiCiNpbmNsdWRlICJ2b2NhYi5oaCIK
CgovLyBjYWxjdWxhdGluZyBsZWFzdCBjb21tb24gYW5jZXN0b3JzIGlzIGEgZGVsaWNhdGUgdGhp
bmcuCi8vIAovLyBpdCB0dXJucyBvdXQgdGhhdCB3ZSBjYW5ub3QgY2hvb3NlIHRoZSBzaW1wbGUg
ImxlYXN0IGNvbW1vbiBhbmNlc3RvciIKLy8gZm9yIHB1cnBvc2VzIG9mIGEgbWVyZ2UsIGJlY2F1
c2UgaXQgaXMgcG9zc2libGUgdGhhdCB0aGVyZSBhcmUgdHdvCi8vIGVxdWFsbHkgcmVhY2hhYmxl
IGNvbW1vbiBhbmNlc3RvcnMsIGFuZCB0aGlzIHByb2R1Y2VzIGFtYmlndWl0eSBpbiB0aGUKLy8g
bWVyZ2UuIHRoZSByZXN1bHQgLS0gaW4gYSBwYXRob2xvZ2ljYWwgY2FzZSAtLSBpcyBzaWxlbnRs
eSBhY2NlcHRpbmcgb25lCi8vIHNldCBvZiBlZGl0cyB3aGlsZSBkaXNjYXJkaW5nIGFub3RoZXI7
IG5vdCBleGFjdGx5IHdoYXQgeW91IHdhbnQgYQovLyB2ZXJzaW9uIGNvbnRyb2wgdG9vbCB0byBk
by4KLy8KLy8gYSBjb25zZXJ2YXRpdmUgYXBwcm94aW1hdGlvbiBpcyB3aGF0IHdlJ2xsIGNhbGwg
YSAic3ViZ3JhcGggcmVjdXJyaW5nIgovLyBMQ0EgYWxnb3JpdGhtLiB0aGlzIGlzIHNvbWV3aGF0
IGxpa2UgbG9jYXRpbmcgdGhlIGxlYXN0IGNvbW1vbiBkb21pbmF0b3IKLy8gbm9kZSwgYnV0IG5v
dCBxdWl0ZS4gaXQgaXMgYWN0dWFsbHkganVzdCBhIHZhbmlsbGEgTENBIHNlYXJjaCwgZXhjZXB0
Ci8vIHRoYXQgYW55IHRpbWUgdGhlcmUncyBhIGZvcmsgKGEgaGlzdG9yaWNhbCBtZXJnZSBsb29r
cyBsaWtlIGEgZm9yayBmcm9tCi8vIG91ciBwZXJzcGVjdGl2ZSwgd29ya2luZyBiYWNrd2FyZHMg
ZnJvbSBjaGlsZHJlbiB0byBwYXJlbnRzKSBpdCByZWR1Y2VzCi8vIHRoZSBmb3JrIHRvIGEgY29t
bW9uIHBhcmVudCB2aWEgYSBzZXF1ZW5jZSBvZiBwYWlyd2lzZSByZWN1cnNpdmUgY2FsbHMKLy8g
dG8gaXRzZWxmIGJlZm9yZSBwcm9jZWVkaW5nLiB0aGlzIHdpbGwgYWx3YXlzIHJlc29sdmUgdG8g
YSBjb21tb24gcGFyZW50Ci8vIHdpdGggbm8gYW1iaWd1aXR5LCB1bmxlc3MgaXQgZmFsbHMgb2Zm
IHRoZSByb290IG9mIHRoZSBncmFwaC4KLy8KLy8gdW5mb3J0dW5hdGVseSB0aGUgc3ViZ3JhcGgg
cmVjdXJyaW5nIGFsZ29yaXRobSBzb21ldGltZXMgZ29lcyB0b28gZmFyCi8vIGJhY2sgaW4gaGlz
dG9yeSAtLSBmb3IgZXhhbXBsZSBpZiB0aGVyZSBpcyBhbiB1bmFtYmlndW91cyBwcm9wYWdhdGUg
ZnJvbQovLyBvbmUgYnJhbmNoIHRvIGFub3RoZXIsIHRoZSBlbnRpcmUgc3ViZ3JhcGggcHJlY2Vl
ZGluZyB0aGUgcHJvcGFnYXRlIG9uCi8vIHRoZSByZWNpcGllbnQgYnJhbmNoIGlzIGVsaWRlZCwg
c2luY2UgaXQgaXMgYSBtZXJnZS4KLy8KLy8gb3VyIGN1cnJlbnQgaHlwb3RoZXNpcyBpcyB0aGF0
IHRoZSAqZXhhY3QqIGNvbmRpdGlvbiB3ZSdyZSBsb29raW5nIGZvciwKLy8gd2hlbiBkb2luZyBh
IG1lcmdlLCBpcyB0aGUgbGVhc3Qgbm9kZSB3aGljaCBkb21pbmF0ZXMgb25lIHNpZGUgb2YgdGhl
Ci8vIG1lcmdlIGFuZCBpcyBhbiBhbmNlc3RvciBvZiB0aGUgb3RoZXIuCgp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgY3R4Owp0eXBlZGVmIGJvb3N0OjpkeW5hbWljX2JpdHNldDw+IGJpdG1hcDsKdHlw
ZWRlZiBib29zdDo6c2hhcmVkX3B0cjxiaXRtYXA+IHNoYXJlZF9iaXRtYXA7CgpzdGF0aWMgdm9p
ZCAKZW5zdXJlX3BhcmVudHNfbG9hZGVkKGN0eCBjaGlsZCwKICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6bWFwPGN0eCwgc2hhcmVkX2JpdG1hcD4gJiBwYXJlbnRzLAogICAgICAgICAgICAgICAg
ICAgICAgaW50ZXJuZXI8Y3R4PiAmIGludGVybiwKICAgICAgICAgICAgICAgICAgICAgIGFwcF9z
dGF0ZSAmIGFwcCkKewogIGlmIChwYXJlbnRzLmZpbmQoY2hpbGQpICE9IHBhcmVudHMuZW5kKCkp
CiAgICByZXR1cm47CgogIEwoRigibG9hZGluZyBwYXJlbnRzIGZvciBub2RlICVkXG4iKSAlIGNo
aWxkKTsKCiAgc3RkOjpzZXQ8cmV2aXNpb25faWQ+IGltbV9wYXJlbnRzOwogIGFwcC5kYi5nZXRf
cmV2aXNpb25fcGFyZW50cyhyZXZpc2lvbl9pZChpbnRlcm4ubG9va3VwKGNoaWxkKSksIGltbV9w
YXJlbnRzKTsKCiAgLy8gVGhlIG51bGwgcmV2aXNpb24gaXMgbm90IGEgcGFyZW50IGZvciBwdXJw
b3NlcyBvZiBmaW5kaW5nIGNvbW1vbgogIC8vIGFuY2VzdG9ycy4KICBmb3IgKHN0ZDo6c2V0PHJl
dmlzaW9uX2lkPjo6aXRlcmF0b3IgcCA9IGltbV9wYXJlbnRzLmJlZ2luKCk7CiAgICAgICBwICE9
IGltbV9wYXJlbnRzLmVuZCgpOyArK3ApCiAgICB7CiAgICAgIGlmIChudWxsX2lkKCpwKSkKICAg
ICAgICBpbW1fcGFyZW50cy5lcmFzZShwKTsKICAgIH0KICAgICAgICAgICAgICAKICBzaGFyZWRf
Yml0bWFwIGJpdHMgPSBzaGFyZWRfYml0bWFwKG5ldyBiaXRtYXAocGFyZW50cy5zaXplKCkpKTsK
ICAKICBmb3IgKHN0ZDo6c2V0PHJldmlzaW9uX2lkPjo6Y29uc3RfaXRlcmF0b3IgcCA9IGltbV9w
YXJlbnRzLmJlZ2luKCk7CiAgICAgICBwICE9IGltbV9wYXJlbnRzLmVuZCgpOyArK3ApCiAgICB7
CiAgICAgIGN0eCBwbiA9IGludGVybi5pbnRlcm4ocC0+aW5uZXIoKSgpKTsKICAgICAgTChGKCJw
YXJlbnQgJXMgLT4gbm9kZSAlZFxuIikgJSAqcCAlIHBuKTsKICAgICAgaWYgKHBuID49IGJpdHMt
PnNpemUoKSkgCiAgICAgICAgYml0cy0+cmVzaXplKHBuKzEpOwogICAgICBiaXRzLT5zZXQocG4p
OwogICAgfQogICAgCiAgcGFyZW50cy5pbnNlcnQoc3RkOjptYWtlX3BhaXIoY2hpbGQsIGJpdHMp
KTsKfQoKc3RhdGljIGJvb2wgCmV4cGFuZF9kb21pbmF0b3JzKHN0ZDo6bWFwPGN0eCwgc2hhcmVk
X2JpdG1hcD4gJiBwYXJlbnRzLAogICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxjdHgsIHNoYXJl
ZF9iaXRtYXA+ICYgZG9taW5hdG9ycywKICAgICAgICAgICAgICAgICAgaW50ZXJuZXI8Y3R4PiAm
IGludGVybiwKICAgICAgICAgICAgICAgICAgYXBwX3N0YXRlICYgYXBwKQp7CiAgYm9vbCBzb21l
dGhpbmdfY2hhbmdlZCA9IGZhbHNlOwogIHN0ZDo6dmVjdG9yPGN0eD4gbm9kZXM7CgogIG5vZGVz
LnJlc2VydmUoZG9taW5hdG9ycy5zaXplKCkpOwoKICAvLyBwYXNzIDEsIHB1bGwgb3V0IGFsbCB0
aGUgbm9kZSBudW1iZXJzIHdlJ3JlIGdvaW5nIHRvIHNjYW4gdGhpcyB0aW1lIGFyb3VuZAogIGZv
ciAoc3RkOjptYXA8Y3R4LCBzaGFyZWRfYml0bWFwPjo6Y29uc3RfaXRlcmF0b3IgZSA9IGRvbWlu
YXRvcnMuYmVnaW4oKTsgCiAgICAgICBlICE9IGRvbWluYXRvcnMuZW5kKCk7ICsrZSkKICAgIG5v
ZGVzLnB1c2hfYmFjayhlLT5maXJzdCk7CiAgCiAgLy8gcGFzcyAyLCB1cGRhdGUgYW55IG9mIHRo
ZSBkb21pbmF0b3IgZW50cmllcyB3ZSBjYW4KICBmb3IgKHN0ZDo6dmVjdG9yPGN0eD46OmNvbnN0
X2l0ZXJhdG9yIG4gPSBub2Rlcy5iZWdpbigpOyAKICAgICAgIG4gIT0gbm9kZXMuZW5kKCk7ICsr
bikKICAgIHsKICAgICAgc2hhcmVkX2JpdG1hcCBiaXRzID0gZG9taW5hdG9yc1sqbl07CiAgICAg
IGJpdG1hcCBzYXZlZCgqYml0cyk7CiAgICAgIGlmIChiaXRzLT5zaXplKCkgPD0gKm4pCiAgICAg
ICAgYml0cy0+cmVzaXplKCpuICsgMSk7CiAgICAgIGJpdHMtPnNldCgqbik7CiAgICAgIAogICAg
ICBlbnN1cmVfcGFyZW50c19sb2FkZWQoKm4sIHBhcmVudHMsIGludGVybiwgYXBwKTsKICAgICAg
c2hhcmVkX2JpdG1hcCBuX3BhcmVudHMgPSBwYXJlbnRzWypuXTsKICAgICAgCiAgICAgIGJpdG1h
cCBpbnRlcnNlY3Rpb24oYml0cy0+c2l6ZSgpKTsKICAgICAgCiAgICAgIGJvb2wgZmlyc3QgPSB0
cnVlOwogICAgICBmb3IgKHVuc2lnbmVkIGxvbmcgcGFyZW50ID0gMDsgCiAgICAgICAgICAgcGFy
ZW50ICE9IG5fcGFyZW50cy0+c2l6ZSgpOyArK3BhcmVudCkKICAgICAgICB7CiAgICAgICAgICBp
ZiAoISBuX3BhcmVudHMtPnRlc3QocGFyZW50KSkKICAgICAgICAgICAgY29udGludWU7CgogICAg
ICAgICAgaWYgKGRvbWluYXRvcnMuZmluZChwYXJlbnQpID09IGRvbWluYXRvcnMuZW5kKCkpCiAg
ICAgICAgICAgIGRvbWluYXRvcnMuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKHBhcmVudCwgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZF9iaXRtYXAobmV3
IGJpdG1hcCgpKSkpOwogICAgICAgICAgc2hhcmVkX2JpdG1hcCBwYml0cyA9IGRvbWluYXRvcnNb
cGFyZW50XTsKCiAgICAgICAgICBpZiAoYml0cy0+c2l6ZSgpID4gcGJpdHMtPnNpemUoKSkKICAg
ICAgICAgICAgcGJpdHMtPnJlc2l6ZShiaXRzLT5zaXplKCkpOwoKICAgICAgICAgIGlmIChwYml0
cy0+c2l6ZSgpID4gYml0cy0+c2l6ZSgpKQogICAgICAgICAgICBiaXRzLT5yZXNpemUocGJpdHMt
PnNpemUoKSk7CgogICAgICAgICAgaWYgKGZpcnN0KQogICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgaW50ZXJzZWN0aW9uID0gKCpwYml0cyk7CiAgICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTsK
ICAgICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAgICBpbnRlcnNlY3Rpb24gJj0g
KCpwYml0cyk7CiAgICAgICAgfQoKICAgICAgKCpiaXRzKSB8PSBpbnRlcnNlY3Rpb247CiAgICAg
IGlmICgqYml0cyAhPSBzYXZlZCkKICAgICAgICBzb21ldGhpbmdfY2hhbmdlZCA9IHRydWU7CiAg
ICB9CiAgcmV0dXJuIHNvbWV0aGluZ19jaGFuZ2VkOwp9CgoKc3RhdGljIGJvb2wgCmV4cGFuZF9h
bmNlc3RvcnMoc3RkOjptYXA8Y3R4LCBzaGFyZWRfYml0bWFwPiAmIHBhcmVudHMsCiAgICAgICAg
ICAgICAgICAgc3RkOjptYXA8Y3R4LCBzaGFyZWRfYml0bWFwPiAmIGFuY2VzdG9ycywKICAgICAg
ICAgICAgICAgICBpbnRlcm5lcjxjdHg+ICYgaW50ZXJuLAogICAgICAgICAgICAgICAgIGFwcF9z
dGF0ZSAmIGFwcCkKewogIGJvb2wgc29tZXRoaW5nX2NoYW5nZWQgPSBmYWxzZTsKICBzdGQ6OnZl
Y3RvcjxjdHg+IG5vZGVzOwoKICBub2Rlcy5yZXNlcnZlKGFuY2VzdG9ycy5zaXplKCkpOwoKICAv
LyBwYXNzIDEsIHB1bGwgb3V0IGFsbCB0aGUgbm9kZSBudW1iZXJzIHdlJ3JlIGdvaW5nIHRvIHNj
YW4gdGhpcyB0aW1lIGFyb3VuZAogIGZvciAoc3RkOjptYXA8Y3R4LCBzaGFyZWRfYml0bWFwPjo6
Y29uc3RfaXRlcmF0b3IgZSA9IGFuY2VzdG9ycy5iZWdpbigpOyAKICAgICAgIGUgIT0gYW5jZXN0
b3JzLmVuZCgpOyArK2UpCiAgICBub2Rlcy5wdXNoX2JhY2soZS0+Zmlyc3QpOwogIAogIC8vIHBh
c3MgMiwgdXBkYXRlIGFueSBvZiB0aGUgYW5jZXN0b3IgZW50cmllcyB3ZSBjYW4KICBmb3IgKHN0
ZDo6dmVjdG9yPGN0eD46OmNvbnN0X2l0ZXJhdG9yIG4gPSBub2Rlcy5iZWdpbigpOyBuICE9IG5v
ZGVzLmVuZCgpOyArK24pCiAgICB7CiAgICAgIHNoYXJlZF9iaXRtYXAgYml0cyA9IGFuY2VzdG9y
c1sqbl07CiAgICAgIGJpdG1hcCBzYXZlZCgqYml0cyk7CiAgICAgIGlmIChiaXRzLT5zaXplKCkg
PD0gKm4pCiAgICAgICAgYml0cy0+cmVzaXplKCpuICsgMSk7CiAgICAgIGJpdHMtPnNldCgqbik7
CgogICAgICBlbnN1cmVfcGFyZW50c19sb2FkZWQoKm4sIHBhcmVudHMsIGludGVybiwgYXBwKTsK
ICAgICAgc2hhcmVkX2JpdG1hcCBuX3BhcmVudHMgPSBwYXJlbnRzWypuXTsKICAgICAgZm9yIChj
dHggcGFyZW50ID0gMDsgcGFyZW50ICE9IG5fcGFyZW50cy0+c2l6ZSgpOyArK3BhcmVudCkKICAg
ICAgICB7CiAgICAgICAgICBpZiAoISBuX3BhcmVudHMtPnRlc3QocGFyZW50KSkKICAgICAgICAg
ICAgY29udGludWU7CgogICAgICAgICAgaWYgKGJpdHMtPnNpemUoKSA8PSBwYXJlbnQpCiAgICAg
ICAgICAgIGJpdHMtPnJlc2l6ZShwYXJlbnQgKyAxKTsKICAgICAgICAgIGJpdHMtPnNldChwYXJl
bnQpOwoKICAgICAgICAgIGlmIChhbmNlc3RvcnMuZmluZChwYXJlbnQpID09IGFuY2VzdG9ycy5l
bmQoKSkKICAgICAgICAgICAgYW5jZXN0b3JzLmluc2VydChtYWtlX3BhaXIocGFyZW50LCAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZF9iaXRtYXAobmV3IGJp
dG1hcCgpKSkpOwogICAgICAgICAgc2hhcmVkX2JpdG1hcCBwYml0cyA9IGFuY2VzdG9yc1twYXJl
bnRdOwoKICAgICAgICAgIGlmIChiaXRzLT5zaXplKCkgPiBwYml0cy0+c2l6ZSgpKQogICAgICAg
ICAgICBwYml0cy0+cmVzaXplKGJpdHMtPnNpemUoKSk7CgogICAgICAgICAgaWYgKHBiaXRzLT5z
aXplKCkgPiBiaXRzLT5zaXplKCkpCiAgICAgICAgICAgIGJpdHMtPnJlc2l6ZShwYml0cy0+c2l6
ZSgpKTsKCiAgICAgICAgICAoKmJpdHMpIHw9ICgqcGJpdHMpOwogICAgICAgIH0KICAgICAgaWYg
KCpiaXRzICE9IHNhdmVkKQogICAgICAgIHNvbWV0aGluZ19jaGFuZ2VkID0gdHJ1ZTsKICAgIH0K
ICByZXR1cm4gc29tZXRoaW5nX2NoYW5nZWQ7Cn0KCnN0YXRpYyBib29sIApmaW5kX2ludGVyc2Vj
dGluZ19ub2RlKGJpdG1hcCAmIGZzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgYml0bWFwICYg
c25kLCAKICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5lcjxjdHg+IGNvbnN0ICYgaW50ZXJu
LCAKICAgICAgICAgICAgICAgICAgICAgICByZXZpc2lvbl9pZCAmIGFuYykKewogIAogIGlmIChm
c3Quc2l6ZSgpID4gc25kLnNpemUoKSkKICAgIHNuZC5yZXNpemUoZnN0LnNpemUoKSk7CiAgZWxz
ZSBpZiAoc25kLnNpemUoKSA+IGZzdC5zaXplKCkpCiAgICBmc3QucmVzaXplKHNuZC5zaXplKCkp
OwogIAogIGJpdG1hcCBpbnRlcnNlY3Rpb24gPSBmc3QgJiBzbmQ7CiAgaWYgKGludGVyc2VjdGlv
bi5hbnkoKSkKICAgIHsKICAgICAgTChGKCJmb3VuZCAlZCBpbnRlcnNlY3Rpbmcgbm9kZXNcbiIp
ICUgaW50ZXJzZWN0aW9uLmNvdW50KCkpOwogICAgICBmb3IgKGN0eCBpID0gMDsgaSA8IGludGVy
c2VjdGlvbi5zaXplKCk7ICsraSkKICAgICAgICB7CiAgICAgICAgICBpZiAoaW50ZXJzZWN0aW9u
LnRlc3QoaSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBhbmMgPSByZXZpc2lvbl9pZChp
bnRlcm4ubG9va3VwKGkpKTsKICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
fQogICAgICAgIH0KICAgIH0KICByZXR1cm4gZmFsc2U7Cn0KCi8vICBzdGF0aWMgdm9pZAovLyAg
ZHVtcF9iaXRzZXRfbWFwKHN0cmluZyBjb25zdCAmIGhkciwKLy8gICAgICAgICAgICAgIHN0ZDo6
bWFwPCBjdHgsIHNoYXJlZF9iaXRtYXAgPiBjb25zdCAmIG1tKQovLyAgewovLyAgICBMKEYoImR1
bXBpbmcgWyVzXSAoJWQgZW50cmllcylcbiIpICUgaGRyICUgbW0uc2l6ZSgpKTsKLy8gICAgZm9y
IChzdGQ6Om1hcDwgY3R4LCBzaGFyZWRfYml0bWFwID46OmNvbnN0X2l0ZXJhdG9yIGkgPSBtbS5i
ZWdpbigpOwovLyAgICAgICAgIGkgIT0gbW0uZW5kKCk7ICsraSkKLy8gICAgICB7Ci8vICAgICAg
ICBMKEYoImR1bXAgWyVzXTogJWQgLT4gJXNcbiIpICUgaGRyICUgaS0+Zmlyc3QgJSAoKihpLT5z
ZWNvbmQpKSk7Ci8vICAgICAgfQovLyAgfQoKYm9vbCAKZmluZF9jb21tb25fYW5jZXN0b3IocmV2
aXNpb25faWQgY29uc3QgJiBsZWZ0LAogICAgICAgICAgICAgICAgICAgICByZXZpc2lvbl9pZCBj
b25zdCAmIHJpZ2h0LAogICAgICAgICAgICAgICAgICAgICByZXZpc2lvbl9pZCAmIGFuYywKICAg
ICAgICAgICAgICAgICAgICAgYXBwX3N0YXRlICYgYXBwKQp7CiAgaW50ZXJuZXI8Y3R4PiBpbnRl
cm47CiAgc3RkOjptYXA8IGN0eCwgc2hhcmVkX2JpdG1hcCA+IAogICAgcGFyZW50cywgYW5jZXN0
b3JzLCBkb21pbmF0b3JzOwogIAogIGN0eCBsbiA9IGludGVybi5pbnRlcm4obGVmdC5pbm5lcigp
KCkpOwogIGN0eCBybiA9IGludGVybi5pbnRlcm4ocmlnaHQuaW5uZXIoKSgpKTsKICAKICBzaGFy
ZWRfYml0bWFwIGxhbmMgPSBzaGFyZWRfYml0bWFwKG5ldyBiaXRtYXAoKSk7CiAgc2hhcmVkX2Jp
dG1hcCByYW5jID0gc2hhcmVkX2JpdG1hcChuZXcgYml0bWFwKCkpOwogIHNoYXJlZF9iaXRtYXAg
bGRvbSA9IHNoYXJlZF9iaXRtYXAobmV3IGJpdG1hcCgpKTsKICBzaGFyZWRfYml0bWFwIHJkb20g
PSBzaGFyZWRfYml0bWFwKG5ldyBiaXRtYXAoKSk7CgogIGFuY2VzdG9ycy5pbnNlcnQobWFrZV9w
YWlyKGxuLCBsYW5jKSk7CiAgYW5jZXN0b3JzLmluc2VydChtYWtlX3BhaXIocm4sIHJhbmMpKTsK
ICBkb21pbmF0b3JzLmluc2VydChtYWtlX3BhaXIobG4sIGxkb20pKTsKICBkb21pbmF0b3JzLmlu
c2VydChtYWtlX3BhaXIocm4sIHJkb20pKTsKICAKICBMKEYoInNlYXJjaGluZyBmb3IgY29tbW9u
IGFuY2VzdG9yLCBsZWZ0PSVzIHJpZ2h0PSVzXG4iKSAlIGxlZnQgJSByaWdodCk7CiAgCiAgd2hp
bGUgKGV4cGFuZF9hbmNlc3RvcnMocGFyZW50cywgYW5jZXN0b3JzLCBpbnRlcm4sIGFwcCkgfHwK
ICAgICAgICAgZXhwYW5kX2RvbWluYXRvcnMocGFyZW50cywgZG9taW5hdG9ycywgaW50ZXJuLCBh
cHApKQogICAgewogICAgICBMKEYoImNvbW1vbiBhbmNlc3RvciBzY2FuIFtwYXI9JWQsYW5jPSVk
LGRvbT0lZF1cbiIpICUgCiAgICAgICAgcGFyZW50cy5zaXplKCkgJSBhbmNlc3RvcnMuc2l6ZSgp
ICUgZG9taW5hdG9ycy5zaXplKCkpOwoKICAgICAgaWYgKGZpbmRfaW50ZXJzZWN0aW5nX25vZGUo
KmxhbmMsICpyZG9tLCBpbnRlcm4sIGFuYykpCiAgICAgICAgewogICAgICAgICAgTChGKCJmb3Vu
ZCBub2RlICVkLCBhbmNlc3RvciBvZiBsZWZ0ICVzIGFuZCBkb21pbmF0aW5nIHJpZ2h0ICVzXG4i
KQogICAgICAgICAgICAlIGFuYyAlIGxlZnQgJSByaWdodCk7CiAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICB9CiAgICAgIAogICAgICBlbHNlIGlmIChmaW5kX2ludGVyc2VjdGluZ19ub2Rl
KCpyYW5jLCAqbGRvbSwgaW50ZXJuLCBhbmMpKQogICAgICAgIHsKICAgICAgICAgIEwoRigiZm91
bmQgbm9kZSAlZCwgYW5jZXN0b3Igb2YgcmlnaHQgJXMgYW5kIGRvbWluYXRpbmcgbGVmdCAlc1xu
IikKICAgICAgICAgICAgJSBhbmMgJSByaWdodCAlIGxlZnQpOwogICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgfQogICAgfQovLyAgICAgIGR1bXBfYml0c2V0X21hcCgiYW5jZXN0b3JzIiwg
YW5jZXN0b3JzKTsKLy8gICAgICBkdW1wX2JpdHNldF9tYXAoImRvbWluYXRvcnMiLCBkb21pbmF0
b3JzKTsKLy8gICAgICBkdW1wX2JpdHNldF9tYXAoInBhcmVudHMiLCBwYXJlbnRzKTsKICByZXR1
cm4gZmFsc2U7Cn0KCgovLyAKLy8gVGhlIGlkZWEgd2l0aCB0aGlzIGFsZ29yaXRobSBpcyB0byB3
YWxrIGZyb20gY2hpbGQgdXAgdG8gYW5jZXN0b3IsCi8vIHJlY3Vyc2l2ZWx5LCBhY2N1bXVsYXRp
bmcgYWxsIHRoZSBjaGFuZ2Vfc2V0cyBhc3NvY2lhdGVkIHdpdGgKLy8gaW50ZXJtZWRpYXRlIG5v
ZGVzIGludG8gKm9uZSBiaWcgY2hhbmdlX3NldCouCi8vCi8vIGNsZXZlciByZWFkZXJzIHdpbGwg
cmVhbGl6ZSB0aGlzIGlzIGFuIG92ZXJsYXBwaW5nLXN1YnByb2JsZW0gdHlwZQovLyBzaXR1YXRp
b24gYW5kIHRodXMgbmVlZHMgdG8ga2VlcCBhIGR5bmFtaWMgcHJvZ3JhbW1pbmcgbWFwIHRvIGtl
ZXAKLy8gaXRzZWxmIGluIGxpbmVhciBjb21wbGV4aXR5LgovLwovLyBpbiBmYWN0LCB3ZSBrZWVw
IHR3bzogb25lIHdoaWNoIG1hcHMgdG8gY29tcHV0ZWQgcmVzdWx0cyAocGFydGlhbF9jc2V0cykK
Ly8gYW5kIG9uZSB3aGljaCBqdXN0IGtlZXBzIGEgc2V0IG9mIGFsbCBub2RlcyB3ZSB0cmF2ZXJz
ZWQKLy8gKHZpc2l0ZWRfbm9kZXMpLiBpbiB0aGVvcnkgaXQgY291bGQgYmUgb25lIG1hcCB3aXRo
IGFuIGV4dHJhIGJvb2wgc3R1Y2sKLy8gb24gZWFjaCBlbnRyeSwgYnV0IEkgdGhpbmsgdGhhdCB3
b3VsZCBtYWtlIGl0IGV2ZW4gbGVzcyByZWFkYWJsZS4gaXQncwovLyBhbHJlYWR5IHF1aXRlIHVn
bHkuCi8vCgpzdGF0aWMgYm9vbCAKY2FsY3VsYXRlX2NoYW5nZV9zZXRzX3JlY3Vyc2l2ZShyZXZp
c2lvbl9pZCBjb25zdCAmIGFuY2VzdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldmlzaW9uX2lkIGNvbnN0ICYgY2hpbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXBwX3N0YXRlICYgYXBwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5n
ZV9zZXQgJiBjdW11bGF0aXZlX2NzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjptYXA8cmV2aXNpb25faWQsIGJvb3N0OjpzaGFyZWRfcHRyPGNoYW5nZV9zZXQ+ID4gJiBw
YXJ0aWFsX2NzZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c2V0PHJl
dmlzaW9uX2lkPiAmIHZpc2l0ZWRfbm9kZXMpCnsKCiAgaWYgKGFuY2VzdG9yID09IGNoaWxkKQog
ICAgcmV0dXJuIHRydWU7CgogIHZpc2l0ZWRfbm9kZXMuaW5zZXJ0KGNoaWxkKTsKCiAgYm9vbCBy
ZWxldmFudF9jaGlsZCA9IGZhbHNlOwoKICByZXZpc2lvbl9zZXQgcmV2OwogIGFwcC5kYi5nZXRf
cmV2aXNpb24oY2hpbGQsIHJldik7CgogIEwoRigiZXhwbG9yaW5nIGNoYW5nZXNldHMgZnJvbSBw
YXJlbnRzIG9mICVzLCBzZWVraW5nIHRvd2FyZHMgJXNcbiIpIAogICAgJSBjaGlsZCAlIGFuY2Vz
dG9yKTsKCiAgZm9yKGVkZ2VfbWFwOjpjb25zdF9pdGVyYXRvciBpID0gcmV2LmVkZ2VzLmJlZ2lu
KCk7IGkgIT0gcmV2LmVkZ2VzLmVuZCgpOyArK2kpCiAgICB7CiAgICAgIGJvb2wgcmVsZXZhbnRf
cGFyZW50ID0gZmFsc2U7CiAgICAgIHJldmlzaW9uX2lkIGN1cnJfcGFyZW50ID0gZWRnZV9vbGRf
cmV2aXNpb24oaSk7CgogICAgICBpZiAoY3Vycl9wYXJlbnQuaW5uZXIoKSgpLmVtcHR5KCkpCiAg
ICAgICAgY29udGludWU7CgogICAgICBjaGFuZ2Vfc2V0IGNzZXRfdG9fY3Vycl9wYXJlbnQ7Cgog
ICAgICBMKEYoImNvbnNpZGVyaW5nIHBhcmVudCAlcyBvZiAlc1xuIikgJSBjdXJyX3BhcmVudCAl
IGNoaWxkKTsKCiAgICAgIHN0ZDo6bWFwPHJldmlzaW9uX2lkLCBib29zdDo6c2hhcmVkX3B0cjxj
aGFuZ2Vfc2V0PiA+Ojpjb25zdF9pdGVyYXRvciBqID0gCiAgICAgICAgcGFydGlhbF9jc2V0cy5m
aW5kKGN1cnJfcGFyZW50KTsKICAgICAgaWYgKGogIT0gcGFydGlhbF9jc2V0cy5lbmQoKSkgCiAg
ICAgICAgewogICAgICAgICAgLy8gYSByZWN1cnNpdmUgY2FsbCBoYXMgdHJhdmVyc2VkIHRoaXMg
cGFyZW50IGJlZm9yZSBhbmQgYnVpbHQgYW4KICAgICAgICAgIC8vIGV4aXN0aW5nIGNzZXQuIGp1
c3QgcmV1c2UgdGhhdCByYXRoZXIgdGhhbiByZS10cmF2ZXJzaW5nCiAgICAgICAgICBjc2V0X3Rv
X2N1cnJfcGFyZW50ID0gKihqLT5zZWNvbmQpOwogICAgICAgICAgcmVsZXZhbnRfcGFyZW50ID0g
dHJ1ZTsKICAgICAgICB9CiAgICAgIGVsc2UgaWYgKHZpc2l0ZWRfbm9kZXMuZmluZChjdXJyX3Bh
cmVudCkgIT0gdmlzaXRlZF9ub2Rlcy5lbmQoKSkKICAgICAgICB7CiAgICAgICAgICAvLyBhIHJl
Y3Vyc2l2ZSBjYWxsIGhhcyB0cmF2ZXJzZWQgdGhpcyBwYXJlbnQsIGJ1dCB0aGVyZSB3YXMgbm8K
ICAgICAgICAgIC8vIHBhdGggZnJvbSBpdCB0byB0aGUgcm9vdCwgc28gdGhlIHBhcmVudCBpcyBp
cnJlbGV2YW50LiBza2lwLgogICAgICAgICAgcmVsZXZhbnRfcGFyZW50ID0gZmFsc2U7CiAgICAg
ICAgfQogICAgICBlbHNlCiAgICAgICAgcmVsZXZhbnRfcGFyZW50ID0gY2FsY3VsYXRlX2NoYW5n
ZV9zZXRzX3JlY3Vyc2l2ZShhbmNlc3RvciwgY3Vycl9wYXJlbnQsIGFwcCwgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc2V0X3RvX2N1
cnJfcGFyZW50LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcnRpYWxfY3NldHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpdGVkX25vZGVzKTsKCiAgICAgIGlmIChy
ZWxldmFudF9wYXJlbnQpCiAgICAgICAgewogICAgICAgICAgTChGKCJyZXZpc2lvbiAlcyBpcyBy
ZWxldmFudCwgY29tcG9zaW5nIHdpdGggZWRnZSB0byAlc1xuIikgCiAgICAgICAgICAgICUgY3Vy
cl9wYXJlbnQgJSBjaGlsZCk7CiAgICAgICAgICBjb25jYXRlbmF0ZV9jaGFuZ2Vfc2V0cyhjc2V0
X3RvX2N1cnJfcGFyZW50LCBlZGdlX2NoYW5nZXMoaSksIGN1bXVsYXRpdmVfY3NldCk7CiAgICAg
ICAgICByZWxldmFudF9jaGlsZCA9IHRydWU7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAg
ICAgIGVsc2UKICAgICAgICBMKEYoInBhcmVudCAlcyBvZiAlcyBpcyBub3QgcmVsZXZhbnRcbiIp
ICUgY3Vycl9wYXJlbnQgJSBjaGlsZCk7CiAgICB9CgogIC8vIHN0b3JlIHRoZSBwYXJ0aWFsIGVk
Z2UgZnJvbSBhbmNlc3RvciAtPiBjaGlsZCwgc28gdGhhdCBpZiBhbnlvbmUKICAvLyByZS10cmF2
ZXJzZXMgdGhpcyBlZGdlIHRoZXknbGwganVzdCBmZXRjaCBmcm9tIHRoZSBwYXJ0aWFsX2VkZ2Vz
CiAgLy8gY2FjaGUuCiAgaWYgKHJlbGV2YW50X2NoaWxkKQogICAgcGFydGlhbF9jc2V0cy5pbnNl
cnQoc3RkOjptYWtlX3BhaXIoY2hpbGQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vc3Q6OnNoYXJlZF9wdHI8Y2hhbmdlX3NldD4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChuZXcgY2hhbmdlX3NldChjdW11bGF0aXZlX2NzZXQpKSkp
OwogIAogIHJldHVybiByZWxldmFudF9jaGlsZDsKfQoKdm9pZCAKY2FsY3VsYXRlX2NvbXBvc2l0
ZV9jaGFuZ2Vfc2V0KHJldmlzaW9uX2lkIGNvbnN0ICYgYW5jZXN0b3IsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXZpc2lvbl9pZCBjb25zdCAmIGNoaWxkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXBwX3N0YXRlICYgYXBwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlX3NldCAmIGNvbXBvc2VkKQp7CiAgTChGKCJjYWxjdWxhdGluZyBjb21w
b3NpdGUgY2hhbmdlc2V0IGJldHdlZW4gJXMgYW5kICVzXG4iKQogICAgJSBhbmNlc3RvciAlIGNo
aWxkKTsKICBzdGQ6OnNldDxyZXZpc2lvbl9pZD4gdmlzaXRlZDsKICBzdGQ6Om1hcDxyZXZpc2lv
bl9pZCwgYm9vc3Q6OnNoYXJlZF9wdHI8Y2hhbmdlX3NldD4gPiBwYXJ0aWFsOwogIGNhbGN1bGF0
ZV9jaGFuZ2Vfc2V0c19yZWN1cnNpdmUoYW5jZXN0b3IsIGNoaWxkLCBhcHAsIGNvbXBvc2VkLCBw
YXJ0aWFsLCB2aXNpdGVkKTsKfQoKLy8gbWlncmF0aW9uIHN0dWZmCi8vCi8vIEZJWE1FOiB0aGVz
ZSBhcmUgdGVtcG9yYXJ5IGZ1bmN0aW9ucywgb25jZSB3ZSd2ZSBkb25lIHRoZSBtaWdyYXRpb24g
dG8KLy8gcmV2aXNpb25zIC8gY2hhbmdlc2V0cywgd2UgY2FuIHJlbW92ZSB0aGVtLgoKc3RhdGlj
IHZvaWQgCmFuYWx5emVfbWFuaWZlc3RfY2hhbmdlcyhhcHBfc3RhdGUgJiBhcHAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBtYW5pZmVzdF9pZCBjb25zdCAmIHBhcmVudCwgCiAgICAgICAgICAg
ICAgICAgICAgICAgICBtYW5pZmVzdF9pZCBjb25zdCAmIGNoaWxkLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYW5nZV9zZXQgJiBjcykKewogIG1hbmlmZXN0X21hcCBtX3BhcmVudCwgbV9j
aGlsZDsKICBhcHAuZGIuZ2V0X21hbmlmZXN0KHBhcmVudCwgbV9wYXJlbnQpOwogIGFwcC5kYi5n
ZXRfbWFuaWZlc3QoY2hpbGQsIG1fY2hpbGQpOwoKICBmb3IgKG1hbmlmZXN0X21hcDo6Y29uc3Rf
aXRlcmF0b3IgaSA9IG1fcGFyZW50LmJlZ2luKCk7IAogICAgICAgaSAhPSBtX3BhcmVudC5lbmQo
KTsgKytpKQogICAgewogICAgICBtYW5pZmVzdF9tYXA6OmNvbnN0X2l0ZXJhdG9yIGogPSBtX2No
aWxkLmZpbmQobWFuaWZlc3RfZW50cnlfcGF0aChpKSk7CiAgICAgIGlmIChqID09IG1fY2hpbGQu
ZW5kKCkpCiAgICAgICAgY3MuZGVsZXRlX2ZpbGUobWFuaWZlc3RfZW50cnlfcGF0aChpKSk7CiAg
ICAgIGVsc2UgaWYgKCEgKG1hbmlmZXN0X2VudHJ5X2lkKGkpID09IG1hbmlmZXN0X2VudHJ5X2lk
KGopKSkKICAgICAgICB7CiAgICAgICAgICBjcy5hcHBseV9kZWx0YShtYW5pZmVzdF9lbnRyeV9w
YXRoKGkpLAogICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfZW50cnlfaWQoaSksIAog
ICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfZW50cnlfaWQoaikpOwogICAgICAgIH0g
ICAgICAgCiAgICB9CiAgZm9yIChtYW5pZmVzdF9tYXA6OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX2No
aWxkLmJlZ2luKCk7IAogICAgICAgaSAhPSBtX2NoaWxkLmVuZCgpOyArK2kpCiAgICB7CiAgICAg
IG1hbmlmZXN0X21hcDo6Y29uc3RfaXRlcmF0b3IgaiA9IG1fcGFyZW50LmZpbmQobWFuaWZlc3Rf
ZW50cnlfcGF0aChpKSk7CiAgICAgIGlmIChqID09IG1fcGFyZW50LmVuZCgpKQogICAgICAgIGNz
LmFkZF9maWxlKG1hbmlmZXN0X2VudHJ5X3BhdGgoaSksCiAgICAgICAgICAgICAgICAgICAgbWFu
aWZlc3RfZW50cnlfaWQoaSkpOwogICAgfQp9CgpzdGF0aWMgcmV2aXNpb25faWQKY29uc3RydWN0
X3JldmlzaW9ucyhhcHBfc3RhdGUgJiBhcHAsCiAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3Rf
aWQgY29uc3QgJiBjaGlsZCwKICAgICAgICAgICAgICAgICAgICBzdGQ6Om11bHRpbWFwPCBtYW5p
ZmVzdF9pZCwgbWFuaWZlc3RfaWQgPiBjb25zdCAmIGFuY2VzdHJ5LAogICAgICAgICAgICAgICAg
ICAgIHN0ZDo6bWFwPG1hbmlmZXN0X2lkLCByZXZpc2lvbl9pZD4gJiBtYXBwZWQpCnsKICByZXZp
c2lvbl9zZXQgcmV2OwogIHR5cGVkZWYgc3RkOjptdWx0aW1hcDwgbWFuaWZlc3RfaWQsIG1hbmlm
ZXN0X2lkID46OmNvbnN0X2l0ZXJhdG9yIGNpOwogIHN0ZDo6cGFpcjxjaSxjaT4gcmFuZ2UgPSBh
bmNlc3RyeS5lcXVhbF9yYW5nZShjaGlsZCk7CiAgZm9yIChjaSBpID0gcmFuZ2UuZmlyc3Q7IGkg
IT0gcmFuZ2Uuc2Vjb25kOyArK2kpCiAgICB7CiAgICAgIG1hbmlmZXN0X2lkIHBhcmVudChpLT5z
ZWNvbmQpOwogICAgICByZXZpc2lvbl9pZCBwYXJlbnRfcmlkOwogICAgICBzdGQ6Om1hcDxtYW5p
ZmVzdF9pZCwgcmV2aXNpb25faWQ+Ojpjb25zdF9pdGVyYXRvciBqID0gbWFwcGVkLmZpbmQocGFy
ZW50KTsKCiAgICAgIGlmIChqICE9IG1hcHBlZC5lbmQoKSkKICAgICAgICBwYXJlbnRfcmlkID0g
ai0+c2Vjb25kOwogICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgcGFyZW50X3JpZCA9IGNv
bnN0cnVjdF9yZXZpc2lvbnMoYXBwLCBwYXJlbnQsIGFuY2VzdHJ5LCBtYXBwZWQpOwogICAgICAg
ICAgUChGKCJpbnNlcnRpbmcgbWFwcGluZyAlZCA6ICVzIC0+ICVzXG4iKSAlIG1hcHBlZC5zaXpl
KCkgJSBwYXJlbnQgJSBwYXJlbnRfcmlkKTs7CiAgICAgICAgICBtYXBwZWQuaW5zZXJ0KHN0ZDo6
bWFrZV9wYWlyKHBhcmVudCwgcGFyZW50X3JpZCkpOwogICAgICAgIH0KICAgICAgCiAgICAgIGNo
YW5nZV9zZXQgY3M7CiAgICAgIGFuYWx5emVfbWFuaWZlc3RfY2hhbmdlcyhhcHAsIHBhcmVudCwg
Y2hpbGQsIGNzKTsKICAgICAgcmV2LmVkZ2VzLmluc2VydChzdGQ6Om1ha2VfcGFpcihwYXJlbnRf
cmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV9wYWly
KHBhcmVudCwgY3MpKSk7CiAgICB9IAoKICByZXZpc2lvbl9pZCByaWQ7CiAgaWYgKHJldi5lZGdl
cy5lbXB0eSgpKQogICAgewogICAgICBQKEYoImlnbm9yaW5nIGVtcHR5IHJldmlzaW9uIGZvciBt
YW5pZmVzdCAlc1xuIikgJSBjaGlsZCk7ICAKICAgICAgcmV0dXJuIHJpZDsKICAgIH0KCiAgcmV2
Lm5ld19tYW5pZmVzdCA9IGNoaWxkOwogIGNhbGN1bGF0ZV9pZGVudChyZXYsIHJpZCk7CgogIGlm
ICghYXBwLmRiLnJldmlzaW9uX2V4aXN0cyAocmlkKSkKICAgIHsKICAgICAgUChGKCJtYXBwaW5n
IG1hbmlmZXN0ICVzIHRvIHJldmlzaW9uICVzXG4iKSAlIGNoaWxkICUgcmlkKTsKICAgICAgYXBw
LmRiLnB1dF9yZXZpc2lvbihyaWQsIHJldik7CiAgICB9CiAgZWxzZQogICAgewogICAgICBQKEYo
InNraXBwaW5nIGFkZGl0aW9uYWwgcGF0aCB0byByZXZpc2lvbiAlc1xuIikgJSByaWQpOwogICAg
fQoKICAvLyBub3cgaG9pc3QgYWxsIHRoZSBpbnRlcmVzdGluZyBjZXJ0cyB1cCB0byB0aGUgcmV2
aXNpb24KICBzdGQ6OnNldDxjZXJ0X25hbWU+IGNuYW1lczsKICBjbmFtZXMuaW5zZXJ0KGNlcnRf
bmFtZShicmFuY2hfY2VydF9uYW1lKSk7CiAgY25hbWVzLmluc2VydChjZXJ0X25hbWUoZGF0ZV9j
ZXJ0X25hbWUpKTsKICBjbmFtZXMuaW5zZXJ0KGNlcnRfbmFtZShhdXRob3JfY2VydF9uYW1lKSk7
CiAgY25hbWVzLmluc2VydChjZXJ0X25hbWUodGFnX2NlcnRfbmFtZSkpOwogIGNuYW1lcy5pbnNl
cnQoY2VydF9uYW1lKGNoYW5nZWxvZ19jZXJ0X25hbWUpKTsKICBjbmFtZXMuaW5zZXJ0KGNlcnRf
bmFtZShjb21tZW50X2NlcnRfbmFtZSkpOwogIGNuYW1lcy5pbnNlcnQoY2VydF9uYW1lKHRlc3Ry
ZXN1bHRfY2VydF9uYW1lKSk7CgogIHN0ZDo6dmVjdG9yPCBtYW5pZmVzdDxjZXJ0PiA+IHRtcDsK
ICBhcHAuZGIuZ2V0X21hbmlmZXN0X2NlcnRzKGNoaWxkLCB0bXApOwogIGVyYXNlX2JvZ3VzX2Nl
cnRzKHRtcCwgYXBwKTsgICAgICAKICBmb3IgKHN0ZDo6dmVjdG9yPCBtYW5pZmVzdDxjZXJ0PiA+
Ojpjb25zdF9pdGVyYXRvciBpID0gdG1wLmJlZ2luKCk7CiAgICAgICBpICE9IHRtcC5lbmQoKTsg
KytpKQogICAgewogICAgICBpZiAoY25hbWVzLmZpbmQoaS0+aW5uZXIoKS5uYW1lKSA9PSBjbmFt
ZXMuZW5kKCkpCiAgICAgICAgY29udGludWU7CiAgICAgIGNlcnQgbmV3X2NlcnQ7CiAgICAgIGNl
cnRfdmFsdWUgdHY7CiAgICAgIGRlY29kZV9iYXNlNjQoaS0+aW5uZXIoKS52YWx1ZSwgdHYpOwog
ICAgICBtYWtlX3NpbXBsZV9jZXJ0KHJpZC5pbm5lcigpLCBpLT5pbm5lcigpLm5hbWUsIHR2LCBh
cHAsIG5ld19jZXJ0KTsKICAgICAgaWYgKCEgYXBwLmRiLnJldmlzaW9uX2NlcnRfZXhpc3RzKHJl
dmlzaW9uPGNlcnQ+KG5ld19jZXJ0KSkpCiAgICAgICAgYXBwLmRiLnB1dF9yZXZpc2lvbl9jZXJ0
KHJldmlzaW9uPGNlcnQ+KG5ld19jZXJ0KSk7CiAgICB9CiAgcmV0dXJuIHJpZDsgIAp9CgoKdm9p
ZCAKYnVpbGRfY2hhbmdlc2V0cyhhcHBfc3RhdGUgJiBhcHApCnsKICBzdGQ6OnZlY3RvcjwgbWFu
aWZlc3Q8Y2VydD4gPiB0bXA7CiAgYXBwLmRiLmdldF9tYW5pZmVzdF9jZXJ0cyhjZXJ0X25hbWUo
ImFuY2VzdG9yIiksIHRtcCk7CiAgZXJhc2VfYm9ndXNfY2VydHModG1wLCBhcHApOwoKICBzdGQ6
Om11bHRpbWFwPCBtYW5pZmVzdF9pZCwgbWFuaWZlc3RfaWQgPiBhbmNlc3RyeTsKICBzdGQ6OnNl
dDxtYW5pZmVzdF9pZD4gaGVhZHM7CiAgc3RkOjpzZXQ8bWFuaWZlc3RfaWQ+IHRvdGFsOwogIAog
IGZvciAoc3RkOjp2ZWN0b3I8IG1hbmlmZXN0PGNlcnQ+ID46OmNvbnN0X2l0ZXJhdG9yIGkgPSB0
bXAuYmVnaW4oKTsKICAgICAgIGkgIT0gdG1wLmVuZCgpOyArK2kpCiAgICB7CiAgICAgIGNlcnRf
dmFsdWUgdHY7CiAgICAgIGRlY29kZV9iYXNlNjQoaS0+aW5uZXIoKS52YWx1ZSwgdHYpOwogICAg
ICBtYW5pZmVzdF9pZCBjaGlsZCwgcGFyZW50OwogICAgICBjaGlsZCA9IGktPmlubmVyKCkuaWRl
bnQ7CiAgICAgIHBhcmVudCA9IGhleGVuYzxpZD4odHYoKSk7CiAgICAgIGhlYWRzLmluc2VydChj
aGlsZCk7CiAgICAgIGhlYWRzLmVyYXNlKHBhcmVudCk7CiAgICAgIHRvdGFsLmluc2VydChjaGls
ZCk7CiAgICAgIHRvdGFsLmluc2VydChwYXJlbnQpOwogICAgICBhbmNlc3RyeS5pbnNlcnQoc3Rk
OjptYWtlX3BhaXIoY2hpbGQsIHBhcmVudCkpOwogICAgfQogIAogIFAoRigiZm91bmQgYSB0b3Rh
bCBvZiAlZCBtYW5pZmVzdHNcbiIpICUgdG90YWwuc2l6ZSgpKTsKCiAgdHJhbnNhY3Rpb25fZ3Vh
cmQgZ3VhcmQoYXBwLmRiKTsKICBzdGQ6Om1hcDxtYW5pZmVzdF9pZCwgcmV2aXNpb25faWQ+IG1h
cHBlZDsKICBmb3IgKHN0ZDo6c2V0PG1hbmlmZXN0X2lkPjo6Y29uc3RfaXRlcmF0b3IgaSA9IGhl
YWRzLmJlZ2luKCk7CiAgICAgICBpICE9IGhlYWRzLmVuZCgpOyArK2kpCiAgICB7CiAgICAgIGNv
bnN0cnVjdF9yZXZpc2lvbnMoYXBwLCAqaSwgYW5jZXN0cnksIG1hcHBlZCk7CiAgICB9CiAgZ3Vh
cmQuY29tbWl0KCk7Cn0KCgovLyBpL28gc3R1ZmYKCnN0ZDo6c3RyaW5nIHJldmlzaW9uX2ZpbGVf
bmFtZSgicmV2aXNpb24iKTsKCm5hbWVzcGFjZSAKewogIG5hbWVzcGFjZSBzeW1zCiAgewogICAg
c3RkOjpzdHJpbmcgY29uc3Qgb2xkX3JldmlzaW9uKCJvbGRfcmV2aXNpb24iKTsKICAgIHN0ZDo6
c3RyaW5nIGNvbnN0IG5ld19tYW5pZmVzdCgibmV3X21hbmlmZXN0Iik7CiAgICBzdGQ6OnN0cmlu
ZyBjb25zdCBvbGRfbWFuaWZlc3QoIm9sZF9tYW5pZmVzdCIpOwogIH0KfQoKCnZvaWQgCnByaW50
X2VkZ2UoYmFzaWNfaW86OnByaW50ZXIgJiBwcmludGVyLAogICAgICAgICAgIGVkZ2VfZW50cnkg
Y29uc3QgJiBlKQp7ICAgICAgIAogIGJhc2ljX2lvOjpzdGFuemEgc3Q7CiAgc3QucHVzaF9oZXhf
cGFpcihzeW1zOjpvbGRfcmV2aXNpb24sIGVkZ2Vfb2xkX3JldmlzaW9uKGUpLmlubmVyKCkoKSk7
CiAgc3QucHVzaF9oZXhfcGFpcihzeW1zOjpvbGRfbWFuaWZlc3QsIGVkZ2Vfb2xkX21hbmlmZXN0
KGUpLmlubmVyKCkoKSk7CiAgcHJpbnRlci5wcmludF9zdGFuemEoc3QpOwogIHByaW50X2NoYW5n
ZV9zZXQocHJpbnRlciwgZWRnZV9jaGFuZ2VzKGUpKTsgCn0KCgp2b2lkIApwcmludF9yZXZpc2lv
bihiYXNpY19pbzo6cHJpbnRlciAmIHByaW50ZXIsCiAgICAgICAgICAgICAgIHJldmlzaW9uX3Nl
dCBjb25zdCAmIHJldikKewogIGJhc2ljX2lvOjpzdGFuemEgc3Q7IAogIHN0LnB1c2hfaGV4X3Bh
aXIoc3ltczo6bmV3X21hbmlmZXN0LCByZXYubmV3X21hbmlmZXN0LmlubmVyKCkoKSk7CiAgcHJp
bnRlci5wcmludF9zdGFuemEoc3QpOwogIGZvciAoZWRnZV9tYXA6OmNvbnN0X2l0ZXJhdG9yIGVk
Z2UgPSByZXYuZWRnZXMuYmVnaW4oKTsKICAgICAgIGVkZ2UgIT0gcmV2LmVkZ2VzLmVuZCgpOyAr
K2VkZ2UpCiAgICBwcmludF9lZGdlKHByaW50ZXIsICplZGdlKTsKfQoKCnZvaWQgCnBhcnNlX2Vk
Z2UoYmFzaWNfaW86OnBhcnNlciAmIHBhcnNlciwKICAgICAgICAgICBlZGdlX21hcCAmIGVzKQp7
CiAgY2hhbmdlX3NldCBjczsKICBtYW5pZmVzdF9pZCBvbGRfbWFuOwogIHJldmlzaW9uX2lkIG9s
ZF9yZXY7CiAgc3RkOjpzdHJpbmcgdG1wOwogIAogIHBhcnNlci5lc3ltKHN5bXM6Om9sZF9yZXZp
c2lvbik7CiAgcGFyc2VyLmhleCh0bXApOwogIG9sZF9yZXYgPSByZXZpc2lvbl9pZCh0bXApOwog
IAogIHBhcnNlci5lc3ltKHN5bXM6Om9sZF9tYW5pZmVzdCk7CiAgcGFyc2VyLmhleCh0bXApOwog
IG9sZF9tYW4gPSBtYW5pZmVzdF9pZCh0bXApOwogIAogIHBhcnNlX2NoYW5nZV9zZXQocGFyc2Vy
LCBjcyk7CgogIGVzLmluc2VydChzdGQ6Om1ha2VfcGFpcihvbGRfcmV2LCBzdGQ6Om1ha2VfcGFp
cihvbGRfbWFuLCBjcykpKTsKfQoKCnZvaWQgCnBhcnNlX3JldmlzaW9uKGJhc2ljX2lvOjpwYXJz
ZXIgJiBwYXJzZXIsCiAgICAgICAgICAgICAgIHJldmlzaW9uX3NldCAmIHJldikKewogIHJldi5l
ZGdlcy5jbGVhcigpOwogIHN0ZDo6c3RyaW5nIHRtcDsKICBwYXJzZXIuZXN5bShzeW1zOjpuZXdf
bWFuaWZlc3QpOwogIHBhcnNlci5oZXgodG1wKTsKICByZXYubmV3X21hbmlmZXN0ID0gbWFuaWZl
c3RfaWQodG1wKTsKICB3aGlsZSAocGFyc2VyLnN5bXAoc3ltczo6b2xkX3JldmlzaW9uKSkKICAg
IHBhcnNlX2VkZ2UocGFyc2VyLCByZXYuZWRnZXMpOwp9Cgp2b2lkIApyZWFkX3JldmlzaW9uX3Nl
dChkYXRhIGNvbnN0ICYgZGF0LAogICAgICAgICAgICAgICAgICByZXZpc2lvbl9zZXQgJiByZXYp
CnsKICBzdGQ6OmlzdHJpbmdzdHJlYW0gaXNzKGRhdCgpKTsKICBiYXNpY19pbzo6aW5wdXRfc291
cmNlIHNyYyhpc3MsICJyZXZpc2lvbiIpOwogIGJhc2ljX2lvOjp0b2tlbml6ZXIgdG9rKHNyYyk7
CiAgYmFzaWNfaW86OnBhcnNlciBwYXJzKHRvayk7CiAgcGFyc2VfcmV2aXNpb24ocGFycywgcmV2
KTsKfQoKdm9pZCAKcmVhZF9yZXZpc2lvbl9zZXQocmV2aXNpb25fZGF0YSBjb25zdCAmIGRhdCwK
ICAgICAgICAgICAgICAgICAgcmV2aXNpb25fc2V0ICYgcmV2KQp7CiAgZGF0YSB1bnBhY2tlZDsK
ICB1bnBhY2soZGF0LmlubmVyKCksIHVucGFja2VkKTsKICByZWFkX3JldmlzaW9uX3NldCh1bnBh
Y2tlZCwgcmV2KTsKfQoKdm9pZAp3cml0ZV9yZXZpc2lvbl9zZXQocmV2aXNpb25fc2V0IGNvbnN0
ICYgcmV2LAogICAgICAgICAgICAgICAgICAgZGF0YSAmIGRhdCkKewogIHN0ZDo6b3N0cmluZ3N0
cmVhbSBvc3M7CiAgYmFzaWNfaW86OnByaW50ZXIgcHIob3NzKTsKICBwcmludF9yZXZpc2lvbihw
ciwgcmV2KTsKICBkYXQgPSBkYXRhKG9zcy5zdHIoKSk7Cn0KCnZvaWQKd3JpdGVfcmV2aXNpb25f
c2V0KHJldmlzaW9uX3NldCBjb25zdCAmIHJldiwKICAgICAgICAgICAgICAgICAgIHJldmlzaW9u
X2RhdGEgJiBkYXQpCnsKICBkYXRhIGQ7CiAgd3JpdGVfcmV2aXNpb25fc2V0KHJldiwgZCk7CiAg
YmFzZTY0PCBnemlwPGRhdGE+ID4gcGFja2VkOwogIHBhY2soZCwgcGFja2VkKTsKICBkYXQgPSBy
ZXZpc2lvbl9kYXRhKHBhY2tlZCk7Cn0KCiNpZmRlZiBCVUlMRF9VTklUX1RFU1RTCiNpbmNsdWRl
ICJ1bml0X3Rlc3RzLmhoIgojaW5jbHVkZSAic2FuaXR5LmhoIgoKc3RhdGljIHZvaWQgCnJldmlz
aW9uX3Rlc3QoKQp7Cn0KCnZvaWQgCmFkZF9yZXZpc2lvbl90ZXN0cyh0ZXN0X3N1aXRlICogc3Vp
dGUpCnsKICBJKHN1aXRlKTsKICBzdWl0ZS0+YWRkKEJPT1NUX1RFU1RfQ0FTRSgmcmV2aXNpb25f
dGVzdCkpOwp9CgoKI2VuZGlmIC8vIEJVSUxEX1VOSVRfVEVTVFMK
_ATEOF


cat >left.b64 <<'_ATEOF'
Ly8gY29weXJpZ2h0IChDKSAyMDA0IGdyYXlkb24gaG9hcmUgPGdyYXlkb25AcG9ib3guY29tPgov
LyBhbGwgcmlnaHRzIHJlc2VydmVkLgovLyBsaWNlbnNlZCB0byB0aGUgcHVibGljIHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIEdQTCAoPj0gMikKLy8gc2VlIHRoZSBmaWxlIENPUFlJTkcgZm9y
IGRldGFpbHMKCiNpbmNsdWRlIDxjY3R5cGU+CiNpbmNsdWRlIDxjc3RkbGliPgojaW5jbHVkZSA8
aW9zdHJlYW0+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDxzc3RyZWFt
PgojaW5jbHVkZSA8c3RyaW5nPgoKI2luY2x1ZGUgPGJvb3N0L2xleGljYWxfY2FzdC5ocHA+CiNp
bmNsdWRlIDxib29zdC9keW5hbWljX2JpdHNldC5ocHA+CiNpbmNsdWRlIDxib29zdC9zaGFyZWRf
cHRyLmhwcD4KCiNpbmNsdWRlICJiYXNpY19pby5oaCIKI2luY2x1ZGUgImNoYW5nZV9zZXQuaGgi
CiNpbmNsdWRlICJjb25zdGFudHMuaGgiCiNpbmNsdWRlICJyZXZpc2lvbi5oaCIKI2luY2x1ZGUg
InNhbml0eS5oaCIKI2luY2x1ZGUgInRyYW5zZm9ybXMuaGgiCiNpbmNsdWRlICJ2b2NhYi5oaCIK
CgovLyBjYWxjdWxhdGluZyBsZWFzdCBjb21tb24gYW5jZXN0b3JzIGlzIGEgZGVsaWNhdGUgdGhp
bmcuCi8vIAovLyBpdCB0dXJucyBvdXQgdGhhdCB3ZSBjYW5ub3QgY2hvb3NlIHRoZSBzaW1wbGUg
ImxlYXN0IGNvbW1vbiBhbmNlc3RvciIKLy8gZm9yIHB1cnBvc2VzIG9mIGEgbWVyZ2UsIGJlY2F1
c2UgaXQgaXMgcG9zc2libGUgdGhhdCB0aGVyZSBhcmUgdHdvCi8vIGVxdWFsbHkgcmVhY2hhYmxl
IGNvbW1vbiBhbmNlc3RvcnMsIGFuZCB0aGlzIHByb2R1Y2VzIGFtYmlndWl0eSBpbiB0aGUKLy8g
bWVyZ2UuIHRoZSByZXN1bHQgLS0gaW4gYSBwYXRob2xvZ2ljYWwgY2FzZSAtLSBpcyBzaWxlbnRs
eSBhY2NlcHRpbmcgb25lCi8vIHNldCBvZiBlZGl0cyB3aGlsZSBkaXNjYXJkaW5nIGFub3RoZXI7
IG5vdCBleGFjdGx5IHdoYXQgeW91IHdhbnQgYQovLyB2ZXJzaW9uIGNvbnRyb2wgdG9vbCB0byBk
by4KLy8KLy8gYSBjb25zZXJ2YXRpdmUgYXBwcm94aW1hdGlvbiBpcyB3aGF0IHdlJ2xsIGNhbGwg
YSAic3ViZ3JhcGggcmVjdXJyaW5nIgovLyBMQ0EgYWxnb3JpdGhtLiB0aGlzIGlzIHNvbWV3aGF0
IGxpa2UgbG9jYXRpbmcgdGhlIGxlYXN0IGNvbW1vbiBkb21pbmF0b3IKLy8gbm9kZSwgYnV0IG5v
dCBxdWl0ZS4gaXQgaXMgYWN0dWFsbHkganVzdCBhIHZhbmlsbGEgTENBIHNlYXJjaCwgZXhjZXB0
Ci8vIHRoYXQgYW55IHRpbWUgdGhlcmUncyBhIGZvcmsgKGEgaGlzdG9yaWNhbCBtZXJnZSBsb29r
cyBsaWtlIGEgZm9yayBmcm9tCi8vIG91ciBwZXJzcGVjdGl2ZSwgd29ya2luZyBiYWNrd2FyZHMg
ZnJvbSBjaGlsZHJlbiB0byBwYXJlbnRzKSBpdCByZWR1Y2VzCi8vIHRoZSBmb3JrIHRvIGEgY29t
bW9uIHBhcmVudCB2aWEgYSBzZXF1ZW5jZSBvZiBwYWlyd2lzZSByZWN1cnNpdmUgY2FsbHMKLy8g
dG8gaXRzZWxmIGJlZm9yZSBwcm9jZWVkaW5nLiB0aGlzIHdpbGwgYWx3YXlzIHJlc29sdmUgdG8g
YSBjb21tb24gcGFyZW50Ci8vIHdpdGggbm8gYW1iaWd1aXR5LCB1bmxlc3MgaXQgZmFsbHMgb2Zm
IHRoZSByb290IG9mIHRoZSBncmFwaC4KLy8KLy8gdW5mb3J0dW5hdGVseSB0aGUgc3ViZ3JhcGgg
cmVjdXJyaW5nIGFsZ29yaXRobSBzb21ldGltZXMgZ29lcyB0b28gZmFyCi8vIGJhY2sgaW4gaGlz
dG9yeSAtLSBmb3IgZXhhbXBsZSBpZiB0aGVyZSBpcyBhbiB1bmFtYmlndW91cyBwcm9wYWdhdGUg
ZnJvbQovLyBvbmUgYnJhbmNoIHRvIGFub3RoZXIsIHRoZSBlbnRpcmUgc3ViZ3JhcGggcHJlY2Vl
ZGluZyB0aGUgcHJvcGFnYXRlIG9uCi8vIHRoZSByZWNpcGllbnQgYnJhbmNoIGlzIGVsaWRlZCwg
c2luY2UgaXQgaXMgYSBtZXJnZS4KLy8KLy8gb3VyIGN1cnJlbnQgaHlwb3RoZXNpcyBpcyB0aGF0
IHRoZSAqZXhhY3QqIGNvbmRpdGlvbiB3ZSdyZSBsb29raW5nIGZvciwKLy8gd2hlbiBkb2luZyBh
IG1lcmdlLCBpcyB0aGUgbGVhc3Qgbm9kZSB3aGljaCBkb21pbmF0ZXMgb25lIHNpZGUgb2YgdGhl
Ci8vIG1lcmdlIGFuZCBpcyBhbiBhbmNlc3RvciBvZiB0aGUgb3RoZXIuCgp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgY3R4Owp0eXBlZGVmIGJvb3N0OjpkeW5hbWljX2JpdHNldDw+IGJpdG1hcDsKdHlw
ZWRlZiBib29zdDo6c2hhcmVkX3B0cjxiaXRtYXA+IHNoYXJlZF9iaXRtYXA7CgpzdGF0aWMgdm9p
ZCAKZW5zdXJlX3BhcmVudHNfbG9hZGVkKGN0eCBjaGlsZCwKICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6bWFwPGN0eCwgc2hhcmVkX2JpdG1hcD4gJiBwYXJlbnRzLAogICAgICAgICAgICAgICAg
ICAgICAgaW50ZXJuZXI8Y3R4PiAmIGludGVybiwKICAgICAgICAgICAgICAgICAgICAgIGFwcF9z
dGF0ZSAmIGFwcCkKewogIGlmIChwYXJlbnRzLmZpbmQoY2hpbGQpICE9IHBhcmVudHMuZW5kKCkp
CiAgICByZXR1cm47CgogIEwoRigibG9hZGluZyBwYXJlbnRzIGZvciBub2RlICVkXG4iKSAlIGNo
aWxkKTsKCiAgc3RkOjpzZXQ8cmV2aXNpb25faWQ+IGltbV9wYXJlbnRzOwogIGFwcC5kYi5nZXRf
cmV2aXNpb25fcGFyZW50cyhyZXZpc2lvbl9pZChpbnRlcm4ubG9va3VwKGNoaWxkKSksIGltbV9w
YXJlbnRzKTsKCiAgLy8gVGhlIG51bGwgcmV2aXNpb24gaXMgbm90IGEgcGFyZW50IGZvciBwdXJw
b3NlcyBvZiBmaW5kaW5nIGNvbW1vbgogIC8vIGFuY2VzdG9ycy4KICBmb3IgKHN0ZDo6c2V0PHJl
dmlzaW9uX2lkPjo6aXRlcmF0b3IgcCA9IGltbV9wYXJlbnRzLmJlZ2luKCk7CiAgICAgICBwICE9
IGltbV9wYXJlbnRzLmVuZCgpOyArK3ApCiAgICB7CiAgICAgIGlmIChudWxsX2lkKCpwKSkKICAg
ICAgICBpbW1fcGFyZW50cy5lcmFzZShwKTsKICAgIH0KICAgICAgICAgICAgICAKICBzaGFyZWRf
Yml0bWFwIGJpdHMgPSBzaGFyZWRfYml0bWFwKG5ldyBiaXRtYXAocGFyZW50cy5zaXplKCkpKTsK
ICAKICBmb3IgKHN0ZDo6c2V0PHJldmlzaW9uX2lkPjo6Y29uc3RfaXRlcmF0b3IgcCA9IGltbV9w
YXJlbnRzLmJlZ2luKCk7CiAgICAgICBwICE9IGltbV9wYXJlbnRzLmVuZCgpOyArK3ApCiAgICB7
CiAgICAgIGN0eCBwbiA9IGludGVybi5pbnRlcm4ocC0+aW5uZXIoKSgpKTsKICAgICAgTChGKCJw
YXJlbnQgJXMgLT4gbm9kZSAlZFxuIikgJSAqcCAlIHBuKTsKICAgICAgaWYgKHBuID49IGJpdHMt
PnNpemUoKSkgCiAgICAgICAgYml0cy0+cmVzaXplKHBuKzEpOwogICAgICBiaXRzLT5zZXQocG4p
OwogICAgfQogICAgCiAgcGFyZW50cy5pbnNlcnQoc3RkOjptYWtlX3BhaXIoY2hpbGQsIGJpdHMp
KTsKfQoKc3RhdGljIGJvb2wgCmV4cGFuZF9kb21pbmF0b3JzKHN0ZDo6bWFwPGN0eCwgc2hhcmVk
X2JpdG1hcD4gJiBwYXJlbnRzLAogICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxjdHgsIHNoYXJl
ZF9iaXRtYXA+ICYgZG9taW5hdG9ycywKICAgICAgICAgICAgICAgICAgaW50ZXJuZXI8Y3R4PiAm
IGludGVybiwKICAgICAgICAgICAgICAgICAgYXBwX3N0YXRlICYgYXBwKQp7CiAgYm9vbCBzb21l
dGhpbmdfY2hhbmdlZCA9IGZhbHNlOwogIHN0ZDo6dmVjdG9yPGN0eD4gbm9kZXM7CgogIG5vZGVz
LnJlc2VydmUoZG9taW5hdG9ycy5zaXplKCkpOwoKICAvLyBwYXNzIDEsIHB1bGwgb3V0IGFsbCB0
aGUgbm9kZSBudW1iZXJzIHdlJ3JlIGdvaW5nIHRvIHNjYW4gdGhpcyB0aW1lIGFyb3VuZAogIGZv
ciAoc3RkOjptYXA8Y3R4LCBzaGFyZWRfYml0bWFwPjo6Y29uc3RfaXRlcmF0b3IgZSA9IGRvbWlu
YXRvcnMuYmVnaW4oKTsgCiAgICAgICBlICE9IGRvbWluYXRvcnMuZW5kKCk7ICsrZSkKICAgIG5v
ZGVzLnB1c2hfYmFjayhlLT5maXJzdCk7CiAgCiAgLy8gcGFzcyAyLCB1cGRhdGUgYW55IG9mIHRo
ZSBkb21pbmF0b3IgZW50cmllcyB3ZSBjYW4KICBmb3IgKHN0ZDo6dmVjdG9yPGN0eD46OmNvbnN0
X2l0ZXJhdG9yIG4gPSBub2Rlcy5iZWdpbigpOyAKICAgICAgIG4gIT0gbm9kZXMuZW5kKCk7ICsr
bikKICAgIHsKICAgICAgc2hhcmVkX2JpdG1hcCBiaXRzID0gZG9taW5hdG9yc1sqbl07CiAgICAg
IGJpdG1hcCBzYXZlZCgqYml0cyk7CiAgICAgIGlmIChiaXRzLT5zaXplKCkgPD0gKm4pCiAgICAg
ICAgYml0cy0+cmVzaXplKCpuICsgMSk7CiAgICAgIGJpdHMtPnNldCgqbik7CiAgICAgIAogICAg
ICBlbnN1cmVfcGFyZW50c19sb2FkZWQoKm4sIHBhcmVudHMsIGludGVybiwgYXBwKTsKICAgICAg
c2hhcmVkX2JpdG1hcCBuX3BhcmVudHMgPSBwYXJlbnRzWypuXTsKICAgICAgCiAgICAgIGJpdG1h
cCBpbnRlcnNlY3Rpb24oYml0cy0+c2l6ZSgpKTsKICAgICAgCiAgICAgIGJvb2wgZmlyc3QgPSB0
cnVlOwogICAgICBmb3IgKHVuc2lnbmVkIGxvbmcgcGFyZW50ID0gMDsgCiAgICAgICAgICAgcGFy
ZW50ICE9IG5fcGFyZW50cy0+c2l6ZSgpOyArK3BhcmVudCkKICAgICAgICB7CiAgICAgICAgICBp
ZiAoISBuX3BhcmVudHMtPnRlc3QocGFyZW50KSkKICAgICAgICAgICAgY29udGludWU7CgogICAg
ICAgICAgaWYgKGRvbWluYXRvcnMuZmluZChwYXJlbnQpID09IGRvbWluYXRvcnMuZW5kKCkpCiAg
ICAgICAgICAgIGRvbWluYXRvcnMuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKHBhcmVudCwgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZF9iaXRtYXAobmV3
IGJpdG1hcCgpKSkpOwogICAgICAgICAgc2hhcmVkX2JpdG1hcCBwYml0cyA9IGRvbWluYXRvcnNb
cGFyZW50XTsKCiAgICAgICAgICBpZiAoYml0cy0+c2l6ZSgpID4gcGJpdHMtPnNpemUoKSkKICAg
ICAgICAgICAgcGJpdHMtPnJlc2l6ZShiaXRzLT5zaXplKCkpOwoKICAgICAgICAgIGlmIChwYml0
cy0+c2l6ZSgpID4gYml0cy0+c2l6ZSgpKQogICAgICAgICAgICBiaXRzLT5yZXNpemUocGJpdHMt
PnNpemUoKSk7CgogICAgICAgICAgaWYgKGZpcnN0KQogICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgaW50ZXJzZWN0aW9uID0gKCpwYml0cyk7CiAgICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTsK
ICAgICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAgICBpbnRlcnNlY3Rpb24gJj0g
KCpwYml0cyk7CiAgICAgICAgfQoKICAgICAgKCpiaXRzKSB8PSBpbnRlcnNlY3Rpb247CiAgICAg
IGlmICgqYml0cyAhPSBzYXZlZCkKICAgICAgICBzb21ldGhpbmdfY2hhbmdlZCA9IHRydWU7CiAg
ICB9CiAgcmV0dXJuIHNvbWV0aGluZ19jaGFuZ2VkOwp9CgoKc3RhdGljIGJvb2wgCmV4cGFuZF9h
bmNlc3RvcnMoc3RkOjptYXA8Y3R4LCBzaGFyZWRfYml0bWFwPiAmIHBhcmVudHMsCiAgICAgICAg
ICAgICAgICAgc3RkOjptYXA8Y3R4LCBzaGFyZWRfYml0bWFwPiAmIGFuY2VzdG9ycywKICAgICAg
ICAgICAgICAgICBpbnRlcm5lcjxjdHg+ICYgaW50ZXJuLAogICAgICAgICAgICAgICAgIGFwcF9z
dGF0ZSAmIGFwcCkKewogIGJvb2wgc29tZXRoaW5nX2NoYW5nZWQgPSBmYWxzZTsKICBzdGQ6OnZl
Y3RvcjxjdHg+IG5vZGVzOwoKICBub2Rlcy5yZXNlcnZlKGFuY2VzdG9ycy5zaXplKCkpOwoKICAv
LyBwYXNzIDEsIHB1bGwgb3V0IGFsbCB0aGUgbm9kZSBudW1iZXJzIHdlJ3JlIGdvaW5nIHRvIHNj
YW4gdGhpcyB0aW1lIGFyb3VuZAogIGZvciAoc3RkOjptYXA8Y3R4LCBzaGFyZWRfYml0bWFwPjo6
Y29uc3RfaXRlcmF0b3IgZSA9IGFuY2VzdG9ycy5iZWdpbigpOyAKICAgICAgIGUgIT0gYW5jZXN0
b3JzLmVuZCgpOyArK2UpCiAgICBub2Rlcy5wdXNoX2JhY2soZS0+Zmlyc3QpOwogIAogIC8vIHBh
c3MgMiwgdXBkYXRlIGFueSBvZiB0aGUgYW5jZXN0b3IgZW50cmllcyB3ZSBjYW4KICBmb3IgKHN0
ZDo6dmVjdG9yPGN0eD46OmNvbnN0X2l0ZXJhdG9yIG4gPSBub2Rlcy5iZWdpbigpOyBuICE9IG5v
ZGVzLmVuZCgpOyArK24pCiAgICB7CiAgICAgIHNoYXJlZF9iaXRtYXAgYml0cyA9IGFuY2VzdG9y
c1sqbl07CiAgICAgIGJpdG1hcCBzYXZlZCgqYml0cyk7CiAgICAgIGlmIChiaXRzLT5zaXplKCkg
PD0gKm4pCiAgICAgICAgYml0cy0+cmVzaXplKCpuICsgMSk7CiAgICAgIGJpdHMtPnNldCgqbik7
CgogICAgICBlbnN1cmVfcGFyZW50c19sb2FkZWQoKm4sIHBhcmVudHMsIGludGVybiwgYXBwKTsK
ICAgICAgc2hhcmVkX2JpdG1hcCBuX3BhcmVudHMgPSBwYXJlbnRzWypuXTsKICAgICAgZm9yIChj
dHggcGFyZW50ID0gMDsgcGFyZW50ICE9IG5fcGFyZW50cy0+c2l6ZSgpOyArK3BhcmVudCkKICAg
ICAgICB7CiAgICAgICAgICBpZiAoISBuX3BhcmVudHMtPnRlc3QocGFyZW50KSkKICAgICAgICAg
ICAgY29udGludWU7CgogICAgICAgICAgaWYgKGJpdHMtPnNpemUoKSA8PSBwYXJlbnQpCiAgICAg
ICAgICAgIGJpdHMtPnJlc2l6ZShwYXJlbnQgKyAxKTsKICAgICAgICAgIGJpdHMtPnNldChwYXJl
bnQpOwoKICAgICAgICAgIGlmIChhbmNlc3RvcnMuZmluZChwYXJlbnQpID09IGFuY2VzdG9ycy5l
bmQoKSkKICAgICAgICAgICAgYW5jZXN0b3JzLmluc2VydChtYWtlX3BhaXIocGFyZW50LCAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZF9iaXRtYXAobmV3IGJp
dG1hcCgpKSkpOwogICAgICAgICAgc2hhcmVkX2JpdG1hcCBwYml0cyA9IGFuY2VzdG9yc1twYXJl
bnRdOwoKICAgICAgICAgIGlmIChiaXRzLT5zaXplKCkgPiBwYml0cy0+c2l6ZSgpKQogICAgICAg
ICAgICBwYml0cy0+cmVzaXplKGJpdHMtPnNpemUoKSk7CgogICAgICAgICAgaWYgKHBiaXRzLT5z
aXplKCkgPiBiaXRzLT5zaXplKCkpCiAgICAgICAgICAgIGJpdHMtPnJlc2l6ZShwYml0cy0+c2l6
ZSgpKTsKCiAgICAgICAgICAoKmJpdHMpIHw9ICgqcGJpdHMpOwogICAgICAgIH0KICAgICAgaWYg
KCpiaXRzICE9IHNhdmVkKQogICAgICAgIHNvbWV0aGluZ19jaGFuZ2VkID0gdHJ1ZTsKICAgIH0K
ICByZXR1cm4gc29tZXRoaW5nX2NoYW5nZWQ7Cn0KCnN0YXRpYyBib29sIApmaW5kX2ludGVyc2Vj
dGluZ19ub2RlKGJpdG1hcCAmIGZzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgYml0bWFwICYg
c25kLCAKICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5lcjxjdHg+IGNvbnN0ICYgaW50ZXJu
LCAKICAgICAgICAgICAgICAgICAgICAgICByZXZpc2lvbl9pZCAmIGFuYykKewogIAogIGlmIChm
c3Quc2l6ZSgpID4gc25kLnNpemUoKSkKICAgIHNuZC5yZXNpemUoZnN0LnNpemUoKSk7CiAgZWxz
ZSBpZiAoc25kLnNpemUoKSA+IGZzdC5zaXplKCkpCiAgICBmc3QucmVzaXplKHNuZC5zaXplKCkp
OwogIAogIGJpdG1hcCBpbnRlcnNlY3Rpb24gPSBmc3QgJiBzbmQ7CiAgaWYgKGludGVyc2VjdGlv
bi5hbnkoKSkKICAgIHsKICAgICAgTChGKCJmb3VuZCAlZCBpbnRlcnNlY3Rpbmcgbm9kZXNcbiIp
ICUgaW50ZXJzZWN0aW9uLmNvdW50KCkpOwogICAgICBmb3IgKGN0eCBpID0gMDsgaSA8IGludGVy
c2VjdGlvbi5zaXplKCk7ICsraSkKICAgICAgICB7CiAgICAgICAgICBpZiAoaW50ZXJzZWN0aW9u
LnRlc3QoaSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBhbmMgPSByZXZpc2lvbl9pZChp
bnRlcm4ubG9va3VwKGkpKTsKICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
fQogICAgICAgIH0KICAgIH0KICByZXR1cm4gZmFsc2U7Cn0KCi8vICBzdGF0aWMgdm9pZAovLyAg
ZHVtcF9iaXRzZXRfbWFwKHN0cmluZyBjb25zdCAmIGhkciwKLy8gICAgICAgICAgICAgIHN0ZDo6
bWFwPCBjdHgsIHNoYXJlZF9iaXRtYXAgPiBjb25zdCAmIG1tKQovLyAgewovLyAgICBMKEYoImR1
bXBpbmcgWyVzXSAoJWQgZW50cmllcylcbiIpICUgaGRyICUgbW0uc2l6ZSgpKTsKLy8gICAgZm9y
IChzdGQ6Om1hcDwgY3R4LCBzaGFyZWRfYml0bWFwID46OmNvbnN0X2l0ZXJhdG9yIGkgPSBtbS5i
ZWdpbigpOwovLyAgICAgICAgIGkgIT0gbW0uZW5kKCk7ICsraSkKLy8gICAgICB7Ci8vICAgICAg
ICBMKEYoImR1bXAgWyVzXTogJWQgLT4gJXNcbiIpICUgaGRyICUgaS0+Zmlyc3QgJSAoKihpLT5z
ZWNvbmQpKSk7Ci8vICAgICAgfQovLyAgfQoKYm9vbCAKZmluZF9jb21tb25fYW5jZXN0b3IocmV2
aXNpb25faWQgY29uc3QgJiBsZWZ0LAogICAgICAgICAgICAgICAgICAgICByZXZpc2lvbl9pZCBj
b25zdCAmIHJpZ2h0LAogICAgICAgICAgICAgICAgICAgICByZXZpc2lvbl9pZCAmIGFuYywKICAg
ICAgICAgICAgICAgICAgICAgYXBwX3N0YXRlICYgYXBwKQp7CiAgaW50ZXJuZXI8Y3R4PiBpbnRl
cm47CiAgc3RkOjptYXA8IGN0eCwgc2hhcmVkX2JpdG1hcCA+IAogICAgcGFyZW50cywgYW5jZXN0
b3JzLCBkb21pbmF0b3JzOwogIAogIGN0eCBsbiA9IGludGVybi5pbnRlcm4obGVmdC5pbm5lcigp
KCkpOwogIGN0eCBybiA9IGludGVybi5pbnRlcm4ocmlnaHQuaW5uZXIoKSgpKTsKICAKICBzaGFy
ZWRfYml0bWFwIGxhbmMgPSBzaGFyZWRfYml0bWFwKG5ldyBiaXRtYXAoKSk7CiAgc2hhcmVkX2Jp
dG1hcCByYW5jID0gc2hhcmVkX2JpdG1hcChuZXcgYml0bWFwKCkpOwogIHNoYXJlZF9iaXRtYXAg
bGRvbSA9IHNoYXJlZF9iaXRtYXAobmV3IGJpdG1hcCgpKTsKICBzaGFyZWRfYml0bWFwIHJkb20g
PSBzaGFyZWRfYml0bWFwKG5ldyBiaXRtYXAoKSk7CgogIGFuY2VzdG9ycy5pbnNlcnQobWFrZV9w
YWlyKGxuLCBsYW5jKSk7CiAgYW5jZXN0b3JzLmluc2VydChtYWtlX3BhaXIocm4sIHJhbmMpKTsK
ICBkb21pbmF0b3JzLmluc2VydChtYWtlX3BhaXIobG4sIGxkb20pKTsKICBkb21pbmF0b3JzLmlu
c2VydChtYWtlX3BhaXIocm4sIHJkb20pKTsKICAKICBMKEYoInNlYXJjaGluZyBmb3IgY29tbW9u
IGFuY2VzdG9yLCBsZWZ0PSVzIHJpZ2h0PSVzXG4iKSAlIGxlZnQgJSByaWdodCk7CiAgCiAgd2hp
bGUgKGV4cGFuZF9hbmNlc3RvcnMocGFyZW50cywgYW5jZXN0b3JzLCBpbnRlcm4sIGFwcCkgfHwK
ICAgICAgICAgZXhwYW5kX2RvbWluYXRvcnMocGFyZW50cywgZG9taW5hdG9ycywgaW50ZXJuLCBh
cHApKQogICAgewogICAgICBMKEYoImNvbW1vbiBhbmNlc3RvciBzY2FuIFtwYXI9JWQsYW5jPSVk
LGRvbT0lZF1cbiIpICUgCiAgICAgICAgcGFyZW50cy5zaXplKCkgJSBhbmNlc3RvcnMuc2l6ZSgp
ICUgZG9taW5hdG9ycy5zaXplKCkpOwoKICAgICAgaWYgKGZpbmRfaW50ZXJzZWN0aW5nX25vZGUo
KmxhbmMsICpyZG9tLCBpbnRlcm4sIGFuYykpCiAgICAgICAgewogICAgICAgICAgTChGKCJmb3Vu
ZCBub2RlICVkLCBhbmNlc3RvciBvZiBsZWZ0ICVzIGFuZCBkb21pbmF0aW5nIHJpZ2h0ICVzXG4i
KQogICAgICAgICAgICAlIGFuYyAlIGxlZnQgJSByaWdodCk7CiAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICB9CiAgICAgIAogICAgICBlbHNlIGlmIChmaW5kX2ludGVyc2VjdGluZ19ub2Rl
KCpyYW5jLCAqbGRvbSwgaW50ZXJuLCBhbmMpKQogICAgICAgIHsKICAgICAgICAgIEwoRigiZm91
bmQgbm9kZSAlZCwgYW5jZXN0b3Igb2YgcmlnaHQgJXMgYW5kIGRvbWluYXRpbmcgbGVmdCAlc1xu
IikKICAgICAgICAgICAgJSBhbmMgJSByaWdodCAlIGxlZnQpOwogICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgfQogICAgfQovLyAgICAgIGR1bXBfYml0c2V0X21hcCgiYW5jZXN0b3JzIiwg
YW5jZXN0b3JzKTsKLy8gICAgICBkdW1wX2JpdHNldF9tYXAoImRvbWluYXRvcnMiLCBkb21pbmF0
b3JzKTsKLy8gICAgICBkdW1wX2JpdHNldF9tYXAoInBhcmVudHMiLCBwYXJlbnRzKTsKICByZXR1
cm4gZmFsc2U7Cn0KCgovLyAKLy8gVGhlIGlkZWEgd2l0aCB0aGlzIGFsZ29yaXRobSBpcyB0byB3
YWxrIGZyb20gY2hpbGQgdXAgdG8gYW5jZXN0b3IsCi8vIHJlY3Vyc2l2ZWx5LCBhY2N1bXVsYXRp
bmcgYWxsIHRoZSBjaGFuZ2Vfc2V0cyBhc3NvY2lhdGVkIHdpdGgKLy8gaW50ZXJtZWRpYXRlIG5v
ZGVzIGludG8gKm9uZSBiaWcgY2hhbmdlX3NldCouCi8vCi8vIGNsZXZlciByZWFkZXJzIHdpbGwg
cmVhbGl6ZSB0aGlzIGlzIGFuIG92ZXJsYXBwaW5nLXN1YnByb2JsZW0gdHlwZQovLyBzaXR1YXRp
b24gYW5kIHRodXMgbmVlZHMgdG8ga2VlcCBhIGR5bmFtaWMgcHJvZ3JhbW1pbmcgbWFwIHRvIGtl
ZXAKLy8gaXRzZWxmIGluIGxpbmVhciBjb21wbGV4aXR5LgovLwovLyBpbiBmYWN0LCB3ZSBrZWVw
IHR3bzogb25lIHdoaWNoIG1hcHMgdG8gY29tcHV0ZWQgcmVzdWx0cyAocGFydGlhbF9jc2V0cykK
Ly8gYW5kIG9uZSB3aGljaCBqdXN0IGtlZXBzIGEgc2V0IG9mIGFsbCBub2RlcyB3ZSB0cmF2ZXJz
ZWQKLy8gKHZpc2l0ZWRfbm9kZXMpLiBpbiB0aGVvcnkgaXQgY291bGQgYmUgb25lIG1hcCB3aXRo
IGFuIGV4dHJhIGJvb2wgc3R1Y2sKLy8gb24gZWFjaCBlbnRyeSwgYnV0IEkgdGhpbmsgdGhhdCB3
b3VsZCBtYWtlIGl0IGV2ZW4gbGVzcyByZWFkYWJsZS4gaXQncwovLyBhbHJlYWR5IHF1aXRlIHVn
bHkuCi8vCgpzdGF0aWMgYm9vbCAKY2FsY3VsYXRlX2NoYW5nZV9zZXRzX3JlY3Vyc2l2ZShyZXZp
c2lvbl9pZCBjb25zdCAmIGFuY2VzdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldmlzaW9uX2lkIGNvbnN0ICYgY2hpbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXBwX3N0YXRlICYgYXBwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5n
ZV9zZXQgJiBjdW11bGF0aXZlX2NzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjptYXA8cmV2aXNpb25faWQsIGJvb3N0OjpzaGFyZWRfcHRyPGNoYW5nZV9zZXQ+ID4gJiBw
YXJ0aWFsX2NzZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c2V0PHJl
dmlzaW9uX2lkPiAmIHZpc2l0ZWRfbm9kZXMpCnsKCiAgaWYgKGFuY2VzdG9yID09IGNoaWxkKQog
ICAgcmV0dXJuIHRydWU7CgogIHZpc2l0ZWRfbm9kZXMuaW5zZXJ0KGNoaWxkKTsKCiAgYm9vbCBy
ZWxldmFudF9jaGlsZCA9IGZhbHNlOwoKICByZXZpc2lvbl9zZXQgcmV2OwogIGFwcC5kYi5nZXRf
cmV2aXNpb24oY2hpbGQsIHJldik7CgogIEwoRigiZXhwbG9yaW5nIGNoYW5nZXNldHMgZnJvbSBw
YXJlbnRzIG9mICVzLCBzZWVraW5nIHRvd2FyZHMgJXNcbiIpIAogICAgJSBjaGlsZCAlIGFuY2Vz
dG9yKTsKCiAgZm9yKGVkZ2VfbWFwOjpjb25zdF9pdGVyYXRvciBpID0gcmV2LmVkZ2VzLmJlZ2lu
KCk7IGkgIT0gcmV2LmVkZ2VzLmVuZCgpOyArK2kpCiAgICB7CiAgICAgIGJvb2wgcmVsZXZhbnRf
cGFyZW50ID0gZmFsc2U7CiAgICAgIHJldmlzaW9uX2lkIGN1cnJfcGFyZW50ID0gZWRnZV9vbGRf
cmV2aXNpb24oaSk7CgogICAgICBpZiAoY3Vycl9wYXJlbnQuaW5uZXIoKSgpLmVtcHR5KCkpCiAg
ICAgICAgY29udGludWU7CgogICAgICBjaGFuZ2Vfc2V0IGNzZXRfdG9fY3Vycl9wYXJlbnQ7Cgog
ICAgICBMKEYoImNvbnNpZGVyaW5nIHBhcmVudCAlcyBvZiAlc1xuIikgJSBjdXJyX3BhcmVudCAl
IGNoaWxkKTsKCiAgICAgIHN0ZDo6bWFwPHJldmlzaW9uX2lkLCBib29zdDo6c2hhcmVkX3B0cjxj
aGFuZ2Vfc2V0PiA+Ojpjb25zdF9pdGVyYXRvciBqID0gCiAgICAgICAgcGFydGlhbF9jc2V0cy5m
aW5kKGN1cnJfcGFyZW50KTsKICAgICAgaWYgKGogIT0gcGFydGlhbF9jc2V0cy5lbmQoKSkgCiAg
ICAgICAgewogICAgICAgICAgLy8gYSByZWN1cnNpdmUgY2FsbCBoYXMgdHJhdmVyc2VkIHRoaXMg
cGFyZW50IGJlZm9yZSBhbmQgYnVpbHQgYW4KICAgICAgICAgIC8vIGV4aXN0aW5nIGNzZXQuIGp1
c3QgcmV1c2UgdGhhdCByYXRoZXIgdGhhbiByZS10cmF2ZXJzaW5nCiAgICAgICAgICBjc2V0X3Rv
X2N1cnJfcGFyZW50ID0gKihqLT5zZWNvbmQpOwogICAgICAgICAgcmVsZXZhbnRfcGFyZW50ID0g
dHJ1ZTsKICAgICAgICB9CiAgICAgIGVsc2UgaWYgKHZpc2l0ZWRfbm9kZXMuZmluZChjdXJyX3Bh
cmVudCkgIT0gdmlzaXRlZF9ub2Rlcy5lbmQoKSkKICAgICAgICB7CiAgICAgICAgICAvLyBhIHJl
Y3Vyc2l2ZSBjYWxsIGhhcyB0cmF2ZXJzZWQgdGhpcyBwYXJlbnQsIGJ1dCB0aGVyZSB3YXMgbm8K
ICAgICAgICAgIC8vIHBhdGggZnJvbSBpdCB0byB0aGUgcm9vdCwgc28gdGhlIHBhcmVudCBpcyBp
cnJlbGV2YW50LiBza2lwLgogICAgICAgICAgcmVsZXZhbnRfcGFyZW50ID0gZmFsc2U7CiAgICAg
ICAgfQogICAgICBlbHNlCiAgICAgICAgcmVsZXZhbnRfcGFyZW50ID0gY2FsY3VsYXRlX2NoYW5n
ZV9zZXRzX3JlY3Vyc2l2ZShhbmNlc3RvciwgY3Vycl9wYXJlbnQsIGFwcCwgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc2V0X3RvX2N1
cnJfcGFyZW50LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcnRpYWxfY3NldHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpdGVkX25vZGVzKTsKCiAgICAgIGlmIChy
ZWxldmFudF9wYXJlbnQpCiAgICAgICAgewogICAgICAgICAgTChGKCJyZXZpc2lvbiAlcyBpcyBy
ZWxldmFudCwgY29tcG9zaW5nIHdpdGggZWRnZSB0byAlc1xuIikgCiAgICAgICAgICAgICUgY3Vy
cl9wYXJlbnQgJSBjaGlsZCk7CiAgICAgICAgICBjb25jYXRlbmF0ZV9jaGFuZ2Vfc2V0cyhjc2V0
X3RvX2N1cnJfcGFyZW50LCBlZGdlX2NoYW5nZXMoaSksIGN1bXVsYXRpdmVfY3NldCk7CiAgICAg
ICAgICByZWxldmFudF9jaGlsZCA9IHRydWU7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAg
ICAgIGVsc2UKICAgICAgICBMKEYoInBhcmVudCAlcyBvZiAlcyBpcyBub3QgcmVsZXZhbnRcbiIp
ICUgY3Vycl9wYXJlbnQgJSBjaGlsZCk7CiAgICB9CgogIC8vIHN0b3JlIHRoZSBwYXJ0aWFsIGVk
Z2UgZnJvbSBhbmNlc3RvciAtPiBjaGlsZCwgc28gdGhhdCBpZiBhbnlvbmUKICAvLyByZS10cmF2
ZXJzZXMgdGhpcyBlZGdlIHRoZXknbGwganVzdCBmZXRjaCBmcm9tIHRoZSBwYXJ0aWFsX2VkZ2Vz
CiAgLy8gY2FjaGUuCiAgaWYgKHJlbGV2YW50X2NoaWxkKQogICAgcGFydGlhbF9jc2V0cy5pbnNl
cnQoc3RkOjptYWtlX3BhaXIoY2hpbGQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vc3Q6OnNoYXJlZF9wdHI8Y2hhbmdlX3NldD4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChuZXcgY2hhbmdlX3NldChjdW11bGF0aXZlX2NzZXQpKSkp
OwogIAogIHJldHVybiByZWxldmFudF9jaGlsZDsKfQoKdm9pZCAKY2FsY3VsYXRlX2NvbXBvc2l0
ZV9jaGFuZ2Vfc2V0KHJldmlzaW9uX2lkIGNvbnN0ICYgYW5jZXN0b3IsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXZpc2lvbl9pZCBjb25zdCAmIGNoaWxkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXBwX3N0YXRlICYgYXBwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlX3NldCAmIGNvbXBvc2VkKQp7CiAgTChGKCJjYWxjdWxhdGluZyBjb21w
b3NpdGUgY2hhbmdlc2V0IGJldHdlZW4gJXMgYW5kICVzXG4iKQogICAgJSBhbmNlc3RvciAlIGNo
aWxkKTsKICBzdGQ6OnNldDxyZXZpc2lvbl9pZD4gdmlzaXRlZDsKICBzdGQ6Om1hcDxyZXZpc2lv
bl9pZCwgYm9vc3Q6OnNoYXJlZF9wdHI8Y2hhbmdlX3NldD4gPiBwYXJ0aWFsOwogIGNhbGN1bGF0
ZV9jaGFuZ2Vfc2V0c19yZWN1cnNpdmUoYW5jZXN0b3IsIGNoaWxkLCBhcHAsIGNvbXBvc2VkLCBw
YXJ0aWFsLCB2aXNpdGVkKTsKfQoKLy8gbWlncmF0aW9uIHN0dWZmCi8vCi8vIEZJWE1FOiB0aGVz
ZSBhcmUgdGVtcG9yYXJ5IGZ1bmN0aW9ucywgb25jZSB3ZSd2ZSBkb25lIHRoZSBtaWdyYXRpb24g
dG8KLy8gcmV2aXNpb25zIC8gY2hhbmdlc2V0cywgd2UgY2FuIHJlbW92ZSB0aGVtLgoKc3RhdGlj
IHZvaWQgCmFuYWx5emVfbWFuaWZlc3RfY2hhbmdlcyhhcHBfc3RhdGUgJiBhcHAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBtYW5pZmVzdF9pZCBjb25zdCAmIHBhcmVudCwgCiAgICAgICAgICAg
ICAgICAgICAgICAgICBtYW5pZmVzdF9pZCBjb25zdCAmIGNoaWxkLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYW5nZV9zZXQgJiBjcykKewogIG1hbmlmZXN0X21hcCBtX3BhcmVudCwgbV9j
aGlsZDsKICBhcHAuZGIuZ2V0X21hbmlmZXN0KHBhcmVudCwgbV9wYXJlbnQpOwogIGFwcC5kYi5n
ZXRfbWFuaWZlc3QoY2hpbGQsIG1fY2hpbGQpOwoKICBmb3IgKG1hbmlmZXN0X21hcDo6Y29uc3Rf
aXRlcmF0b3IgaSA9IG1fcGFyZW50LmJlZ2luKCk7IAogICAgICAgaSAhPSBtX3BhcmVudC5lbmQo
KTsgKytpKQogICAgewogICAgICBtYW5pZmVzdF9tYXA6OmNvbnN0X2l0ZXJhdG9yIGogPSBtX2No
aWxkLmZpbmQobWFuaWZlc3RfZW50cnlfcGF0aChpKSk7CiAgICAgIGlmIChqID09IG1fY2hpbGQu
ZW5kKCkpCiAgICAgICAgY3MuZGVsZXRlX2ZpbGUobWFuaWZlc3RfZW50cnlfcGF0aChpKSk7CiAg
ICAgIGVsc2UgaWYgKCEgKG1hbmlmZXN0X2VudHJ5X2lkKGkpID09IG1hbmlmZXN0X2VudHJ5X2lk
KGopKSkKICAgICAgICB7CiAgICAgICAgICBjcy5hcHBseV9kZWx0YShtYW5pZmVzdF9lbnRyeV9w
YXRoKGkpLAogICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfZW50cnlfaWQoaSksIAog
ICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfZW50cnlfaWQoaikpOwogICAgICAgIH0g
ICAgICAgCiAgICB9CiAgZm9yIChtYW5pZmVzdF9tYXA6OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX2No
aWxkLmJlZ2luKCk7IAogICAgICAgaSAhPSBtX2NoaWxkLmVuZCgpOyArK2kpCiAgICB7CiAgICAg
IG1hbmlmZXN0X21hcDo6Y29uc3RfaXRlcmF0b3IgaiA9IG1fcGFyZW50LmZpbmQobWFuaWZlc3Rf
ZW50cnlfcGF0aChpKSk7CiAgICAgIGlmIChqID09IG1fcGFyZW50LmVuZCgpKQogICAgICAgIGNz
LmFkZF9maWxlKG1hbmlmZXN0X2VudHJ5X3BhdGgoaSksCiAgICAgICAgICAgICAgICAgICAgbWFu
aWZlc3RfZW50cnlfaWQoaSkpOwogICAgfQp9CgpzdGF0aWMgcmV2aXNpb25faWQKY29uc3RydWN0
X3JldmlzaW9ucyhhcHBfc3RhdGUgJiBhcHAsCiAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3Rf
aWQgY29uc3QgJiBjaGlsZCwKICAgICAgICAgICAgICAgICAgICBzdGQ6Om11bHRpbWFwPCBtYW5p
ZmVzdF9pZCwgbWFuaWZlc3RfaWQgPiBjb25zdCAmIGFuY2VzdHJ5LAogICAgICAgICAgICAgICAg
ICAgIHN0ZDo6bWFwPG1hbmlmZXN0X2lkLCByZXZpc2lvbl9pZD4gJiBtYXBwZWQpCnsKICByZXZp
c2lvbl9zZXQgcmV2OwogIHR5cGVkZWYgc3RkOjptdWx0aW1hcDwgbWFuaWZlc3RfaWQsIG1hbmlm
ZXN0X2lkID46OmNvbnN0X2l0ZXJhdG9yIGNpOwogIHN0ZDo6cGFpcjxjaSxjaT4gcmFuZ2UgPSBh
bmNlc3RyeS5lcXVhbF9yYW5nZShjaGlsZCk7CiAgZm9yIChjaSBpID0gcmFuZ2UuZmlyc3Q7IGkg
IT0gcmFuZ2Uuc2Vjb25kOyArK2kpCiAgICB7CiAgICAgIG1hbmlmZXN0X2lkIHBhcmVudChpLT5z
ZWNvbmQpOwogICAgICByZXZpc2lvbl9pZCBwYXJlbnRfcmlkOwogICAgICBzdGQ6Om1hcDxtYW5p
ZmVzdF9pZCwgcmV2aXNpb25faWQ+Ojpjb25zdF9pdGVyYXRvciBqID0gbWFwcGVkLmZpbmQocGFy
ZW50KTsKCiAgICAgIGlmIChqICE9IG1hcHBlZC5lbmQoKSkKICAgICAgICBwYXJlbnRfcmlkID0g
ai0+c2Vjb25kOwogICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgcGFyZW50X3JpZCA9IGNv
bnN0cnVjdF9yZXZpc2lvbnMoYXBwLCBwYXJlbnQsIGFuY2VzdHJ5LCBtYXBwZWQpOwogICAgICAg
ICAgUChGKCJpbnNlcnRpbmcgbWFwcGluZyAlZCA6ICVzIC0+ICVzXG4iKSAlIG1hcHBlZC5zaXpl
KCkgJSBwYXJlbnQgJSBwYXJlbnRfcmlkKTs7CiAgICAgICAgICBtYXBwZWQuaW5zZXJ0KHN0ZDo6
bWFrZV9wYWlyKHBhcmVudCwgcGFyZW50X3JpZCkpOwogICAgICAgIH0KICAgICAgCiAgICAgIGNo
YW5nZV9zZXQgY3M7CiAgICAgIGFuYWx5emVfbWFuaWZlc3RfY2hhbmdlcyhhcHAsIHBhcmVudCwg
Y2hpbGQsIGNzKTsKICAgICAgcmV2LmVkZ2VzLmluc2VydChzdGQ6Om1ha2VfcGFpcihwYXJlbnRf
cmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV9wYWly
KHBhcmVudCwgY3MpKSk7CiAgICB9IAoKICByZXZpc2lvbl9pZCByaWQ7CiAgaWYgKHJldi5lZGdl
cy5lbXB0eSgpKQogICAgewogICAgICBQKEYoImlnbm9yaW5nIGVtcHR5IHJldmlzaW9uIGZvciBt
YW5pZmVzdCAlc1xuIikgJSBjaGlsZCk7ICAKICAgICAgcmV0dXJuIHJpZDsKICAgIH0KCiAgcmV2
Lm5ld19tYW5pZmVzdCA9IGNoaWxkOwogIGNhbGN1bGF0ZV9pZGVudChyZXYsIHJpZCk7CgogIGlm
ICghYXBwLmRiLnJldmlzaW9uX2V4aXN0cyAocmlkKSkKICAgIHsKICAgICAgUChGKCJtYXBwaW5n
IG1hbmlmZXN0ICVzIHRvIHJldmlzaW9uICVzXG4iKSAlIGNoaWxkICUgcmlkKTsKICAgICAgYXBw
LmRiLnB1dF9yZXZpc2lvbihyaWQsIHJldik7CiAgICB9CiAgZWxzZQogICAgewogICAgICBQKEYo
InNraXBwaW5nIGFkZGl0aW9uYWwgcGF0aCB0byByZXZpc2lvbiAlc1xuIikgJSByaWQpOwogICAg
fQoKICAvLyBub3cgaG9pc3QgYWxsIHRoZSBpbnRlcmVzdGluZyBjZXJ0cyB1cCB0byB0aGUgcmV2
aXNpb24KICBzdGQ6OnNldDxjZXJ0X25hbWU+IGNuYW1lczsKICBjbmFtZXMuaW5zZXJ0KGNlcnRf
bmFtZShicmFuY2hfY2VydF9uYW1lKSk7CiAgY25hbWVzLmluc2VydChjZXJ0X25hbWUoZGF0ZV9j
ZXJ0X25hbWUpKTsKICBjbmFtZXMuaW5zZXJ0KGNlcnRfbmFtZShhdXRob3JfY2VydF9uYW1lKSk7
CiAgY25hbWVzLmluc2VydChjZXJ0X25hbWUodGFnX2NlcnRfbmFtZSkpOwogIGNuYW1lcy5pbnNl
cnQoY2VydF9uYW1lKGNoYW5nZWxvZ19jZXJ0X25hbWUpKTsKICBjbmFtZXMuaW5zZXJ0KGNlcnRf
bmFtZShjb21tZW50X2NlcnRfbmFtZSkpOwogIGNuYW1lcy5pbnNlcnQoY2VydF9uYW1lKHRlc3Ry
ZXN1bHRfY2VydF9uYW1lKSk7CgogIHN0ZDo6dmVjdG9yPCBtYW5pZmVzdDxjZXJ0PiA+IHRtcDsK
ICBhcHAuZGIuZ2V0X21hbmlmZXN0X2NlcnRzKGNoaWxkLCB0bXApOwogIGVyYXNlX2JvZ3VzX2Nl
cnRzKHRtcCwgYXBwKTsgICAgICAKICBmb3IgKHN0ZDo6dmVjdG9yPCBtYW5pZmVzdDxjZXJ0PiA+
Ojpjb25zdF9pdGVyYXRvciBpID0gdG1wLmJlZ2luKCk7CiAgICAgICBpICE9IHRtcC5lbmQoKTsg
KytpKQogICAgewogICAgICBpZiAoY25hbWVzLmZpbmQoaS0+aW5uZXIoKS5uYW1lKSA9PSBjbmFt
ZXMuZW5kKCkpCiAgICAgICAgY29udGludWU7CiAgICAgIGNlcnQgbmV3X2NlcnQ7CiAgICAgIGNl
cnRfdmFsdWUgdHY7CiAgICAgIGRlY29kZV9iYXNlNjQoaS0+aW5uZXIoKS52YWx1ZSwgdHYpOwog
ICAgICBtYWtlX3NpbXBsZV9jZXJ0KHJpZC5pbm5lcigpLCBpLT5pbm5lcigpLm5hbWUsIHR2LCBh
cHAsIG5ld19jZXJ0KTsKICAgICAgaWYgKCEgYXBwLmRiLnJldmlzaW9uX2NlcnRfZXhpc3RzKHJl
dmlzaW9uPGNlcnQ+KG5ld19jZXJ0KSkpCiAgICAgICAgYXBwLmRiLnB1dF9yZXZpc2lvbl9jZXJ0
KHJldmlzaW9uPGNlcnQ+KG5ld19jZXJ0KSk7CiAgICB9CiAgcmV0dXJuIHJpZDsgIAp9CgoKdm9p
ZCAKYnVpbGRfY2hhbmdlc2V0cyhhcHBfc3RhdGUgJiBhcHApCnsKICBzdGQ6OnZlY3RvcjwgbWFu
aWZlc3Q8Y2VydD4gPiB0bXA7CiAgYXBwLmRiLmdldF9tYW5pZmVzdF9jZXJ0cyhjZXJ0X25hbWUo
ImFuY2VzdG9yIiksIHRtcCk7CiAgZXJhc2VfYm9ndXNfY2VydHModG1wLCBhcHApOwoKICBzdGQ6
Om11bHRpbWFwPCBtYW5pZmVzdF9pZCwgbWFuaWZlc3RfaWQgPiBhbmNlc3RyeTsKICBzdGQ6OnNl
dDxtYW5pZmVzdF9pZD4gaGVhZHM7CiAgc3RkOjpzZXQ8bWFuaWZlc3RfaWQ+IHRvdGFsOwogIAog
IGZvciAoc3RkOjp2ZWN0b3I8IG1hbmlmZXN0PGNlcnQ+ID46OmNvbnN0X2l0ZXJhdG9yIGkgPSB0
bXAuYmVnaW4oKTsKICAgICAgIGkgIT0gdG1wLmVuZCgpOyArK2kpCiAgICB7CiAgICAgIGNlcnRf
dmFsdWUgdHY7CiAgICAgIGRlY29kZV9iYXNlNjQoaS0+aW5uZXIoKS52YWx1ZSwgdHYpOwogICAg
ICBtYW5pZmVzdF9pZCBjaGlsZCwgcGFyZW50OwogICAgICBjaGlsZCA9IGktPmlubmVyKCkuaWRl
bnQ7CiAgICAgIHBhcmVudCA9IGhleGVuYzxpZD4odHYoKSk7CiAgICAgIGhlYWRzLmluc2VydChj
aGlsZCk7CiAgICAgIGhlYWRzLmVyYXNlKHBhcmVudCk7CiAgICAgIHRvdGFsLmluc2VydChjaGls
ZCk7CiAgICAgIHRvdGFsLmluc2VydChwYXJlbnQpOwogICAgICBhbmNlc3RyeS5pbnNlcnQoc3Rk
OjptYWtlX3BhaXIoY2hpbGQsIHBhcmVudCkpOwogICAgfQogIAogIFAoRigiZm91bmQgYSB0b3Rh
bCBvZiAlZCBtYW5pZmVzdHNcbiIpICUgdG90YWwuc2l6ZSgpKTsKCiAgdHJhbnNhY3Rpb25fZ3Vh
cmQgZ3VhcmQoYXBwLmRiKTsKICBzdGQ6Om1hcDxtYW5pZmVzdF9pZCwgcmV2aXNpb25faWQ+IG1h
cHBlZDsKICBmb3IgKHN0ZDo6c2V0PG1hbmlmZXN0X2lkPjo6Y29uc3RfaXRlcmF0b3IgaSA9IGhl
YWRzLmJlZ2luKCk7CiAgICAgICBpICE9IGhlYWRzLmVuZCgpOyArK2kpCiAgICB7CiAgICAgIGNv
bnN0cnVjdF9yZXZpc2lvbnMoYXBwLCAqaSwgYW5jZXN0cnksIG1hcHBlZCk7CiAgICB9CiAgZ3Vh
cmQuY29tbWl0KCk7Cn0KCgovLyBpL28gc3R1ZmYKCnN0ZDo6c3RyaW5nIHJldmlzaW9uX2ZpbGVf
bmFtZSgicmV2aXNpb24iKTsKCm5hbWVzcGFjZSAKewogIG5hbWVzcGFjZSBzeW1zCiAgewogICAg
c3RkOjpzdHJpbmcgY29uc3Qgb2xkX3JldmlzaW9uKCJvbGRfcmV2aXNpb24iKTsKICAgIHN0ZDo6
c3RyaW5nIGNvbnN0IG5ld19tYW5pZmVzdCgibmV3X21hbmlmZXN0Iik7CiAgICBzdGQ6OnN0cmlu
ZyBjb25zdCBvbGRfbWFuaWZlc3QoIm9sZF9tYW5pZmVzdCIpOwogIH0KfQoKCnZvaWQgCnByaW50
X2VkZ2UoYmFzaWNfaW86OnByaW50ZXIgJiBwcmludGVyLAogICAgICAgICAgIGVkZ2VfZW50cnkg
Y29uc3QgJiBlKQp7ICAgICAgIAogIGJhc2ljX2lvOjpzdGFuemEgc3Q7CiAgc3QucHVzaF9oZXhf
cGFpcihzeW1zOjpvbGRfcmV2aXNpb24sIGVkZ2Vfb2xkX3JldmlzaW9uKGUpLmlubmVyKCkoKSk7
CiAgc3QucHVzaF9oZXhfcGFpcihzeW1zOjpvbGRfbWFuaWZlc3QsIGVkZ2Vfb2xkX21hbmlmZXN0
KGUpLmlubmVyKCkoKSk7CiAgcHJpbnRlci5wcmludF9zdGFuemEoc3QpOwogIHByaW50X2NoYW5n
ZV9zZXQocHJpbnRlciwgZWRnZV9jaGFuZ2VzKGUpKTsgCn0KCgp2b2lkIApwcmludF9yZXZpc2lv
bihiYXNpY19pbzo6cHJpbnRlciAmIHByaW50ZXIsCiAgICAgICAgICAgICAgIHJldmlzaW9uX3Nl
dCBjb25zdCAmIHJldikKewogIGJhc2ljX2lvOjpzdGFuemEgc3Q7IAogIHN0LnB1c2hfaGV4X3Bh
aXIoc3ltczo6bmV3X21hbmlmZXN0LCByZXYubmV3X21hbmlmZXN0LmlubmVyKCkoKSk7CiAgcHJp
bnRlci5wcmludF9zdGFuemEoc3QpOwogIGZvciAoZWRnZV9tYXA6OmNvbnN0X2l0ZXJhdG9yIGVk
Z2UgPSByZXYuZWRnZXMuYmVnaW4oKTsKICAgICAgIGVkZ2UgIT0gcmV2LmVkZ2VzLmVuZCgpOyAr
K2VkZ2UpCiAgICBwcmludF9lZGdlKHByaW50ZXIsICplZGdlKTsKfQoKCnZvaWQgCnBhcnNlX2Vk
Z2UoYmFzaWNfaW86OnBhcnNlciAmIHBhcnNlciwKICAgICAgICAgICBlZGdlX21hcCAmIGVzKQp7
CiAgY2hhbmdlX3NldCBjczsKICBtYW5pZmVzdF9pZCBvbGRfbWFuOwogIHJldmlzaW9uX2lkIG9s
ZF9yZXY7CiAgc3RkOjpzdHJpbmcgdG1wOwogIAogIHBhcnNlci5lc3ltKHN5bXM6Om9sZF9yZXZp
c2lvbik7CiAgcGFyc2VyLmhleCh0bXApOwogIG9sZF9yZXYgPSByZXZpc2lvbl9pZCh0bXApOwog
IAogIHBhcnNlci5lc3ltKHN5bXM6Om9sZF9tYW5pZmVzdCk7CiAgcGFyc2VyLmhleCh0bXApOwog
IG9sZF9tYW4gPSBtYW5pZmVzdF9pZCh0bXApOwogIAogIHBhcnNlX2NoYW5nZV9zZXQocGFyc2Vy
LCBjcyk7CgogIGVzLmluc2VydChzdGQ6Om1ha2VfcGFpcihvbGRfcmV2LCBzdGQ6Om1ha2VfcGFp
cihvbGRfbWFuLCBjcykpKTsKfQoKCnZvaWQgCnBhcnNlX3JldmlzaW9uKGJhc2ljX2lvOjpwYXJz
ZXIgJiBwYXJzZXIsCiAgICAgICAgICAgICAgIHJldmlzaW9uX3NldCAmIHJldikKewogIHJldi5l
ZGdlcy5jbGVhcigpOwogIHN0ZDo6c3RyaW5nIHRtcDsKICBwYXJzZXIuZXN5bShzeW1zOjpuZXdf
bWFuaWZlc3QpOwogIHBhcnNlci5oZXgodG1wKTsKICByZXYubmV3X21hbmlmZXN0ID0gbWFuaWZl
c3RfaWQodG1wKTsKICB3aGlsZSAocGFyc2VyLnN5bXAoc3ltczo6b2xkX3JldmlzaW9uKSkKICAg
IHBhcnNlX2VkZ2UocGFyc2VyLCByZXYuZWRnZXMpOwp9Cgp2b2lkIApyZWFkX3JldmlzaW9uX3Nl
dChkYXRhIGNvbnN0ICYgZGF0LAogICAgICAgICAgICAgICAgICByZXZpc2lvbl9zZXQgJiByZXYp
CnsKICBzdGQ6OmlzdHJpbmdzdHJlYW0gaXNzKGRhdCgpKTsKICBiYXNpY19pbzo6aW5wdXRfc291
cmNlIHNyYyhpc3MsICJyZXZpc2lvbiIpOwogIGJhc2ljX2lvOjp0b2tlbml6ZXIgdG9rKHNyYyk7
CiAgYmFzaWNfaW86OnBhcnNlciBwYXJzKHRvayk7CiAgcGFyc2VfcmV2aXNpb24ocGFycywgcmV2
KTsKICBJKHNyYy5sb29rYWhlYWQgPT0gRU9GKTsKfQoKdm9pZCAKcmVhZF9yZXZpc2lvbl9zZXQo
cmV2aXNpb25fZGF0YSBjb25zdCAmIGRhdCwKICAgICAgICAgICAgICAgICAgcmV2aXNpb25fc2V0
ICYgcmV2KQp7CiAgZGF0YSB1bnBhY2tlZDsKICB1bnBhY2soZGF0LmlubmVyKCksIHVucGFja2Vk
KTsKICByZWFkX3JldmlzaW9uX3NldCh1bnBhY2tlZCwgcmV2KTsKfQoKdm9pZAp3cml0ZV9yZXZp
c2lvbl9zZXQocmV2aXNpb25fc2V0IGNvbnN0ICYgcmV2LAogICAgICAgICAgICAgICAgICAgZGF0
YSAmIGRhdCkKewogIHN0ZDo6b3N0cmluZ3N0cmVhbSBvc3M7CiAgYmFzaWNfaW86OnByaW50ZXIg
cHIob3NzKTsKICBwcmludF9yZXZpc2lvbihwciwgcmV2KTsKICBkYXQgPSBkYXRhKG9zcy5zdHIo
KSk7Cn0KCnZvaWQKd3JpdGVfcmV2aXNpb25fc2V0KHJldmlzaW9uX3NldCBjb25zdCAmIHJldiwK
ICAgICAgICAgICAgICAgICAgIHJldmlzaW9uX2RhdGEgJiBkYXQpCnsKICBkYXRhIGQ7CiAgd3Jp
dGVfcmV2aXNpb25fc2V0KHJldiwgZCk7CiAgYmFzZTY0PCBnemlwPGRhdGE+ID4gcGFja2VkOwog
IHBhY2soZCwgcGFja2VkKTsKICBkYXQgPSByZXZpc2lvbl9kYXRhKHBhY2tlZCk7Cn0KCiNpZmRl
ZiBCVUlMRF9VTklUX1RFU1RTCiNpbmNsdWRlICJ1bml0X3Rlc3RzLmhoIgojaW5jbHVkZSAic2Fu
aXR5LmhoIgoKc3RhdGljIHZvaWQgCnJldmlzaW9uX3Rlc3QoKQp7Cn0KCnZvaWQgCmFkZF9yZXZp
c2lvbl90ZXN0cyh0ZXN0X3N1aXRlICogc3VpdGUpCnsKICBJKHN1aXRlKTsKICBzdWl0ZS0+YWRk
KEJPT1NUX1RFU1RfQ0FTRSgmcmV2aXNpb25fdGVzdCkpOwp9CgoKI2VuZGlmIC8vIEJVSUxEX1VO
SVRfVEVTVFMK
_ATEOF


cat >right.b64 <<'_ATEOF'
Ly8gY29weXJpZ2h0IChDKSAyMDA0IGdyYXlkb24gaG9hcmUgPGdyYXlkb25AcG9ib3guY29tPgov
LyBhbGwgcmlnaHRzIHJlc2VydmVkLgovLyBsaWNlbnNlZCB0byB0aGUgcHVibGljIHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIEdQTCAoPj0gMikKLy8gc2VlIHRoZSBmaWxlIENPUFlJTkcgZm9y
IGRldGFpbHMKCiNpbmNsdWRlIDxjY3R5cGU+CiNpbmNsdWRlIDxjc3RkbGliPgojaW5jbHVkZSA8
aW9zdHJlYW0+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDxzc3RyZWFt
PgojaW5jbHVkZSA8c3RyaW5nPgoKI2luY2x1ZGUgPGJvb3N0L2xleGljYWxfY2FzdC5ocHA+CiNp
bmNsdWRlIDxib29zdC9keW5hbWljX2JpdHNldC5ocHA+CiNpbmNsdWRlIDxib29zdC9zaGFyZWRf
cHRyLmhwcD4KCiNpbmNsdWRlICJiYXNpY19pby5oaCIKI2luY2x1ZGUgImNoYW5nZV9zZXQuaGgi
CiNpbmNsdWRlICJjb25zdGFudHMuaGgiCiNpbmNsdWRlICJyZXZpc2lvbi5oaCIKI2luY2x1ZGUg
InNhbml0eS5oaCIKI2luY2x1ZGUgInRyYW5zZm9ybXMuaGgiCiNpbmNsdWRlICJ2b2NhYi5oaCIK
CgovLyBjYWxjdWxhdGluZyBsZWFzdCBjb21tb24gYW5jZXN0b3JzIGlzIGEgZGVsaWNhdGUgdGhp
bmcuCi8vIAovLyBpdCB0dXJucyBvdXQgdGhhdCB3ZSBjYW5ub3QgY2hvb3NlIHRoZSBzaW1wbGUg
ImxlYXN0IGNvbW1vbiBhbmNlc3RvciIKLy8gZm9yIHB1cnBvc2VzIG9mIGEgbWVyZ2UsIGJlY2F1
c2UgaXQgaXMgcG9zc2libGUgdGhhdCB0aGVyZSBhcmUgdHdvCi8vIGVxdWFsbHkgcmVhY2hhYmxl
IGNvbW1vbiBhbmNlc3RvcnMsIGFuZCB0aGlzIHByb2R1Y2VzIGFtYmlndWl0eSBpbiB0aGUKLy8g
bWVyZ2UuIHRoZSByZXN1bHQgLS0gaW4gYSBwYXRob2xvZ2ljYWwgY2FzZSAtLSBpcyBzaWxlbnRs
eSBhY2NlcHRpbmcgb25lCi8vIHNldCBvZiBlZGl0cyB3aGlsZSBkaXNjYXJkaW5nIGFub3RoZXI7
IG5vdCBleGFjdGx5IHdoYXQgeW91IHdhbnQgYQovLyB2ZXJzaW9uIGNvbnRyb2wgdG9vbCB0byBk
by4KLy8KLy8gYSBjb25zZXJ2YXRpdmUgYXBwcm94aW1hdGlvbiBpcyB3aGF0IHdlJ2xsIGNhbGwg
YSAic3ViZ3JhcGggcmVjdXJyaW5nIgovLyBMQ0EgYWxnb3JpdGhtLiB0aGlzIGlzIHNvbWV3aGF0
IGxpa2UgbG9jYXRpbmcgdGhlIGxlYXN0IGNvbW1vbiBkb21pbmF0b3IKLy8gbm9kZSwgYnV0IG5v
dCBxdWl0ZS4gaXQgaXMgYWN0dWFsbHkganVzdCBhIHZhbmlsbGEgTENBIHNlYXJjaCwgZXhjZXB0
Ci8vIHRoYXQgYW55IHRpbWUgdGhlcmUncyBhIGZvcmsgKGEgaGlzdG9yaWNhbCBtZXJnZSBsb29r
cyBsaWtlIGEgZm9yayBmcm9tCi8vIG91ciBwZXJzcGVjdGl2ZSwgd29ya2luZyBiYWNrd2FyZHMg
ZnJvbSBjaGlsZHJlbiB0byBwYXJlbnRzKSBpdCByZWR1Y2VzCi8vIHRoZSBmb3JrIHRvIGEgY29t
bW9uIHBhcmVudCB2aWEgYSBzZXF1ZW5jZSBvZiBwYWlyd2lzZSByZWN1cnNpdmUgY2FsbHMKLy8g
dG8gaXRzZWxmIGJlZm9yZSBwcm9jZWVkaW5nLiB0aGlzIHdpbGwgYWx3YXlzIHJlc29sdmUgdG8g
YSBjb21tb24gcGFyZW50Ci8vIHdpdGggbm8gYW1iaWd1aXR5LCB1bmxlc3MgaXQgZmFsbHMgb2Zm
IHRoZSByb290IG9mIHRoZSBncmFwaC4KLy8KLy8gdW5mb3J0dW5hdGVseSB0aGUgc3ViZ3JhcGgg
cmVjdXJyaW5nIGFsZ29yaXRobSBzb21ldGltZXMgZ29lcyB0b28gZmFyCi8vIGJhY2sgaW4gaGlz
dG9yeSAtLSBmb3IgZXhhbXBsZSBpZiB0aGVyZSBpcyBhbiB1bmFtYmlndW91cyBwcm9wYWdhdGUg
ZnJvbQovLyBvbmUgYnJhbmNoIHRvIGFub3RoZXIsIHRoZSBlbnRpcmUgc3ViZ3JhcGggcHJlY2Vl
ZGluZyB0aGUgcHJvcGFnYXRlIG9uCi8vIHRoZSByZWNpcGllbnQgYnJhbmNoIGlzIGVsaWRlZCwg
c2luY2UgaXQgaXMgYSBtZXJnZS4KLy8KLy8gb3VyIGN1cnJlbnQgaHlwb3RoZXNpcyBpcyB0aGF0
IHRoZSAqZXhhY3QqIGNvbmRpdGlvbiB3ZSdyZSBsb29raW5nIGZvciwKLy8gd2hlbiBkb2luZyBh
IG1lcmdlLCBpcyB0aGUgbGVhc3Qgbm9kZSB3aGljaCBkb21pbmF0ZXMgb25lIHNpZGUgb2YgdGhl
Ci8vIG1lcmdlIGFuZCBpcyBhbiBhbmNlc3RvciBvZiB0aGUgb3RoZXIuCgp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgY3R4Owp0eXBlZGVmIGJvb3N0OjpkeW5hbWljX2JpdHNldDw+IGJpdG1hcDsKdHlw
ZWRlZiBib29zdDo6c2hhcmVkX3B0cjxiaXRtYXA+IHNoYXJlZF9iaXRtYXA7CgpzdGF0aWMgdm9p
ZCAKZW5zdXJlX3BhcmVudHNfbG9hZGVkKGN0eCBjaGlsZCwKICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6bWFwPGN0eCwgc2hhcmVkX2JpdG1hcD4gJiBwYXJlbnRzLAogICAgICAgICAgICAgICAg
ICAgICAgaW50ZXJuZXI8Y3R4PiAmIGludGVybiwKICAgICAgICAgICAgICAgICAgICAgIGFwcF9z
dGF0ZSAmIGFwcCkKewogIGlmIChwYXJlbnRzLmZpbmQoY2hpbGQpICE9IHBhcmVudHMuZW5kKCkp
CiAgICByZXR1cm47CgogIEwoRigibG9hZGluZyBwYXJlbnRzIGZvciBub2RlICVkXG4iKSAlIGNo
aWxkKTsKCiAgc3RkOjpzZXQ8cmV2aXNpb25faWQ+IGltbV9wYXJlbnRzOwogIGFwcC5kYi5nZXRf
cmV2aXNpb25fcGFyZW50cyhyZXZpc2lvbl9pZChpbnRlcm4ubG9va3VwKGNoaWxkKSksIGltbV9w
YXJlbnRzKTsKCiAgLy8gVGhlIG51bGwgcmV2aXNpb24gaXMgbm90IGEgcGFyZW50IGZvciBwdXJw
b3NlcyBvZiBmaW5kaW5nIGNvbW1vbgogIC8vIGFuY2VzdG9ycy4KICBmb3IgKHN0ZDo6c2V0PHJl
dmlzaW9uX2lkPjo6aXRlcmF0b3IgcCA9IGltbV9wYXJlbnRzLmJlZ2luKCk7CiAgICAgICBwICE9
IGltbV9wYXJlbnRzLmVuZCgpOyArK3ApCiAgICB7CiAgICAgIGlmIChudWxsX2lkKCpwKSkKICAg
ICAgICBpbW1fcGFyZW50cy5lcmFzZShwKTsKICAgIH0KICAgICAgICAgICAgICAKICBzaGFyZWRf
Yml0bWFwIGJpdHMgPSBzaGFyZWRfYml0bWFwKG5ldyBiaXRtYXAocGFyZW50cy5zaXplKCkpKTsK
ICAKICBmb3IgKHN0ZDo6c2V0PHJldmlzaW9uX2lkPjo6Y29uc3RfaXRlcmF0b3IgcCA9IGltbV9w
YXJlbnRzLmJlZ2luKCk7CiAgICAgICBwICE9IGltbV9wYXJlbnRzLmVuZCgpOyArK3ApCiAgICB7
CiAgICAgIGN0eCBwbiA9IGludGVybi5pbnRlcm4ocC0+aW5uZXIoKSgpKTsKICAgICAgTChGKCJw
YXJlbnQgJXMgLT4gbm9kZSAlZFxuIikgJSAqcCAlIHBuKTsKICAgICAgaWYgKHBuID49IGJpdHMt
PnNpemUoKSkgCiAgICAgICAgYml0cy0+cmVzaXplKHBuKzEpOwogICAgICBiaXRzLT5zZXQocG4p
OwogICAgfQogICAgCiAgcGFyZW50cy5pbnNlcnQoc3RkOjptYWtlX3BhaXIoY2hpbGQsIGJpdHMp
KTsKfQoKc3RhdGljIGJvb2wgCmV4cGFuZF9kb21pbmF0b3JzKHN0ZDo6bWFwPGN0eCwgc2hhcmVk
X2JpdG1hcD4gJiBwYXJlbnRzLAogICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxjdHgsIHNoYXJl
ZF9iaXRtYXA+ICYgZG9taW5hdG9ycywKICAgICAgICAgICAgICAgICAgaW50ZXJuZXI8Y3R4PiAm
IGludGVybiwKICAgICAgICAgICAgICAgICAgYXBwX3N0YXRlICYgYXBwKQp7CiAgYm9vbCBzb21l
dGhpbmdfY2hhbmdlZCA9IGZhbHNlOwogIHN0ZDo6dmVjdG9yPGN0eD4gbm9kZXM7CgogIG5vZGVz
LnJlc2VydmUoZG9taW5hdG9ycy5zaXplKCkpOwoKICAvLyBwYXNzIDEsIHB1bGwgb3V0IGFsbCB0
aGUgbm9kZSBudW1iZXJzIHdlJ3JlIGdvaW5nIHRvIHNjYW4gdGhpcyB0aW1lIGFyb3VuZAogIGZv
ciAoc3RkOjptYXA8Y3R4LCBzaGFyZWRfYml0bWFwPjo6Y29uc3RfaXRlcmF0b3IgZSA9IGRvbWlu
YXRvcnMuYmVnaW4oKTsgCiAgICAgICBlICE9IGRvbWluYXRvcnMuZW5kKCk7ICsrZSkKICAgIG5v
ZGVzLnB1c2hfYmFjayhlLT5maXJzdCk7CiAgCiAgLy8gcGFzcyAyLCB1cGRhdGUgYW55IG9mIHRo
ZSBkb21pbmF0b3IgZW50cmllcyB3ZSBjYW4KICBmb3IgKHN0ZDo6dmVjdG9yPGN0eD46OmNvbnN0
X2l0ZXJhdG9yIG4gPSBub2Rlcy5iZWdpbigpOyAKICAgICAgIG4gIT0gbm9kZXMuZW5kKCk7ICsr
bikKICAgIHsKICAgICAgc2hhcmVkX2JpdG1hcCBiaXRzID0gZG9taW5hdG9yc1sqbl07CiAgICAg
IGJpdG1hcCBzYXZlZCgqYml0cyk7CiAgICAgIGlmIChiaXRzLT5zaXplKCkgPD0gKm4pCiAgICAg
ICAgYml0cy0+cmVzaXplKCpuICsgMSk7CiAgICAgIGJpdHMtPnNldCgqbik7CiAgICAgIAogICAg
ICBlbnN1cmVfcGFyZW50c19sb2FkZWQoKm4sIHBhcmVudHMsIGludGVybiwgYXBwKTsKICAgICAg
c2hhcmVkX2JpdG1hcCBuX3BhcmVudHMgPSBwYXJlbnRzWypuXTsKICAgICAgCiAgICAgIGJpdG1h
cCBpbnRlcnNlY3Rpb24oYml0cy0+c2l6ZSgpKTsKICAgICAgCiAgICAgIGJvb2wgZmlyc3QgPSB0
cnVlOwogICAgICBmb3IgKHVuc2lnbmVkIGxvbmcgcGFyZW50ID0gMDsgCiAgICAgICAgICAgcGFy
ZW50ICE9IG5fcGFyZW50cy0+c2l6ZSgpOyArK3BhcmVudCkKICAgICAgICB7CiAgICAgICAgICBp
ZiAoISBuX3BhcmVudHMtPnRlc3QocGFyZW50KSkKICAgICAgICAgICAgY29udGludWU7CgogICAg
ICAgICAgaWYgKGRvbWluYXRvcnMuZmluZChwYXJlbnQpID09IGRvbWluYXRvcnMuZW5kKCkpCiAg
ICAgICAgICAgIGRvbWluYXRvcnMuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKHBhcmVudCwgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZF9iaXRtYXAobmV3
IGJpdG1hcCgpKSkpOwogICAgICAgICAgc2hhcmVkX2JpdG1hcCBwYml0cyA9IGRvbWluYXRvcnNb
cGFyZW50XTsKCiAgICAgICAgICBpZiAoYml0cy0+c2l6ZSgpID4gcGJpdHMtPnNpemUoKSkKICAg
ICAgICAgICAgcGJpdHMtPnJlc2l6ZShiaXRzLT5zaXplKCkpOwoKICAgICAgICAgIGlmIChwYml0
cy0+c2l6ZSgpID4gYml0cy0+c2l6ZSgpKQogICAgICAgICAgICBiaXRzLT5yZXNpemUocGJpdHMt
PnNpemUoKSk7CgogICAgICAgICAgaWYgKGZpcnN0KQogICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgaW50ZXJzZWN0aW9uID0gKCpwYml0cyk7CiAgICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTsK
ICAgICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAgICBpbnRlcnNlY3Rpb24gJj0g
KCpwYml0cyk7CiAgICAgICAgfQoKICAgICAgKCpiaXRzKSB8PSBpbnRlcnNlY3Rpb247CiAgICAg
IGlmICgqYml0cyAhPSBzYXZlZCkKICAgICAgICBzb21ldGhpbmdfY2hhbmdlZCA9IHRydWU7CiAg
ICB9CiAgcmV0dXJuIHNvbWV0aGluZ19jaGFuZ2VkOwp9CgoKc3RhdGljIGJvb2wgCmV4cGFuZF9h
bmNlc3RvcnMoc3RkOjptYXA8Y3R4LCBzaGFyZWRfYml0bWFwPiAmIHBhcmVudHMsCiAgICAgICAg
ICAgICAgICAgc3RkOjptYXA8Y3R4LCBzaGFyZWRfYml0bWFwPiAmIGFuY2VzdG9ycywKICAgICAg
ICAgICAgICAgICBpbnRlcm5lcjxjdHg+ICYgaW50ZXJuLAogICAgICAgICAgICAgICAgIGFwcF9z
dGF0ZSAmIGFwcCkKewogIGJvb2wgc29tZXRoaW5nX2NoYW5nZWQgPSBmYWxzZTsKICBzdGQ6OnZl
Y3RvcjxjdHg+IG5vZGVzOwoKICBub2Rlcy5yZXNlcnZlKGFuY2VzdG9ycy5zaXplKCkpOwoKICAv
LyBwYXNzIDEsIHB1bGwgb3V0IGFsbCB0aGUgbm9kZSBudW1iZXJzIHdlJ3JlIGdvaW5nIHRvIHNj
YW4gdGhpcyB0aW1lIGFyb3VuZAogIGZvciAoc3RkOjptYXA8Y3R4LCBzaGFyZWRfYml0bWFwPjo6
Y29uc3RfaXRlcmF0b3IgZSA9IGFuY2VzdG9ycy5iZWdpbigpOyAKICAgICAgIGUgIT0gYW5jZXN0
b3JzLmVuZCgpOyArK2UpCiAgICBub2Rlcy5wdXNoX2JhY2soZS0+Zmlyc3QpOwogIAogIC8vIHBh
c3MgMiwgdXBkYXRlIGFueSBvZiB0aGUgYW5jZXN0b3IgZW50cmllcyB3ZSBjYW4KICBmb3IgKHN0
ZDo6dmVjdG9yPGN0eD46OmNvbnN0X2l0ZXJhdG9yIG4gPSBub2Rlcy5iZWdpbigpOyBuICE9IG5v
ZGVzLmVuZCgpOyArK24pCiAgICB7CiAgICAgIHNoYXJlZF9iaXRtYXAgYml0cyA9IGFuY2VzdG9y
c1sqbl07CiAgICAgIGJpdG1hcCBzYXZlZCgqYml0cyk7CiAgICAgIGlmIChiaXRzLT5zaXplKCkg
PD0gKm4pCiAgICAgICAgYml0cy0+cmVzaXplKCpuICsgMSk7CiAgICAgIGJpdHMtPnNldCgqbik7
CgogICAgICBlbnN1cmVfcGFyZW50c19sb2FkZWQoKm4sIHBhcmVudHMsIGludGVybiwgYXBwKTsK
ICAgICAgc2hhcmVkX2JpdG1hcCBuX3BhcmVudHMgPSBwYXJlbnRzWypuXTsKICAgICAgZm9yIChj
dHggcGFyZW50ID0gMDsgcGFyZW50ICE9IG5fcGFyZW50cy0+c2l6ZSgpOyArK3BhcmVudCkKICAg
ICAgICB7CiAgICAgICAgICBpZiAoISBuX3BhcmVudHMtPnRlc3QocGFyZW50KSkKICAgICAgICAg
ICAgY29udGludWU7CgogICAgICAgICAgaWYgKGJpdHMtPnNpemUoKSA8PSBwYXJlbnQpCiAgICAg
ICAgICAgIGJpdHMtPnJlc2l6ZShwYXJlbnQgKyAxKTsKICAgICAgICAgIGJpdHMtPnNldChwYXJl
bnQpOwoKICAgICAgICAgIGlmIChhbmNlc3RvcnMuZmluZChwYXJlbnQpID09IGFuY2VzdG9ycy5l
bmQoKSkKICAgICAgICAgICAgYW5jZXN0b3JzLmluc2VydChtYWtlX3BhaXIocGFyZW50LCAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZF9iaXRtYXAobmV3IGJp
dG1hcCgpKSkpOwogICAgICAgICAgc2hhcmVkX2JpdG1hcCBwYml0cyA9IGFuY2VzdG9yc1twYXJl
bnRdOwoKICAgICAgICAgIGlmIChiaXRzLT5zaXplKCkgPiBwYml0cy0+c2l6ZSgpKQogICAgICAg
ICAgICBwYml0cy0+cmVzaXplKGJpdHMtPnNpemUoKSk7CgogICAgICAgICAgaWYgKHBiaXRzLT5z
aXplKCkgPiBiaXRzLT5zaXplKCkpCiAgICAgICAgICAgIGJpdHMtPnJlc2l6ZShwYml0cy0+c2l6
ZSgpKTsKCiAgICAgICAgICAoKmJpdHMpIHw9ICgqcGJpdHMpOwogICAgICAgIH0KICAgICAgaWYg
KCpiaXRzICE9IHNhdmVkKQogICAgICAgIHNvbWV0aGluZ19jaGFuZ2VkID0gdHJ1ZTsKICAgIH0K
ICByZXR1cm4gc29tZXRoaW5nX2NoYW5nZWQ7Cn0KCnN0YXRpYyBib29sIApmaW5kX2ludGVyc2Vj
dGluZ19ub2RlKGJpdG1hcCAmIGZzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgYml0bWFwICYg
c25kLCAKICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5lcjxjdHg+IGNvbnN0ICYgaW50ZXJu
LCAKICAgICAgICAgICAgICAgICAgICAgICByZXZpc2lvbl9pZCAmIGFuYykKewogIAogIGlmIChm
c3Quc2l6ZSgpID4gc25kLnNpemUoKSkKICAgIHNuZC5yZXNpemUoZnN0LnNpemUoKSk7CiAgZWxz
ZSBpZiAoc25kLnNpemUoKSA+IGZzdC5zaXplKCkpCiAgICBmc3QucmVzaXplKHNuZC5zaXplKCkp
OwogIAogIGJpdG1hcCBpbnRlcnNlY3Rpb24gPSBmc3QgJiBzbmQ7CiAgaWYgKGludGVyc2VjdGlv
bi5hbnkoKSkKICAgIHsKICAgICAgTChGKCJmb3VuZCAlZCBpbnRlcnNlY3Rpbmcgbm9kZXNcbiIp
ICUgaW50ZXJzZWN0aW9uLmNvdW50KCkpOwogICAgICBmb3IgKGN0eCBpID0gMDsgaSA8IGludGVy
c2VjdGlvbi5zaXplKCk7ICsraSkKICAgICAgICB7CiAgICAgICAgICBpZiAoaW50ZXJzZWN0aW9u
LnRlc3QoaSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBhbmMgPSByZXZpc2lvbl9pZChp
bnRlcm4ubG9va3VwKGkpKTsKICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
fQogICAgICAgIH0KICAgIH0KICByZXR1cm4gZmFsc2U7Cn0KCi8vICBzdGF0aWMgdm9pZAovLyAg
ZHVtcF9iaXRzZXRfbWFwKHN0ZDo6c3RyaW5nIGNvbnN0ICYgaGRyLAovLyAgICAgICAgICAgICAg
c3RkOjptYXA8IGN0eCwgc2hhcmVkX2JpdG1hcCA+IGNvbnN0ICYgbW0pCi8vICB7Ci8vICAgIEwo
RigiZHVtcGluZyBbJXNdICglZCBlbnRyaWVzKVxuIikgJSBoZHIgJSBtbS5zaXplKCkpOwovLyAg
ICBmb3IgKHN0ZDo6bWFwPCBjdHgsIHNoYXJlZF9iaXRtYXAgPjo6Y29uc3RfaXRlcmF0b3IgaSA9
IG1tLmJlZ2luKCk7Ci8vICAgICAgICAgaSAhPSBtbS5lbmQoKTsgKytpKQovLyAgICAgIHsKLy8g
ICAgICAgIEwoRigiZHVtcCBbJXNdOiAlZCAtPiAlc1xuIikgJSBoZHIgJSBpLT5maXJzdCAlICgq
KGktPnNlY29uZCkpKTsKLy8gICAgICB9Ci8vICB9Cgpib29sIApmaW5kX2NvbW1vbl9hbmNlc3Rv
cl9mb3JfbWVyZ2UocmV2aXNpb25faWQgY29uc3QgJiBsZWZ0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV2aXNpb25faWQgY29uc3QgJiByaWdodCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldmlzaW9uX2lkICYgYW5jLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXBwX3N0YXRlICYgYXBwKQp7CiAgaW50ZXJuZXI8Y3R4PiBpbnRlcm47CiAgc3RkOjpt
YXA8IGN0eCwgc2hhcmVkX2JpdG1hcCA+IAogICAgcGFyZW50cywgYW5jZXN0b3JzLCBkb21pbmF0
b3JzOwogIAogIGN0eCBsbiA9IGludGVybi5pbnRlcm4obGVmdC5pbm5lcigpKCkpOwogIGN0eCBy
biA9IGludGVybi5pbnRlcm4ocmlnaHQuaW5uZXIoKSgpKTsKICAKICBzaGFyZWRfYml0bWFwIGxh
bmMgPSBzaGFyZWRfYml0bWFwKG5ldyBiaXRtYXAoKSk7CiAgc2hhcmVkX2JpdG1hcCByYW5jID0g
c2hhcmVkX2JpdG1hcChuZXcgYml0bWFwKCkpOwogIHNoYXJlZF9iaXRtYXAgbGRvbSA9IHNoYXJl
ZF9iaXRtYXAobmV3IGJpdG1hcCgpKTsKICBzaGFyZWRfYml0bWFwIHJkb20gPSBzaGFyZWRfYml0
bWFwKG5ldyBiaXRtYXAoKSk7CgogIGFuY2VzdG9ycy5pbnNlcnQobWFrZV9wYWlyKGxuLCBsYW5j
KSk7CiAgYW5jZXN0b3JzLmluc2VydChtYWtlX3BhaXIocm4sIHJhbmMpKTsKICBkb21pbmF0b3Jz
Lmluc2VydChtYWtlX3BhaXIobG4sIGxkb20pKTsKICBkb21pbmF0b3JzLmluc2VydChtYWtlX3Bh
aXIocm4sIHJkb20pKTsKICAKICBMKEYoInNlYXJjaGluZyBmb3IgY29tbW9uIGFuY2VzdG9yLCBs
ZWZ0PSVzIHJpZ2h0PSVzXG4iKSAlIGxlZnQgJSByaWdodCk7CiAgCiAgd2hpbGUgKGV4cGFuZF9h
bmNlc3RvcnMocGFyZW50cywgYW5jZXN0b3JzLCBpbnRlcm4sIGFwcCkgfHwKICAgICAgICAgZXhw
YW5kX2RvbWluYXRvcnMocGFyZW50cywgZG9taW5hdG9ycywgaW50ZXJuLCBhcHApKQogICAgewog
ICAgICBMKEYoImNvbW1vbiBhbmNlc3RvciBzY2FuIFtwYXI9JWQsYW5jPSVkLGRvbT0lZF1cbiIp
ICUgCiAgICAgICAgcGFyZW50cy5zaXplKCkgJSBhbmNlc3RvcnMuc2l6ZSgpICUgZG9taW5hdG9y
cy5zaXplKCkpOwoKICAgICAgaWYgKGZpbmRfaW50ZXJzZWN0aW5nX25vZGUoKmxhbmMsICpyZG9t
LCBpbnRlcm4sIGFuYykpCiAgICAgICAgewogICAgICAgICAgTChGKCJmb3VuZCBub2RlICVkLCBh
bmNlc3RvciBvZiBsZWZ0ICVzIGFuZCBkb21pbmF0aW5nIHJpZ2h0ICVzXG4iKQogICAgICAgICAg
ICAlIGFuYyAlIGxlZnQgJSByaWdodCk7CiAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9
CiAgICAgIAogICAgICBlbHNlIGlmIChmaW5kX2ludGVyc2VjdGluZ19ub2RlKCpyYW5jLCAqbGRv
bSwgaW50ZXJuLCBhbmMpKQogICAgICAgIHsKICAgICAgICAgIEwoRigiZm91bmQgbm9kZSAlZCwg
YW5jZXN0b3Igb2YgcmlnaHQgJXMgYW5kIGRvbWluYXRpbmcgbGVmdCAlc1xuIikKICAgICAgICAg
ICAgJSBhbmMgJSByaWdodCAlIGxlZnQpOwogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
fQogICAgfQovLyAgICAgIGR1bXBfYml0c2V0X21hcCgiYW5jZXN0b3JzIiwgYW5jZXN0b3JzKTsK
Ly8gICAgICBkdW1wX2JpdHNldF9tYXAoImRvbWluYXRvcnMiLCBkb21pbmF0b3JzKTsKLy8gICAg
ICBkdW1wX2JpdHNldF9tYXAoInBhcmVudHMiLCBwYXJlbnRzKTsKICByZXR1cm4gZmFsc2U7Cn0K
Cgpib29sCmZpbmRfbGVhc3RfY29tbW9uX2FuY2VzdG9yKHJldmlzaW9uX2lkIGNvbnN0ICYgbGVm
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb25faWQgY29uc3QgJiByaWdodCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb25faWQgJiBhbmMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFwcF9zdGF0ZSAmIGFwcCkKewogIGludGVybmVyPGN0eD4gaW50ZXJu
OwogIHN0ZDo6bWFwPCBjdHgsIHNoYXJlZF9iaXRtYXAgPgogICAgcGFyZW50cywgYW5jZXN0b3Jz
LCBkb21pbmF0b3JzOwoKICBjdHggbG4gPSBpbnRlcm4uaW50ZXJuKGxlZnQuaW5uZXIoKSgpKTsK
ICBjdHggcm4gPSBpbnRlcm4uaW50ZXJuKHJpZ2h0LmlubmVyKCkoKSk7CgogIHNoYXJlZF9iaXRt
YXAgbGFuYyA9IHNoYXJlZF9iaXRtYXAobmV3IGJpdG1hcCgpKTsKICBzaGFyZWRfYml0bWFwIHJh
bmMgPSBzaGFyZWRfYml0bWFwKG5ldyBiaXRtYXAoKSk7CgogIGFuY2VzdG9ycy5pbnNlcnQobWFr
ZV9wYWlyKGxuLCBsYW5jKSk7CiAgYW5jZXN0b3JzLmluc2VydChtYWtlX3BhaXIocm4sIHJhbmMp
KTsKCiAgTChGKCJzZWFyY2hpbmcgZm9yIGxlYXN0IGNvbW1vbiBhbmNlc3RvciwgbGVmdD0lcyBy
aWdodD0lc1xuIikgJSBsZWZ0ICUgcmlnaHQpOwoKICB3aGlsZSAoZXhwYW5kX2FuY2VzdG9ycyhw
YXJlbnRzLCBhbmNlc3RvcnMsIGludGVybiwgYXBwKSkKICAgIHsKICAgICAgTChGKCJsZWFzdCBj
b21tb24gYW5jZXN0b3Igc2NhbiBbcGFyPSVkLGFuYz0lZF1cbiIpICUKICAgICAgICBwYXJlbnRz
LnNpemUoKSAlIGFuY2VzdG9ycy5zaXplKCkpOwoKICAgICAgaWYgKGZpbmRfaW50ZXJzZWN0aW5n
X25vZGUoKmxhbmMsICpyYW5jLCBpbnRlcm4sIGFuYykpCiAgICAgICAgewogICAgICAgICAgTChG
KCJmb3VuZCBub2RlICVkLCBhbmNlc3RvciBvZiBsZWZ0ICVzIGFuZCByaWdodCAlc1xuIikKICAg
ICAgICAgICAgJSBhbmMgJSBsZWZ0ICUgcmlnaHQpOwogICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgfQogICAgfQovLyAgICAgIGR1bXBfYml0c2V0X21hcCgiYW5jZXN0b3JzIiwgYW5jZXN0
b3JzKTsKLy8gICAgICBkdW1wX2JpdHNldF9tYXAoInBhcmVudHMiLCBwYXJlbnRzKTsKICByZXR1
cm4gZmFsc2U7Cn0KCgovLyAKLy8gVGhlIGlkZWEgd2l0aCB0aGlzIGFsZ29yaXRobSBpcyB0byB3
YWxrIGZyb20gY2hpbGQgdXAgdG8gYW5jZXN0b3IsCi8vIHJlY3Vyc2l2ZWx5LCBhY2N1bXVsYXRp
bmcgYWxsIHRoZSBjaGFuZ2Vfc2V0cyBhc3NvY2lhdGVkIHdpdGgKLy8gaW50ZXJtZWRpYXRlIG5v
ZGVzIGludG8gKm9uZSBiaWcgY2hhbmdlX3NldCouCi8vCi8vIGNsZXZlciByZWFkZXJzIHdpbGwg
cmVhbGl6ZSB0aGlzIGlzIGFuIG92ZXJsYXBwaW5nLXN1YnByb2JsZW0gdHlwZQovLyBzaXR1YXRp
b24gYW5kIHRodXMgbmVlZHMgdG8ga2VlcCBhIGR5bmFtaWMgcHJvZ3JhbW1pbmcgbWFwIHRvIGtl
ZXAKLy8gaXRzZWxmIGluIGxpbmVhciBjb21wbGV4aXR5LgovLwovLyBpbiBmYWN0LCB3ZSBrZWVw
IHR3bzogb25lIHdoaWNoIG1hcHMgdG8gY29tcHV0ZWQgcmVzdWx0cyAocGFydGlhbF9jc2V0cykK
Ly8gYW5kIG9uZSB3aGljaCBqdXN0IGtlZXBzIGEgc2V0IG9mIGFsbCBub2RlcyB3ZSB0cmF2ZXJz
ZWQKLy8gKHZpc2l0ZWRfbm9kZXMpLiBpbiB0aGVvcnkgaXQgY291bGQgYmUgb25lIG1hcCB3aXRo
IGFuIGV4dHJhIGJvb2wgc3R1Y2sKLy8gb24gZWFjaCBlbnRyeSwgYnV0IEkgdGhpbmsgdGhhdCB3
b3VsZCBtYWtlIGl0IGV2ZW4gbGVzcyByZWFkYWJsZS4gaXQncwovLyBhbHJlYWR5IHF1aXRlIHVn
bHkuCi8vCgpzdGF0aWMgYm9vbCAKY2FsY3VsYXRlX2NoYW5nZV9zZXRzX3JlY3Vyc2l2ZShyZXZp
c2lvbl9pZCBjb25zdCAmIGFuY2VzdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldmlzaW9uX2lkIGNvbnN0ICYgY2hpbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXBwX3N0YXRlICYgYXBwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5n
ZV9zZXQgJiBjdW11bGF0aXZlX2NzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjptYXA8cmV2aXNpb25faWQsIGJvb3N0OjpzaGFyZWRfcHRyPGNoYW5nZV9zZXQ+ID4gJiBw
YXJ0aWFsX2NzZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c2V0PHJl
dmlzaW9uX2lkPiAmIHZpc2l0ZWRfbm9kZXMpCnsKCiAgaWYgKGFuY2VzdG9yID09IGNoaWxkKQog
ICAgcmV0dXJuIHRydWU7CgogIHZpc2l0ZWRfbm9kZXMuaW5zZXJ0KGNoaWxkKTsKCiAgYm9vbCBy
ZWxldmFudF9jaGlsZCA9IGZhbHNlOwoKICByZXZpc2lvbl9zZXQgcmV2OwogIGFwcC5kYi5nZXRf
cmV2aXNpb24oY2hpbGQsIHJldik7CgogIEwoRigiZXhwbG9yaW5nIGNoYW5nZXNldHMgZnJvbSBw
YXJlbnRzIG9mICVzLCBzZWVraW5nIHRvd2FyZHMgJXNcbiIpIAogICAgJSBjaGlsZCAlIGFuY2Vz
dG9yKTsKCiAgZm9yKGVkZ2VfbWFwOjpjb25zdF9pdGVyYXRvciBpID0gcmV2LmVkZ2VzLmJlZ2lu
KCk7IGkgIT0gcmV2LmVkZ2VzLmVuZCgpOyArK2kpCiAgICB7CiAgICAgIGJvb2wgcmVsZXZhbnRf
cGFyZW50ID0gZmFsc2U7CiAgICAgIHJldmlzaW9uX2lkIGN1cnJfcGFyZW50ID0gZWRnZV9vbGRf
cmV2aXNpb24oaSk7CgogICAgICBpZiAoY3Vycl9wYXJlbnQuaW5uZXIoKSgpLmVtcHR5KCkpCiAg
ICAgICAgY29udGludWU7CgogICAgICBjaGFuZ2Vfc2V0IGNzZXRfdG9fY3Vycl9wYXJlbnQ7Cgog
ICAgICBMKEYoImNvbnNpZGVyaW5nIHBhcmVudCAlcyBvZiAlc1xuIikgJSBjdXJyX3BhcmVudCAl
IGNoaWxkKTsKCiAgICAgIHN0ZDo6bWFwPHJldmlzaW9uX2lkLCBib29zdDo6c2hhcmVkX3B0cjxj
aGFuZ2Vfc2V0PiA+Ojpjb25zdF9pdGVyYXRvciBqID0gCiAgICAgICAgcGFydGlhbF9jc2V0cy5m
aW5kKGN1cnJfcGFyZW50KTsKICAgICAgaWYgKGogIT0gcGFydGlhbF9jc2V0cy5lbmQoKSkgCiAg
ICAgICAgewogICAgICAgICAgLy8gYSByZWN1cnNpdmUgY2FsbCBoYXMgdHJhdmVyc2VkIHRoaXMg
cGFyZW50IGJlZm9yZSBhbmQgYnVpbHQgYW4KICAgICAgICAgIC8vIGV4aXN0aW5nIGNzZXQuIGp1
c3QgcmV1c2UgdGhhdCByYXRoZXIgdGhhbiByZS10cmF2ZXJzaW5nCiAgICAgICAgICBjc2V0X3Rv
X2N1cnJfcGFyZW50ID0gKihqLT5zZWNvbmQpOwogICAgICAgICAgcmVsZXZhbnRfcGFyZW50ID0g
dHJ1ZTsKICAgICAgICB9CiAgICAgIGVsc2UgaWYgKHZpc2l0ZWRfbm9kZXMuZmluZChjdXJyX3Bh
cmVudCkgIT0gdmlzaXRlZF9ub2Rlcy5lbmQoKSkKICAgICAgICB7CiAgICAgICAgICAvLyBhIHJl
Y3Vyc2l2ZSBjYWxsIGhhcyB0cmF2ZXJzZWQgdGhpcyBwYXJlbnQsIGJ1dCB0aGVyZSB3YXMgbm8K
ICAgICAgICAgIC8vIHBhdGggZnJvbSBpdCB0byB0aGUgcm9vdCwgc28gdGhlIHBhcmVudCBpcyBp
cnJlbGV2YW50LiBza2lwLgogICAgICAgICAgcmVsZXZhbnRfcGFyZW50ID0gZmFsc2U7CiAgICAg
ICAgfQogICAgICBlbHNlCiAgICAgICAgcmVsZXZhbnRfcGFyZW50ID0gY2FsY3VsYXRlX2NoYW5n
ZV9zZXRzX3JlY3Vyc2l2ZShhbmNlc3RvciwgY3Vycl9wYXJlbnQsIGFwcCwgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc2V0X3RvX2N1
cnJfcGFyZW50LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcnRpYWxfY3NldHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpdGVkX25vZGVzKTsKCiAgICAgIGlmIChy
ZWxldmFudF9wYXJlbnQpCiAgICAgICAgewogICAgICAgICAgTChGKCJyZXZpc2lvbiAlcyBpcyBy
ZWxldmFudCwgY29tcG9zaW5nIHdpdGggZWRnZSB0byAlc1xuIikgCiAgICAgICAgICAgICUgY3Vy
cl9wYXJlbnQgJSBjaGlsZCk7CiAgICAgICAgICBjb25jYXRlbmF0ZV9jaGFuZ2Vfc2V0cyhjc2V0
X3RvX2N1cnJfcGFyZW50LCBlZGdlX2NoYW5nZXMoaSksIGN1bXVsYXRpdmVfY3NldCk7CiAgICAg
ICAgICByZWxldmFudF9jaGlsZCA9IHRydWU7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAg
ICAgIGVsc2UKICAgICAgICBMKEYoInBhcmVudCAlcyBvZiAlcyBpcyBub3QgcmVsZXZhbnRcbiIp
ICUgY3Vycl9wYXJlbnQgJSBjaGlsZCk7CiAgICB9CgogIC8vIHN0b3JlIHRoZSBwYXJ0aWFsIGVk
Z2UgZnJvbSBhbmNlc3RvciAtPiBjaGlsZCwgc28gdGhhdCBpZiBhbnlvbmUKICAvLyByZS10cmF2
ZXJzZXMgdGhpcyBlZGdlIHRoZXknbGwganVzdCBmZXRjaCBmcm9tIHRoZSBwYXJ0aWFsX2VkZ2Vz
CiAgLy8gY2FjaGUuCiAgaWYgKHJlbGV2YW50X2NoaWxkKQogICAgcGFydGlhbF9jc2V0cy5pbnNl
cnQoc3RkOjptYWtlX3BhaXIoY2hpbGQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vc3Q6OnNoYXJlZF9wdHI8Y2hhbmdlX3NldD4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChuZXcgY2hhbmdlX3NldChjdW11bGF0aXZlX2NzZXQpKSkp
OwogIAogIHJldHVybiByZWxldmFudF9jaGlsZDsKfQoKdm9pZCAKY2FsY3VsYXRlX2NvbXBvc2l0
ZV9jaGFuZ2Vfc2V0KHJldmlzaW9uX2lkIGNvbnN0ICYgYW5jZXN0b3IsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXZpc2lvbl9pZCBjb25zdCAmIGNoaWxkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXBwX3N0YXRlICYgYXBwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlX3NldCAmIGNvbXBvc2VkKQp7CiAgTChGKCJjYWxjdWxhdGluZyBjb21w
b3NpdGUgY2hhbmdlc2V0IGJldHdlZW4gJXMgYW5kICVzXG4iKQogICAgJSBhbmNlc3RvciAlIGNo
aWxkKTsKICBzdGQ6OnNldDxyZXZpc2lvbl9pZD4gdmlzaXRlZDsKICBzdGQ6Om1hcDxyZXZpc2lv
bl9pZCwgYm9vc3Q6OnNoYXJlZF9wdHI8Y2hhbmdlX3NldD4gPiBwYXJ0aWFsOwogIGNhbGN1bGF0
ZV9jaGFuZ2Vfc2V0c19yZWN1cnNpdmUoYW5jZXN0b3IsIGNoaWxkLCBhcHAsIGNvbXBvc2VkLCBw
YXJ0aWFsLCB2aXNpdGVkKTsKfQoKLy8gbWlncmF0aW9uIHN0dWZmCi8vCi8vIEZJWE1FOiB0aGVz
ZSBhcmUgdGVtcG9yYXJ5IGZ1bmN0aW9ucywgb25jZSB3ZSd2ZSBkb25lIHRoZSBtaWdyYXRpb24g
dG8KLy8gcmV2aXNpb25zIC8gY2hhbmdlc2V0cywgd2UgY2FuIHJlbW92ZSB0aGVtLgoKc3RhdGlj
IHZvaWQgCmFuYWx5emVfbWFuaWZlc3RfY2hhbmdlcyhhcHBfc3RhdGUgJiBhcHAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBtYW5pZmVzdF9pZCBjb25zdCAmIHBhcmVudCwgCiAgICAgICAgICAg
ICAgICAgICAgICAgICBtYW5pZmVzdF9pZCBjb25zdCAmIGNoaWxkLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYW5nZV9zZXQgJiBjcykKewogIG1hbmlmZXN0X21hcCBtX3BhcmVudCwgbV9j
aGlsZDsKICBhcHAuZGIuZ2V0X21hbmlmZXN0KHBhcmVudCwgbV9wYXJlbnQpOwogIGFwcC5kYi5n
ZXRfbWFuaWZlc3QoY2hpbGQsIG1fY2hpbGQpOwoKICBmb3IgKG1hbmlmZXN0X21hcDo6Y29uc3Rf
aXRlcmF0b3IgaSA9IG1fcGFyZW50LmJlZ2luKCk7IAogICAgICAgaSAhPSBtX3BhcmVudC5lbmQo
KTsgKytpKQogICAgewogICAgICBtYW5pZmVzdF9tYXA6OmNvbnN0X2l0ZXJhdG9yIGogPSBtX2No
aWxkLmZpbmQobWFuaWZlc3RfZW50cnlfcGF0aChpKSk7CiAgICAgIGlmIChqID09IG1fY2hpbGQu
ZW5kKCkpCiAgICAgICAgY3MuZGVsZXRlX2ZpbGUobWFuaWZlc3RfZW50cnlfcGF0aChpKSk7CiAg
ICAgIGVsc2UgaWYgKCEgKG1hbmlmZXN0X2VudHJ5X2lkKGkpID09IG1hbmlmZXN0X2VudHJ5X2lk
KGopKSkKICAgICAgICB7CiAgICAgICAgICBjcy5hcHBseV9kZWx0YShtYW5pZmVzdF9lbnRyeV9w
YXRoKGkpLAogICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfZW50cnlfaWQoaSksIAog
ICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfZW50cnlfaWQoaikpOwogICAgICAgIH0g
ICAgICAgCiAgICB9CiAgZm9yIChtYW5pZmVzdF9tYXA6OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX2No
aWxkLmJlZ2luKCk7IAogICAgICAgaSAhPSBtX2NoaWxkLmVuZCgpOyArK2kpCiAgICB7CiAgICAg
IG1hbmlmZXN0X21hcDo6Y29uc3RfaXRlcmF0b3IgaiA9IG1fcGFyZW50LmZpbmQobWFuaWZlc3Rf
ZW50cnlfcGF0aChpKSk7CiAgICAgIGlmIChqID09IG1fcGFyZW50LmVuZCgpKQogICAgICAgIGNz
LmFkZF9maWxlKG1hbmlmZXN0X2VudHJ5X3BhdGgoaSksCiAgICAgICAgICAgICAgICAgICAgbWFu
aWZlc3RfZW50cnlfaWQoaSkpOwogICAgfQp9CgpzdGF0aWMgcmV2aXNpb25faWQKY29uc3RydWN0
X3JldmlzaW9ucyhhcHBfc3RhdGUgJiBhcHAsCiAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3Rf
aWQgY29uc3QgJiBjaGlsZCwKICAgICAgICAgICAgICAgICAgICBzdGQ6Om11bHRpbWFwPCBtYW5p
ZmVzdF9pZCwgbWFuaWZlc3RfaWQgPiBjb25zdCAmIGFuY2VzdHJ5LAogICAgICAgICAgICAgICAg
ICAgIHN0ZDo6bWFwPG1hbmlmZXN0X2lkLCByZXZpc2lvbl9pZD4gJiBtYXBwZWQpCnsKICByZXZp
c2lvbl9zZXQgcmV2OwogIHR5cGVkZWYgc3RkOjptdWx0aW1hcDwgbWFuaWZlc3RfaWQsIG1hbmlm
ZXN0X2lkID46OmNvbnN0X2l0ZXJhdG9yIGNpOwogIHN0ZDo6cGFpcjxjaSxjaT4gcmFuZ2UgPSBh
bmNlc3RyeS5lcXVhbF9yYW5nZShjaGlsZCk7CiAgZm9yIChjaSBpID0gcmFuZ2UuZmlyc3Q7IGkg
IT0gcmFuZ2Uuc2Vjb25kOyArK2kpCiAgICB7CiAgICAgIG1hbmlmZXN0X2lkIHBhcmVudChpLT5z
ZWNvbmQpOwogICAgICByZXZpc2lvbl9pZCBwYXJlbnRfcmlkOwogICAgICBzdGQ6Om1hcDxtYW5p
ZmVzdF9pZCwgcmV2aXNpb25faWQ+Ojpjb25zdF9pdGVyYXRvciBqID0gbWFwcGVkLmZpbmQocGFy
ZW50KTsKCiAgICAgIGlmIChqICE9IG1hcHBlZC5lbmQoKSkKICAgICAgICBwYXJlbnRfcmlkID0g
ai0+c2Vjb25kOwogICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgcGFyZW50X3JpZCA9IGNv
bnN0cnVjdF9yZXZpc2lvbnMoYXBwLCBwYXJlbnQsIGFuY2VzdHJ5LCBtYXBwZWQpOwogICAgICAg
ICAgUChGKCJpbnNlcnRpbmcgbWFwcGluZyAlZCA6ICVzIC0+ICVzXG4iKSAlIG1hcHBlZC5zaXpl
KCkgJSBwYXJlbnQgJSBwYXJlbnRfcmlkKTs7CiAgICAgICAgICBtYXBwZWQuaW5zZXJ0KHN0ZDo6
bWFrZV9wYWlyKHBhcmVudCwgcGFyZW50X3JpZCkpOwogICAgICAgIH0KICAgICAgCiAgICAgIGNo
YW5nZV9zZXQgY3M7CiAgICAgIGFuYWx5emVfbWFuaWZlc3RfY2hhbmdlcyhhcHAsIHBhcmVudCwg
Y2hpbGQsIGNzKTsKICAgICAgcmV2LmVkZ2VzLmluc2VydChzdGQ6Om1ha2VfcGFpcihwYXJlbnRf
cmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV9wYWly
KHBhcmVudCwgY3MpKSk7CiAgICB9IAoKICByZXZpc2lvbl9pZCByaWQ7CiAgaWYgKHJldi5lZGdl
cy5lbXB0eSgpKQogICAgewogICAgICBQKEYoImlnbm9yaW5nIGVtcHR5IHJldmlzaW9uIGZvciBt
YW5pZmVzdCAlc1xuIikgJSBjaGlsZCk7ICAKICAgICAgcmV0dXJuIHJpZDsKICAgIH0KCiAgcmV2
Lm5ld19tYW5pZmVzdCA9IGNoaWxkOwogIGNhbGN1bGF0ZV9pZGVudChyZXYsIHJpZCk7CgogIGlm
ICghYXBwLmRiLnJldmlzaW9uX2V4aXN0cyAocmlkKSkKICAgIHsKICAgICAgUChGKCJtYXBwaW5n
IG1hbmlmZXN0ICVzIHRvIHJldmlzaW9uICVzXG4iKSAlIGNoaWxkICUgcmlkKTsKICAgICAgYXBw
LmRiLnB1dF9yZXZpc2lvbihyaWQsIHJldik7CiAgICB9CiAgZWxzZQogICAgewogICAgICBQKEYo
InNraXBwaW5nIGFkZGl0aW9uYWwgcGF0aCB0byByZXZpc2lvbiAlc1xuIikgJSByaWQpOwogICAg
fQoKICAvLyBub3cgaG9pc3QgYWxsIHRoZSBpbnRlcmVzdGluZyBjZXJ0cyB1cCB0byB0aGUgcmV2
aXNpb24KICBzdGQ6OnNldDxjZXJ0X25hbWU+IGNuYW1lczsKICBjbmFtZXMuaW5zZXJ0KGNlcnRf
bmFtZShicmFuY2hfY2VydF9uYW1lKSk7CiAgY25hbWVzLmluc2VydChjZXJ0X25hbWUoZGF0ZV9j
ZXJ0X25hbWUpKTsKICBjbmFtZXMuaW5zZXJ0KGNlcnRfbmFtZShhdXRob3JfY2VydF9uYW1lKSk7
CiAgY25hbWVzLmluc2VydChjZXJ0X25hbWUodGFnX2NlcnRfbmFtZSkpOwogIGNuYW1lcy5pbnNl
cnQoY2VydF9uYW1lKGNoYW5nZWxvZ19jZXJ0X25hbWUpKTsKICBjbmFtZXMuaW5zZXJ0KGNlcnRf
bmFtZShjb21tZW50X2NlcnRfbmFtZSkpOwogIGNuYW1lcy5pbnNlcnQoY2VydF9uYW1lKHRlc3Ry
ZXN1bHRfY2VydF9uYW1lKSk7CgogIHN0ZDo6dmVjdG9yPCBtYW5pZmVzdDxjZXJ0PiA+IHRtcDsK
ICBhcHAuZGIuZ2V0X21hbmlmZXN0X2NlcnRzKGNoaWxkLCB0bXApOwogIGVyYXNlX2JvZ3VzX2Nl
cnRzKHRtcCwgYXBwKTsgICAgICAKICBmb3IgKHN0ZDo6dmVjdG9yPCBtYW5pZmVzdDxjZXJ0PiA+
Ojpjb25zdF9pdGVyYXRvciBpID0gdG1wLmJlZ2luKCk7CiAgICAgICBpICE9IHRtcC5lbmQoKTsg
KytpKQogICAgewogICAgICBpZiAoY25hbWVzLmZpbmQoaS0+aW5uZXIoKS5uYW1lKSA9PSBjbmFt
ZXMuZW5kKCkpCiAgICAgICAgY29udGludWU7CiAgICAgIGNlcnQgbmV3X2NlcnQ7CiAgICAgIGNl
cnRfdmFsdWUgdHY7CiAgICAgIGRlY29kZV9iYXNlNjQoaS0+aW5uZXIoKS52YWx1ZSwgdHYpOwog
ICAgICBtYWtlX3NpbXBsZV9jZXJ0KHJpZC5pbm5lcigpLCBpLT5pbm5lcigpLm5hbWUsIHR2LCBh
cHAsIG5ld19jZXJ0KTsKICAgICAgaWYgKCEgYXBwLmRiLnJldmlzaW9uX2NlcnRfZXhpc3RzKHJl
dmlzaW9uPGNlcnQ+KG5ld19jZXJ0KSkpCiAgICAgICAgYXBwLmRiLnB1dF9yZXZpc2lvbl9jZXJ0
KHJldmlzaW9uPGNlcnQ+KG5ld19jZXJ0KSk7CiAgICB9CiAgcmV0dXJuIHJpZDsgIAp9CgoKdm9p
ZCAKYnVpbGRfY2hhbmdlc2V0cyhhcHBfc3RhdGUgJiBhcHApCnsKICBzdGQ6OnZlY3RvcjwgbWFu
aWZlc3Q8Y2VydD4gPiB0bXA7CiAgYXBwLmRiLmdldF9tYW5pZmVzdF9jZXJ0cyhjZXJ0X25hbWUo
ImFuY2VzdG9yIiksIHRtcCk7CiAgZXJhc2VfYm9ndXNfY2VydHModG1wLCBhcHApOwoKICBzdGQ6
Om11bHRpbWFwPCBtYW5pZmVzdF9pZCwgbWFuaWZlc3RfaWQgPiBhbmNlc3RyeTsKICBzdGQ6OnNl
dDxtYW5pZmVzdF9pZD4gaGVhZHM7CiAgc3RkOjpzZXQ8bWFuaWZlc3RfaWQ+IHRvdGFsOwogIAog
IGZvciAoc3RkOjp2ZWN0b3I8IG1hbmlmZXN0PGNlcnQ+ID46OmNvbnN0X2l0ZXJhdG9yIGkgPSB0
bXAuYmVnaW4oKTsKICAgICAgIGkgIT0gdG1wLmVuZCgpOyArK2kpCiAgICB7CiAgICAgIGNlcnRf
dmFsdWUgdHY7CiAgICAgIGRlY29kZV9iYXNlNjQoaS0+aW5uZXIoKS52YWx1ZSwgdHYpOwogICAg
ICBtYW5pZmVzdF9pZCBjaGlsZCwgcGFyZW50OwogICAgICBjaGlsZCA9IGktPmlubmVyKCkuaWRl
bnQ7CiAgICAgIHBhcmVudCA9IGhleGVuYzxpZD4odHYoKSk7CiAgICAgIGhlYWRzLmluc2VydChj
aGlsZCk7CiAgICAgIGhlYWRzLmVyYXNlKHBhcmVudCk7CiAgICAgIHRvdGFsLmluc2VydChjaGls
ZCk7CiAgICAgIHRvdGFsLmluc2VydChwYXJlbnQpOwogICAgICBhbmNlc3RyeS5pbnNlcnQoc3Rk
OjptYWtlX3BhaXIoY2hpbGQsIHBhcmVudCkpOwogICAgfQogIAogIFAoRigiZm91bmQgYSB0b3Rh
bCBvZiAlZCBtYW5pZmVzdHNcbiIpICUgdG90YWwuc2l6ZSgpKTsKCiAgdHJhbnNhY3Rpb25fZ3Vh
cmQgZ3VhcmQoYXBwLmRiKTsKICBzdGQ6Om1hcDxtYW5pZmVzdF9pZCwgcmV2aXNpb25faWQ+IG1h
cHBlZDsKICBmb3IgKHN0ZDo6c2V0PG1hbmlmZXN0X2lkPjo6Y29uc3RfaXRlcmF0b3IgaSA9IGhl
YWRzLmJlZ2luKCk7CiAgICAgICBpICE9IGhlYWRzLmVuZCgpOyArK2kpCiAgICB7CiAgICAgIGNv
bnN0cnVjdF9yZXZpc2lvbnMoYXBwLCAqaSwgYW5jZXN0cnksIG1hcHBlZCk7CiAgICB9CiAgZ3Vh
cmQuY29tbWl0KCk7Cn0KCgovLyBpL28gc3R1ZmYKCnN0ZDo6c3RyaW5nIHJldmlzaW9uX2ZpbGVf
bmFtZSgicmV2aXNpb24iKTsKCm5hbWVzcGFjZSAKewogIG5hbWVzcGFjZSBzeW1zCiAgewogICAg
c3RkOjpzdHJpbmcgY29uc3Qgb2xkX3JldmlzaW9uKCJvbGRfcmV2aXNpb24iKTsKICAgIHN0ZDo6
c3RyaW5nIGNvbnN0IG5ld19tYW5pZmVzdCgibmV3X21hbmlmZXN0Iik7CiAgICBzdGQ6OnN0cmlu
ZyBjb25zdCBvbGRfbWFuaWZlc3QoIm9sZF9tYW5pZmVzdCIpOwogIH0KfQoKCnZvaWQgCnByaW50
X2VkZ2UoYmFzaWNfaW86OnByaW50ZXIgJiBwcmludGVyLAogICAgICAgICAgIGVkZ2VfZW50cnkg
Y29uc3QgJiBlKQp7ICAgICAgIAogIGJhc2ljX2lvOjpzdGFuemEgc3Q7CiAgc3QucHVzaF9oZXhf
cGFpcihzeW1zOjpvbGRfcmV2aXNpb24sIGVkZ2Vfb2xkX3JldmlzaW9uKGUpLmlubmVyKCkoKSk7
CiAgc3QucHVzaF9oZXhfcGFpcihzeW1zOjpvbGRfbWFuaWZlc3QsIGVkZ2Vfb2xkX21hbmlmZXN0
KGUpLmlubmVyKCkoKSk7CiAgcHJpbnRlci5wcmludF9zdGFuemEoc3QpOwogIHByaW50X2NoYW5n
ZV9zZXQocHJpbnRlciwgZWRnZV9jaGFuZ2VzKGUpKTsgCn0KCgp2b2lkIApwcmludF9yZXZpc2lv
bihiYXNpY19pbzo6cHJpbnRlciAmIHByaW50ZXIsCiAgICAgICAgICAgICAgIHJldmlzaW9uX3Nl
dCBjb25zdCAmIHJldikKewogIGJhc2ljX2lvOjpzdGFuemEgc3Q7IAogIHN0LnB1c2hfaGV4X3Bh
aXIoc3ltczo6bmV3X21hbmlmZXN0LCByZXYubmV3X21hbmlmZXN0LmlubmVyKCkoKSk7CiAgcHJp
bnRlci5wcmludF9zdGFuemEoc3QpOwogIGZvciAoZWRnZV9tYXA6OmNvbnN0X2l0ZXJhdG9yIGVk
Z2UgPSByZXYuZWRnZXMuYmVnaW4oKTsKICAgICAgIGVkZ2UgIT0gcmV2LmVkZ2VzLmVuZCgpOyAr
K2VkZ2UpCiAgICBwcmludF9lZGdlKHByaW50ZXIsICplZGdlKTsKfQoKCnZvaWQgCnBhcnNlX2Vk
Z2UoYmFzaWNfaW86OnBhcnNlciAmIHBhcnNlciwKICAgICAgICAgICBlZGdlX21hcCAmIGVzKQp7
CiAgY2hhbmdlX3NldCBjczsKICBtYW5pZmVzdF9pZCBvbGRfbWFuOwogIHJldmlzaW9uX2lkIG9s
ZF9yZXY7CiAgc3RkOjpzdHJpbmcgdG1wOwogIAogIHBhcnNlci5lc3ltKHN5bXM6Om9sZF9yZXZp
c2lvbik7CiAgcGFyc2VyLmhleCh0bXApOwogIG9sZF9yZXYgPSByZXZpc2lvbl9pZCh0bXApOwog
IAogIHBhcnNlci5lc3ltKHN5bXM6Om9sZF9tYW5pZmVzdCk7CiAgcGFyc2VyLmhleCh0bXApOwog
IG9sZF9tYW4gPSBtYW5pZmVzdF9pZCh0bXApOwogIAogIHBhcnNlX2NoYW5nZV9zZXQocGFyc2Vy
LCBjcyk7CgogIGVzLmluc2VydChzdGQ6Om1ha2VfcGFpcihvbGRfcmV2LCBzdGQ6Om1ha2VfcGFp
cihvbGRfbWFuLCBjcykpKTsKfQoKCnZvaWQgCnBhcnNlX3JldmlzaW9uKGJhc2ljX2lvOjpwYXJz
ZXIgJiBwYXJzZXIsCiAgICAgICAgICAgICAgIHJldmlzaW9uX3NldCAmIHJldikKewogIHJldi5l
ZGdlcy5jbGVhcigpOwogIHN0ZDo6c3RyaW5nIHRtcDsKICBwYXJzZXIuZXN5bShzeW1zOjpuZXdf
bWFuaWZlc3QpOwogIHBhcnNlci5oZXgodG1wKTsKICByZXYubmV3X21hbmlmZXN0ID0gbWFuaWZl
c3RfaWQodG1wKTsKICB3aGlsZSAocGFyc2VyLnN5bXAoc3ltczo6b2xkX3JldmlzaW9uKSkKICAg
IHBhcnNlX2VkZ2UocGFyc2VyLCByZXYuZWRnZXMpOwp9Cgp2b2lkIApyZWFkX3JldmlzaW9uX3Nl
dChkYXRhIGNvbnN0ICYgZGF0LAogICAgICAgICAgICAgICAgICByZXZpc2lvbl9zZXQgJiByZXYp
CnsKICBzdGQ6OmlzdHJpbmdzdHJlYW0gaXNzKGRhdCgpKTsKICBiYXNpY19pbzo6aW5wdXRfc291
cmNlIHNyYyhpc3MsICJyZXZpc2lvbiIpOwogIGJhc2ljX2lvOjp0b2tlbml6ZXIgdG9rKHNyYyk7
CiAgYmFzaWNfaW86OnBhcnNlciBwYXJzKHRvayk7CiAgcGFyc2VfcmV2aXNpb24ocGFycywgcmV2
KTsKfQoKdm9pZCAKcmVhZF9yZXZpc2lvbl9zZXQocmV2aXNpb25fZGF0YSBjb25zdCAmIGRhdCwK
ICAgICAgICAgICAgICAgICAgcmV2aXNpb25fc2V0ICYgcmV2KQp7CiAgZGF0YSB1bnBhY2tlZDsK
ICB1bnBhY2soZGF0LmlubmVyKCksIHVucGFja2VkKTsKICByZWFkX3JldmlzaW9uX3NldCh1bnBh
Y2tlZCwgcmV2KTsKfQoKdm9pZAp3cml0ZV9yZXZpc2lvbl9zZXQocmV2aXNpb25fc2V0IGNvbnN0
ICYgcmV2LAogICAgICAgICAgICAgICAgICAgZGF0YSAmIGRhdCkKewogIHN0ZDo6b3N0cmluZ3N0
cmVhbSBvc3M7CiAgYmFzaWNfaW86OnByaW50ZXIgcHIob3NzKTsKICBwcmludF9yZXZpc2lvbihw
ciwgcmV2KTsKICBkYXQgPSBkYXRhKG9zcy5zdHIoKSk7Cn0KCnZvaWQKd3JpdGVfcmV2aXNpb25f
c2V0KHJldmlzaW9uX3NldCBjb25zdCAmIHJldiwKICAgICAgICAgICAgICAgICAgIHJldmlzaW9u
X2RhdGEgJiBkYXQpCnsKICBkYXRhIGQ7CiAgd3JpdGVfcmV2aXNpb25fc2V0KHJldiwgZCk7CiAg
YmFzZTY0PCBnemlwPGRhdGE+ID4gcGFja2VkOwogIHBhY2soZCwgcGFja2VkKTsKICBkYXQgPSBy
ZXZpc2lvbl9kYXRhKHBhY2tlZCk7Cn0KCiNpZmRlZiBCVUlMRF9VTklUX1RFU1RTCiNpbmNsdWRl
ICJ1bml0X3Rlc3RzLmhoIgojaW5jbHVkZSAic2FuaXR5LmhoIgoKc3RhdGljIHZvaWQgCnJldmlz
aW9uX3Rlc3QoKQp7Cn0KCnZvaWQgCmFkZF9yZXZpc2lvbl90ZXN0cyh0ZXN0X3N1aXRlICogc3Vp
dGUpCnsKICBJKHN1aXRlKTsKICBzdWl0ZS0+YWRkKEJPT1NUX1RFU1RfQ0FTRSgmcmV2aXNpb25f
dGVzdCkpOwp9CgoKI2VuZGlmIC8vIEJVSUxEX1VOSVRfVEVTVFMK
_ATEOF


cat >correct.b64 <<'_ATEOF'
Ly8gY29weXJpZ2h0IChDKSAyMDA0IGdyYXlkb24gaG9hcmUgPGdyYXlkb25AcG9ib3guY29tPgov
LyBhbGwgcmlnaHRzIHJlc2VydmVkLgovLyBsaWNlbnNlZCB0byB0aGUgcHVibGljIHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIEdQTCAoPj0gMikKLy8gc2VlIHRoZSBmaWxlIENPUFlJTkcgZm9y
IGRldGFpbHMKCiNpbmNsdWRlIDxjY3R5cGU+CiNpbmNsdWRlIDxjc3RkbGliPgojaW5jbHVkZSA8
aW9zdHJlYW0+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDxzc3RyZWFt
PgojaW5jbHVkZSA8c3RyaW5nPgoKI2luY2x1ZGUgPGJvb3N0L2xleGljYWxfY2FzdC5ocHA+CiNp
bmNsdWRlIDxib29zdC9keW5hbWljX2JpdHNldC5ocHA+CiNpbmNsdWRlIDxib29zdC9zaGFyZWRf
cHRyLmhwcD4KCiNpbmNsdWRlICJiYXNpY19pby5oaCIKI2luY2x1ZGUgImNoYW5nZV9zZXQuaGgi
CiNpbmNsdWRlICJjb25zdGFudHMuaGgiCiNpbmNsdWRlICJyZXZpc2lvbi5oaCIKI2luY2x1ZGUg
InNhbml0eS5oaCIKI2luY2x1ZGUgInRyYW5zZm9ybXMuaGgiCiNpbmNsdWRlICJ2b2NhYi5oaCIK
CgovLyBjYWxjdWxhdGluZyBsZWFzdCBjb21tb24gYW5jZXN0b3JzIGlzIGEgZGVsaWNhdGUgdGhp
bmcuCi8vIAovLyBpdCB0dXJucyBvdXQgdGhhdCB3ZSBjYW5ub3QgY2hvb3NlIHRoZSBzaW1wbGUg
ImxlYXN0IGNvbW1vbiBhbmNlc3RvciIKLy8gZm9yIHB1cnBvc2VzIG9mIGEgbWVyZ2UsIGJlY2F1
c2UgaXQgaXMgcG9zc2libGUgdGhhdCB0aGVyZSBhcmUgdHdvCi8vIGVxdWFsbHkgcmVhY2hhYmxl
IGNvbW1vbiBhbmNlc3RvcnMsIGFuZCB0aGlzIHByb2R1Y2VzIGFtYmlndWl0eSBpbiB0aGUKLy8g
bWVyZ2UuIHRoZSByZXN1bHQgLS0gaW4gYSBwYXRob2xvZ2ljYWwgY2FzZSAtLSBpcyBzaWxlbnRs
eSBhY2NlcHRpbmcgb25lCi8vIHNldCBvZiBlZGl0cyB3aGlsZSBkaXNjYXJkaW5nIGFub3RoZXI7
IG5vdCBleGFjdGx5IHdoYXQgeW91IHdhbnQgYQovLyB2ZXJzaW9uIGNvbnRyb2wgdG9vbCB0byBk
by4KLy8KLy8gYSBjb25zZXJ2YXRpdmUgYXBwcm94aW1hdGlvbiBpcyB3aGF0IHdlJ2xsIGNhbGwg
YSAic3ViZ3JhcGggcmVjdXJyaW5nIgovLyBMQ0EgYWxnb3JpdGhtLiB0aGlzIGlzIHNvbWV3aGF0
IGxpa2UgbG9jYXRpbmcgdGhlIGxlYXN0IGNvbW1vbiBkb21pbmF0b3IKLy8gbm9kZSwgYnV0IG5v
dCBxdWl0ZS4gaXQgaXMgYWN0dWFsbHkganVzdCBhIHZhbmlsbGEgTENBIHNlYXJjaCwgZXhjZXB0
Ci8vIHRoYXQgYW55IHRpbWUgdGhlcmUncyBhIGZvcmsgKGEgaGlzdG9yaWNhbCBtZXJnZSBsb29r
cyBsaWtlIGEgZm9yayBmcm9tCi8vIG91ciBwZXJzcGVjdGl2ZSwgd29ya2luZyBiYWNrd2FyZHMg
ZnJvbSBjaGlsZHJlbiB0byBwYXJlbnRzKSBpdCByZWR1Y2VzCi8vIHRoZSBmb3JrIHRvIGEgY29t
bW9uIHBhcmVudCB2aWEgYSBzZXF1ZW5jZSBvZiBwYWlyd2lzZSByZWN1cnNpdmUgY2FsbHMKLy8g
dG8gaXRzZWxmIGJlZm9yZSBwcm9jZWVkaW5nLiB0aGlzIHdpbGwgYWx3YXlzIHJlc29sdmUgdG8g
YSBjb21tb24gcGFyZW50Ci8vIHdpdGggbm8gYW1iaWd1aXR5LCB1bmxlc3MgaXQgZmFsbHMgb2Zm
IHRoZSByb290IG9mIHRoZSBncmFwaC4KLy8KLy8gdW5mb3J0dW5hdGVseSB0aGUgc3ViZ3JhcGgg
cmVjdXJyaW5nIGFsZ29yaXRobSBzb21ldGltZXMgZ29lcyB0b28gZmFyCi8vIGJhY2sgaW4gaGlz
dG9yeSAtLSBmb3IgZXhhbXBsZSBpZiB0aGVyZSBpcyBhbiB1bmFtYmlndW91cyBwcm9wYWdhdGUg
ZnJvbQovLyBvbmUgYnJhbmNoIHRvIGFub3RoZXIsIHRoZSBlbnRpcmUgc3ViZ3JhcGggcHJlY2Vl
ZGluZyB0aGUgcHJvcGFnYXRlIG9uCi8vIHRoZSByZWNpcGllbnQgYnJhbmNoIGlzIGVsaWRlZCwg
c2luY2UgaXQgaXMgYSBtZXJnZS4KLy8KLy8gb3VyIGN1cnJlbnQgaHlwb3RoZXNpcyBpcyB0aGF0
IHRoZSAqZXhhY3QqIGNvbmRpdGlvbiB3ZSdyZSBsb29raW5nIGZvciwKLy8gd2hlbiBkb2luZyBh
IG1lcmdlLCBpcyB0aGUgbGVhc3Qgbm9kZSB3aGljaCBkb21pbmF0ZXMgb25lIHNpZGUgb2YgdGhl
Ci8vIG1lcmdlIGFuZCBpcyBhbiBhbmNlc3RvciBvZiB0aGUgb3RoZXIuCgp0eXBlZGVmIHVuc2ln
bmVkIGxvbmcgY3R4Owp0eXBlZGVmIGJvb3N0OjpkeW5hbWljX2JpdHNldDw+IGJpdG1hcDsKdHlw
ZWRlZiBib29zdDo6c2hhcmVkX3B0cjxiaXRtYXA+IHNoYXJlZF9iaXRtYXA7CgpzdGF0aWMgdm9p
ZCAKZW5zdXJlX3BhcmVudHNfbG9hZGVkKGN0eCBjaGlsZCwKICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6bWFwPGN0eCwgc2hhcmVkX2JpdG1hcD4gJiBwYXJlbnRzLAogICAgICAgICAgICAgICAg
ICAgICAgaW50ZXJuZXI8Y3R4PiAmIGludGVybiwKICAgICAgICAgICAgICAgICAgICAgIGFwcF9z
dGF0ZSAmIGFwcCkKewogIGlmIChwYXJlbnRzLmZpbmQoY2hpbGQpICE9IHBhcmVudHMuZW5kKCkp
CiAgICByZXR1cm47CgogIEwoRigibG9hZGluZyBwYXJlbnRzIGZvciBub2RlICVkXG4iKSAlIGNo
aWxkKTsKCiAgc3RkOjpzZXQ8cmV2aXNpb25faWQ+IGltbV9wYXJlbnRzOwogIGFwcC5kYi5nZXRf
cmV2aXNpb25fcGFyZW50cyhyZXZpc2lvbl9pZChpbnRlcm4ubG9va3VwKGNoaWxkKSksIGltbV9w
YXJlbnRzKTsKCiAgLy8gVGhlIG51bGwgcmV2aXNpb24gaXMgbm90IGEgcGFyZW50IGZvciBwdXJw
b3NlcyBvZiBmaW5kaW5nIGNvbW1vbgogIC8vIGFuY2VzdG9ycy4KICBmb3IgKHN0ZDo6c2V0PHJl
dmlzaW9uX2lkPjo6aXRlcmF0b3IgcCA9IGltbV9wYXJlbnRzLmJlZ2luKCk7CiAgICAgICBwICE9
IGltbV9wYXJlbnRzLmVuZCgpOyArK3ApCiAgICB7CiAgICAgIGlmIChudWxsX2lkKCpwKSkKICAg
ICAgICBpbW1fcGFyZW50cy5lcmFzZShwKTsKICAgIH0KICAgICAgICAgICAgICAKICBzaGFyZWRf
Yml0bWFwIGJpdHMgPSBzaGFyZWRfYml0bWFwKG5ldyBiaXRtYXAocGFyZW50cy5zaXplKCkpKTsK
ICAKICBmb3IgKHN0ZDo6c2V0PHJldmlzaW9uX2lkPjo6Y29uc3RfaXRlcmF0b3IgcCA9IGltbV9w
YXJlbnRzLmJlZ2luKCk7CiAgICAgICBwICE9IGltbV9wYXJlbnRzLmVuZCgpOyArK3ApCiAgICB7
CiAgICAgIGN0eCBwbiA9IGludGVybi5pbnRlcm4ocC0+aW5uZXIoKSgpKTsKICAgICAgTChGKCJw
YXJlbnQgJXMgLT4gbm9kZSAlZFxuIikgJSAqcCAlIHBuKTsKICAgICAgaWYgKHBuID49IGJpdHMt
PnNpemUoKSkgCiAgICAgICAgYml0cy0+cmVzaXplKHBuKzEpOwogICAgICBiaXRzLT5zZXQocG4p
OwogICAgfQogICAgCiAgcGFyZW50cy5pbnNlcnQoc3RkOjptYWtlX3BhaXIoY2hpbGQsIGJpdHMp
KTsKfQoKc3RhdGljIGJvb2wgCmV4cGFuZF9kb21pbmF0b3JzKHN0ZDo6bWFwPGN0eCwgc2hhcmVk
X2JpdG1hcD4gJiBwYXJlbnRzLAogICAgICAgICAgICAgICAgICBzdGQ6Om1hcDxjdHgsIHNoYXJl
ZF9iaXRtYXA+ICYgZG9taW5hdG9ycywKICAgICAgICAgICAgICAgICAgaW50ZXJuZXI8Y3R4PiAm
IGludGVybiwKICAgICAgICAgICAgICAgICAgYXBwX3N0YXRlICYgYXBwKQp7CiAgYm9vbCBzb21l
dGhpbmdfY2hhbmdlZCA9IGZhbHNlOwogIHN0ZDo6dmVjdG9yPGN0eD4gbm9kZXM7CgogIG5vZGVz
LnJlc2VydmUoZG9taW5hdG9ycy5zaXplKCkpOwoKICAvLyBwYXNzIDEsIHB1bGwgb3V0IGFsbCB0
aGUgbm9kZSBudW1iZXJzIHdlJ3JlIGdvaW5nIHRvIHNjYW4gdGhpcyB0aW1lIGFyb3VuZAogIGZv
ciAoc3RkOjptYXA8Y3R4LCBzaGFyZWRfYml0bWFwPjo6Y29uc3RfaXRlcmF0b3IgZSA9IGRvbWlu
YXRvcnMuYmVnaW4oKTsgCiAgICAgICBlICE9IGRvbWluYXRvcnMuZW5kKCk7ICsrZSkKICAgIG5v
ZGVzLnB1c2hfYmFjayhlLT5maXJzdCk7CiAgCiAgLy8gcGFzcyAyLCB1cGRhdGUgYW55IG9mIHRo
ZSBkb21pbmF0b3IgZW50cmllcyB3ZSBjYW4KICBmb3IgKHN0ZDo6dmVjdG9yPGN0eD46OmNvbnN0
X2l0ZXJhdG9yIG4gPSBub2Rlcy5iZWdpbigpOyAKICAgICAgIG4gIT0gbm9kZXMuZW5kKCk7ICsr
bikKICAgIHsKICAgICAgc2hhcmVkX2JpdG1hcCBiaXRzID0gZG9taW5hdG9yc1sqbl07CiAgICAg
IGJpdG1hcCBzYXZlZCgqYml0cyk7CiAgICAgIGlmIChiaXRzLT5zaXplKCkgPD0gKm4pCiAgICAg
ICAgYml0cy0+cmVzaXplKCpuICsgMSk7CiAgICAgIGJpdHMtPnNldCgqbik7CiAgICAgIAogICAg
ICBlbnN1cmVfcGFyZW50c19sb2FkZWQoKm4sIHBhcmVudHMsIGludGVybiwgYXBwKTsKICAgICAg
c2hhcmVkX2JpdG1hcCBuX3BhcmVudHMgPSBwYXJlbnRzWypuXTsKICAgICAgCiAgICAgIGJpdG1h
cCBpbnRlcnNlY3Rpb24oYml0cy0+c2l6ZSgpKTsKICAgICAgCiAgICAgIGJvb2wgZmlyc3QgPSB0
cnVlOwogICAgICBmb3IgKHVuc2lnbmVkIGxvbmcgcGFyZW50ID0gMDsgCiAgICAgICAgICAgcGFy
ZW50ICE9IG5fcGFyZW50cy0+c2l6ZSgpOyArK3BhcmVudCkKICAgICAgICB7CiAgICAgICAgICBp
ZiAoISBuX3BhcmVudHMtPnRlc3QocGFyZW50KSkKICAgICAgICAgICAgY29udGludWU7CgogICAg
ICAgICAgaWYgKGRvbWluYXRvcnMuZmluZChwYXJlbnQpID09IGRvbWluYXRvcnMuZW5kKCkpCiAg
ICAgICAgICAgIGRvbWluYXRvcnMuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKHBhcmVudCwgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZF9iaXRtYXAobmV3
IGJpdG1hcCgpKSkpOwogICAgICAgICAgc2hhcmVkX2JpdG1hcCBwYml0cyA9IGRvbWluYXRvcnNb
cGFyZW50XTsKCiAgICAgICAgICBpZiAoYml0cy0+c2l6ZSgpID4gcGJpdHMtPnNpemUoKSkKICAg
ICAgICAgICAgcGJpdHMtPnJlc2l6ZShiaXRzLT5zaXplKCkpOwoKICAgICAgICAgIGlmIChwYml0
cy0+c2l6ZSgpID4gYml0cy0+c2l6ZSgpKQogICAgICAgICAgICBiaXRzLT5yZXNpemUocGJpdHMt
PnNpemUoKSk7CgogICAgICAgICAgaWYgKGZpcnN0KQogICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgaW50ZXJzZWN0aW9uID0gKCpwYml0cyk7CiAgICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTsK
ICAgICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAgICBpbnRlcnNlY3Rpb24gJj0g
KCpwYml0cyk7CiAgICAgICAgfQoKICAgICAgKCpiaXRzKSB8PSBpbnRlcnNlY3Rpb247CiAgICAg
IGlmICgqYml0cyAhPSBzYXZlZCkKICAgICAgICBzb21ldGhpbmdfY2hhbmdlZCA9IHRydWU7CiAg
ICB9CiAgcmV0dXJuIHNvbWV0aGluZ19jaGFuZ2VkOwp9CgoKc3RhdGljIGJvb2wgCmV4cGFuZF9h
bmNlc3RvcnMoc3RkOjptYXA8Y3R4LCBzaGFyZWRfYml0bWFwPiAmIHBhcmVudHMsCiAgICAgICAg
ICAgICAgICAgc3RkOjptYXA8Y3R4LCBzaGFyZWRfYml0bWFwPiAmIGFuY2VzdG9ycywKICAgICAg
ICAgICAgICAgICBpbnRlcm5lcjxjdHg+ICYgaW50ZXJuLAogICAgICAgICAgICAgICAgIGFwcF9z
dGF0ZSAmIGFwcCkKewogIGJvb2wgc29tZXRoaW5nX2NoYW5nZWQgPSBmYWxzZTsKICBzdGQ6OnZl
Y3RvcjxjdHg+IG5vZGVzOwoKICBub2Rlcy5yZXNlcnZlKGFuY2VzdG9ycy5zaXplKCkpOwoKICAv
LyBwYXNzIDEsIHB1bGwgb3V0IGFsbCB0aGUgbm9kZSBudW1iZXJzIHdlJ3JlIGdvaW5nIHRvIHNj
YW4gdGhpcyB0aW1lIGFyb3VuZAogIGZvciAoc3RkOjptYXA8Y3R4LCBzaGFyZWRfYml0bWFwPjo6
Y29uc3RfaXRlcmF0b3IgZSA9IGFuY2VzdG9ycy5iZWdpbigpOyAKICAgICAgIGUgIT0gYW5jZXN0
b3JzLmVuZCgpOyArK2UpCiAgICBub2Rlcy5wdXNoX2JhY2soZS0+Zmlyc3QpOwogIAogIC8vIHBh
c3MgMiwgdXBkYXRlIGFueSBvZiB0aGUgYW5jZXN0b3IgZW50cmllcyB3ZSBjYW4KICBmb3IgKHN0
ZDo6dmVjdG9yPGN0eD46OmNvbnN0X2l0ZXJhdG9yIG4gPSBub2Rlcy5iZWdpbigpOyBuICE9IG5v
ZGVzLmVuZCgpOyArK24pCiAgICB7CiAgICAgIHNoYXJlZF9iaXRtYXAgYml0cyA9IGFuY2VzdG9y
c1sqbl07CiAgICAgIGJpdG1hcCBzYXZlZCgqYml0cyk7CiAgICAgIGlmIChiaXRzLT5zaXplKCkg
PD0gKm4pCiAgICAgICAgYml0cy0+cmVzaXplKCpuICsgMSk7CiAgICAgIGJpdHMtPnNldCgqbik7
CgogICAgICBlbnN1cmVfcGFyZW50c19sb2FkZWQoKm4sIHBhcmVudHMsIGludGVybiwgYXBwKTsK
ICAgICAgc2hhcmVkX2JpdG1hcCBuX3BhcmVudHMgPSBwYXJlbnRzWypuXTsKICAgICAgZm9yIChj
dHggcGFyZW50ID0gMDsgcGFyZW50ICE9IG5fcGFyZW50cy0+c2l6ZSgpOyArK3BhcmVudCkKICAg
ICAgICB7CiAgICAgICAgICBpZiAoISBuX3BhcmVudHMtPnRlc3QocGFyZW50KSkKICAgICAgICAg
ICAgY29udGludWU7CgogICAgICAgICAgaWYgKGJpdHMtPnNpemUoKSA8PSBwYXJlbnQpCiAgICAg
ICAgICAgIGJpdHMtPnJlc2l6ZShwYXJlbnQgKyAxKTsKICAgICAgICAgIGJpdHMtPnNldChwYXJl
bnQpOwoKICAgICAgICAgIGlmIChhbmNlc3RvcnMuZmluZChwYXJlbnQpID09IGFuY2VzdG9ycy5l
bmQoKSkKICAgICAgICAgICAgYW5jZXN0b3JzLmluc2VydChtYWtlX3BhaXIocGFyZW50LCAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZF9iaXRtYXAobmV3IGJp
dG1hcCgpKSkpOwogICAgICAgICAgc2hhcmVkX2JpdG1hcCBwYml0cyA9IGFuY2VzdG9yc1twYXJl
bnRdOwoKICAgICAgICAgIGlmIChiaXRzLT5zaXplKCkgPiBwYml0cy0+c2l6ZSgpKQogICAgICAg
ICAgICBwYml0cy0+cmVzaXplKGJpdHMtPnNpemUoKSk7CgogICAgICAgICAgaWYgKHBiaXRzLT5z
aXplKCkgPiBiaXRzLT5zaXplKCkpCiAgICAgICAgICAgIGJpdHMtPnJlc2l6ZShwYml0cy0+c2l6
ZSgpKTsKCiAgICAgICAgICAoKmJpdHMpIHw9ICgqcGJpdHMpOwogICAgICAgIH0KICAgICAgaWYg
KCpiaXRzICE9IHNhdmVkKQogICAgICAgIHNvbWV0aGluZ19jaGFuZ2VkID0gdHJ1ZTsKICAgIH0K
ICByZXR1cm4gc29tZXRoaW5nX2NoYW5nZWQ7Cn0KCnN0YXRpYyBib29sIApmaW5kX2ludGVyc2Vj
dGluZ19ub2RlKGJpdG1hcCAmIGZzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgYml0bWFwICYg
c25kLCAKICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5lcjxjdHg+IGNvbnN0ICYgaW50ZXJu
LCAKICAgICAgICAgICAgICAgICAgICAgICByZXZpc2lvbl9pZCAmIGFuYykKewogIAogIGlmIChm
c3Quc2l6ZSgpID4gc25kLnNpemUoKSkKICAgIHNuZC5yZXNpemUoZnN0LnNpemUoKSk7CiAgZWxz
ZSBpZiAoc25kLnNpemUoKSA+IGZzdC5zaXplKCkpCiAgICBmc3QucmVzaXplKHNuZC5zaXplKCkp
OwogIAogIGJpdG1hcCBpbnRlcnNlY3Rpb24gPSBmc3QgJiBzbmQ7CiAgaWYgKGludGVyc2VjdGlv
bi5hbnkoKSkKICAgIHsKICAgICAgTChGKCJmb3VuZCAlZCBpbnRlcnNlY3Rpbmcgbm9kZXNcbiIp
ICUgaW50ZXJzZWN0aW9uLmNvdW50KCkpOwogICAgICBmb3IgKGN0eCBpID0gMDsgaSA8IGludGVy
c2VjdGlvbi5zaXplKCk7ICsraSkKICAgICAgICB7CiAgICAgICAgICBpZiAoaW50ZXJzZWN0aW9u
LnRlc3QoaSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBhbmMgPSByZXZpc2lvbl9pZChp
bnRlcm4ubG9va3VwKGkpKTsKICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
fQogICAgICAgIH0KICAgIH0KICByZXR1cm4gZmFsc2U7Cn0KCi8vICBzdGF0aWMgdm9pZAovLyAg
ZHVtcF9iaXRzZXRfbWFwKHN0ZDo6c3RyaW5nIGNvbnN0ICYgaGRyLAovLyAgICAgICAgICAgICAg
c3RkOjptYXA8IGN0eCwgc2hhcmVkX2JpdG1hcCA+IGNvbnN0ICYgbW0pCi8vICB7Ci8vICAgIEwo
RigiZHVtcGluZyBbJXNdICglZCBlbnRyaWVzKVxuIikgJSBoZHIgJSBtbS5zaXplKCkpOwovLyAg
ICBmb3IgKHN0ZDo6bWFwPCBjdHgsIHNoYXJlZF9iaXRtYXAgPjo6Y29uc3RfaXRlcmF0b3IgaSA9
IG1tLmJlZ2luKCk7Ci8vICAgICAgICAgaSAhPSBtbS5lbmQoKTsgKytpKQovLyAgICAgIHsKLy8g
ICAgICAgIEwoRigiZHVtcCBbJXNdOiAlZCAtPiAlc1xuIikgJSBoZHIgJSBpLT5maXJzdCAlICgq
KGktPnNlY29uZCkpKTsKLy8gICAgICB9Ci8vICB9Cgpib29sIApmaW5kX2NvbW1vbl9hbmNlc3Rv
cl9mb3JfbWVyZ2UocmV2aXNpb25faWQgY29uc3QgJiBsZWZ0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV2aXNpb25faWQgY29uc3QgJiByaWdodCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldmlzaW9uX2lkICYgYW5jLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXBwX3N0YXRlICYgYXBwKQp7CiAgaW50ZXJuZXI8Y3R4PiBpbnRlcm47CiAgc3RkOjpt
YXA8IGN0eCwgc2hhcmVkX2JpdG1hcCA+IAogICAgcGFyZW50cywgYW5jZXN0b3JzLCBkb21pbmF0
b3JzOwogIAogIGN0eCBsbiA9IGludGVybi5pbnRlcm4obGVmdC5pbm5lcigpKCkpOwogIGN0eCBy
biA9IGludGVybi5pbnRlcm4ocmlnaHQuaW5uZXIoKSgpKTsKICAKICBzaGFyZWRfYml0bWFwIGxh
bmMgPSBzaGFyZWRfYml0bWFwKG5ldyBiaXRtYXAoKSk7CiAgc2hhcmVkX2JpdG1hcCByYW5jID0g
c2hhcmVkX2JpdG1hcChuZXcgYml0bWFwKCkpOwogIHNoYXJlZF9iaXRtYXAgbGRvbSA9IHNoYXJl
ZF9iaXRtYXAobmV3IGJpdG1hcCgpKTsKICBzaGFyZWRfYml0bWFwIHJkb20gPSBzaGFyZWRfYml0
bWFwKG5ldyBiaXRtYXAoKSk7CgogIGFuY2VzdG9ycy5pbnNlcnQobWFrZV9wYWlyKGxuLCBsYW5j
KSk7CiAgYW5jZXN0b3JzLmluc2VydChtYWtlX3BhaXIocm4sIHJhbmMpKTsKICBkb21pbmF0b3Jz
Lmluc2VydChtYWtlX3BhaXIobG4sIGxkb20pKTsKICBkb21pbmF0b3JzLmluc2VydChtYWtlX3Bh
aXIocm4sIHJkb20pKTsKICAKICBMKEYoInNlYXJjaGluZyBmb3IgY29tbW9uIGFuY2VzdG9yLCBs
ZWZ0PSVzIHJpZ2h0PSVzXG4iKSAlIGxlZnQgJSByaWdodCk7CiAgCiAgd2hpbGUgKGV4cGFuZF9h
bmNlc3RvcnMocGFyZW50cywgYW5jZXN0b3JzLCBpbnRlcm4sIGFwcCkgfHwKICAgICAgICAgZXhw
YW5kX2RvbWluYXRvcnMocGFyZW50cywgZG9taW5hdG9ycywgaW50ZXJuLCBhcHApKQogICAgewog
ICAgICBMKEYoImNvbW1vbiBhbmNlc3RvciBzY2FuIFtwYXI9JWQsYW5jPSVkLGRvbT0lZF1cbiIp
ICUgCiAgICAgICAgcGFyZW50cy5zaXplKCkgJSBhbmNlc3RvcnMuc2l6ZSgpICUgZG9taW5hdG9y
cy5zaXplKCkpOwoKICAgICAgaWYgKGZpbmRfaW50ZXJzZWN0aW5nX25vZGUoKmxhbmMsICpyZG9t
LCBpbnRlcm4sIGFuYykpCiAgICAgICAgewogICAgICAgICAgTChGKCJmb3VuZCBub2RlICVkLCBh
bmNlc3RvciBvZiBsZWZ0ICVzIGFuZCBkb21pbmF0aW5nIHJpZ2h0ICVzXG4iKQogICAgICAgICAg
ICAlIGFuYyAlIGxlZnQgJSByaWdodCk7CiAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9
CiAgICAgIAogICAgICBlbHNlIGlmIChmaW5kX2ludGVyc2VjdGluZ19ub2RlKCpyYW5jLCAqbGRv
bSwgaW50ZXJuLCBhbmMpKQogICAgICAgIHsKICAgICAgICAgIEwoRigiZm91bmQgbm9kZSAlZCwg
YW5jZXN0b3Igb2YgcmlnaHQgJXMgYW5kIGRvbWluYXRpbmcgbGVmdCAlc1xuIikKICAgICAgICAg
ICAgJSBhbmMgJSByaWdodCAlIGxlZnQpOwogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
fQogICAgfQovLyAgICAgIGR1bXBfYml0c2V0X21hcCgiYW5jZXN0b3JzIiwgYW5jZXN0b3JzKTsK
Ly8gICAgICBkdW1wX2JpdHNldF9tYXAoImRvbWluYXRvcnMiLCBkb21pbmF0b3JzKTsKLy8gICAg
ICBkdW1wX2JpdHNldF9tYXAoInBhcmVudHMiLCBwYXJlbnRzKTsKICByZXR1cm4gZmFsc2U7Cn0K
Cgpib29sCmZpbmRfbGVhc3RfY29tbW9uX2FuY2VzdG9yKHJldmlzaW9uX2lkIGNvbnN0ICYgbGVm
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb25faWQgY29uc3QgJiByaWdodCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2aXNpb25faWQgJiBhbmMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFwcF9zdGF0ZSAmIGFwcCkKewogIGludGVybmVyPGN0eD4gaW50ZXJu
OwogIHN0ZDo6bWFwPCBjdHgsIHNoYXJlZF9iaXRtYXAgPgogICAgcGFyZW50cywgYW5jZXN0b3Jz
LCBkb21pbmF0b3JzOwoKICBjdHggbG4gPSBpbnRlcm4uaW50ZXJuKGxlZnQuaW5uZXIoKSgpKTsK
ICBjdHggcm4gPSBpbnRlcm4uaW50ZXJuKHJpZ2h0LmlubmVyKCkoKSk7CgogIHNoYXJlZF9iaXRt
YXAgbGFuYyA9IHNoYXJlZF9iaXRtYXAobmV3IGJpdG1hcCgpKTsKICBzaGFyZWRfYml0bWFwIHJh
bmMgPSBzaGFyZWRfYml0bWFwKG5ldyBiaXRtYXAoKSk7CgogIGFuY2VzdG9ycy5pbnNlcnQobWFr
ZV9wYWlyKGxuLCBsYW5jKSk7CiAgYW5jZXN0b3JzLmluc2VydChtYWtlX3BhaXIocm4sIHJhbmMp
KTsKCiAgTChGKCJzZWFyY2hpbmcgZm9yIGxlYXN0IGNvbW1vbiBhbmNlc3RvciwgbGVmdD0lcyBy
aWdodD0lc1xuIikgJSBsZWZ0ICUgcmlnaHQpOwoKICB3aGlsZSAoZXhwYW5kX2FuY2VzdG9ycyhw
YXJlbnRzLCBhbmNlc3RvcnMsIGludGVybiwgYXBwKSkKICAgIHsKICAgICAgTChGKCJsZWFzdCBj
b21tb24gYW5jZXN0b3Igc2NhbiBbcGFyPSVkLGFuYz0lZF1cbiIpICUKICAgICAgICBwYXJlbnRz
LnNpemUoKSAlIGFuY2VzdG9ycy5zaXplKCkpOwoKICAgICAgaWYgKGZpbmRfaW50ZXJzZWN0aW5n
X25vZGUoKmxhbmMsICpyYW5jLCBpbnRlcm4sIGFuYykpCiAgICAgICAgewogICAgICAgICAgTChG
KCJmb3VuZCBub2RlICVkLCBhbmNlc3RvciBvZiBsZWZ0ICVzIGFuZCByaWdodCAlc1xuIikKICAg
ICAgICAgICAgJSBhbmMgJSBsZWZ0ICUgcmlnaHQpOwogICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgfQogICAgfQovLyAgICAgIGR1bXBfYml0c2V0X21hcCgiYW5jZXN0b3JzIiwgYW5jZXN0
b3JzKTsKLy8gICAgICBkdW1wX2JpdHNldF9tYXAoInBhcmVudHMiLCBwYXJlbnRzKTsKICByZXR1
cm4gZmFsc2U7Cn0KCgovLyAKLy8gVGhlIGlkZWEgd2l0aCB0aGlzIGFsZ29yaXRobSBpcyB0byB3
YWxrIGZyb20gY2hpbGQgdXAgdG8gYW5jZXN0b3IsCi8vIHJlY3Vyc2l2ZWx5LCBhY2N1bXVsYXRp
bmcgYWxsIHRoZSBjaGFuZ2Vfc2V0cyBhc3NvY2lhdGVkIHdpdGgKLy8gaW50ZXJtZWRpYXRlIG5v
ZGVzIGludG8gKm9uZSBiaWcgY2hhbmdlX3NldCouCi8vCi8vIGNsZXZlciByZWFkZXJzIHdpbGwg
cmVhbGl6ZSB0aGlzIGlzIGFuIG92ZXJsYXBwaW5nLXN1YnByb2JsZW0gdHlwZQovLyBzaXR1YXRp
b24gYW5kIHRodXMgbmVlZHMgdG8ga2VlcCBhIGR5bmFtaWMgcHJvZ3JhbW1pbmcgbWFwIHRvIGtl
ZXAKLy8gaXRzZWxmIGluIGxpbmVhciBjb21wbGV4aXR5LgovLwovLyBpbiBmYWN0LCB3ZSBrZWVw
IHR3bzogb25lIHdoaWNoIG1hcHMgdG8gY29tcHV0ZWQgcmVzdWx0cyAocGFydGlhbF9jc2V0cykK
Ly8gYW5kIG9uZSB3aGljaCBqdXN0IGtlZXBzIGEgc2V0IG9mIGFsbCBub2RlcyB3ZSB0cmF2ZXJz
ZWQKLy8gKHZpc2l0ZWRfbm9kZXMpLiBpbiB0aGVvcnkgaXQgY291bGQgYmUgb25lIG1hcCB3aXRo
IGFuIGV4dHJhIGJvb2wgc3R1Y2sKLy8gb24gZWFjaCBlbnRyeSwgYnV0IEkgdGhpbmsgdGhhdCB3
b3VsZCBtYWtlIGl0IGV2ZW4gbGVzcyByZWFkYWJsZS4gaXQncwovLyBhbHJlYWR5IHF1aXRlIHVn
bHkuCi8vCgpzdGF0aWMgYm9vbCAKY2FsY3VsYXRlX2NoYW5nZV9zZXRzX3JlY3Vyc2l2ZShyZXZp
c2lvbl9pZCBjb25zdCAmIGFuY2VzdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldmlzaW9uX2lkIGNvbnN0ICYgY2hpbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXBwX3N0YXRlICYgYXBwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5n
ZV9zZXQgJiBjdW11bGF0aXZlX2NzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjptYXA8cmV2aXNpb25faWQsIGJvb3N0OjpzaGFyZWRfcHRyPGNoYW5nZV9zZXQ+ID4gJiBw
YXJ0aWFsX2NzZXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c2V0PHJl
dmlzaW9uX2lkPiAmIHZpc2l0ZWRfbm9kZXMpCnsKCiAgaWYgKGFuY2VzdG9yID09IGNoaWxkKQog
ICAgcmV0dXJuIHRydWU7CgogIHZpc2l0ZWRfbm9kZXMuaW5zZXJ0KGNoaWxkKTsKCiAgYm9vbCBy
ZWxldmFudF9jaGlsZCA9IGZhbHNlOwoKICByZXZpc2lvbl9zZXQgcmV2OwogIGFwcC5kYi5nZXRf
cmV2aXNpb24oY2hpbGQsIHJldik7CgogIEwoRigiZXhwbG9yaW5nIGNoYW5nZXNldHMgZnJvbSBw
YXJlbnRzIG9mICVzLCBzZWVraW5nIHRvd2FyZHMgJXNcbiIpIAogICAgJSBjaGlsZCAlIGFuY2Vz
dG9yKTsKCiAgZm9yKGVkZ2VfbWFwOjpjb25zdF9pdGVyYXRvciBpID0gcmV2LmVkZ2VzLmJlZ2lu
KCk7IGkgIT0gcmV2LmVkZ2VzLmVuZCgpOyArK2kpCiAgICB7CiAgICAgIGJvb2wgcmVsZXZhbnRf
cGFyZW50ID0gZmFsc2U7CiAgICAgIHJldmlzaW9uX2lkIGN1cnJfcGFyZW50ID0gZWRnZV9vbGRf
cmV2aXNpb24oaSk7CgogICAgICBpZiAoY3Vycl9wYXJlbnQuaW5uZXIoKSgpLmVtcHR5KCkpCiAg
ICAgICAgY29udGludWU7CgogICAgICBjaGFuZ2Vfc2V0IGNzZXRfdG9fY3Vycl9wYXJlbnQ7Cgog
ICAgICBMKEYoImNvbnNpZGVyaW5nIHBhcmVudCAlcyBvZiAlc1xuIikgJSBjdXJyX3BhcmVudCAl
IGNoaWxkKTsKCiAgICAgIHN0ZDo6bWFwPHJldmlzaW9uX2lkLCBib29zdDo6c2hhcmVkX3B0cjxj
aGFuZ2Vfc2V0PiA+Ojpjb25zdF9pdGVyYXRvciBqID0gCiAgICAgICAgcGFydGlhbF9jc2V0cy5m
aW5kKGN1cnJfcGFyZW50KTsKICAgICAgaWYgKGogIT0gcGFydGlhbF9jc2V0cy5lbmQoKSkgCiAg
ICAgICAgewogICAgICAgICAgLy8gYSByZWN1cnNpdmUgY2FsbCBoYXMgdHJhdmVyc2VkIHRoaXMg
cGFyZW50IGJlZm9yZSBhbmQgYnVpbHQgYW4KICAgICAgICAgIC8vIGV4aXN0aW5nIGNzZXQuIGp1
c3QgcmV1c2UgdGhhdCByYXRoZXIgdGhhbiByZS10cmF2ZXJzaW5nCiAgICAgICAgICBjc2V0X3Rv
X2N1cnJfcGFyZW50ID0gKihqLT5zZWNvbmQpOwogICAgICAgICAgcmVsZXZhbnRfcGFyZW50ID0g
dHJ1ZTsKICAgICAgICB9CiAgICAgIGVsc2UgaWYgKHZpc2l0ZWRfbm9kZXMuZmluZChjdXJyX3Bh
cmVudCkgIT0gdmlzaXRlZF9ub2Rlcy5lbmQoKSkKICAgICAgICB7CiAgICAgICAgICAvLyBhIHJl
Y3Vyc2l2ZSBjYWxsIGhhcyB0cmF2ZXJzZWQgdGhpcyBwYXJlbnQsIGJ1dCB0aGVyZSB3YXMgbm8K
ICAgICAgICAgIC8vIHBhdGggZnJvbSBpdCB0byB0aGUgcm9vdCwgc28gdGhlIHBhcmVudCBpcyBp
cnJlbGV2YW50LiBza2lwLgogICAgICAgICAgcmVsZXZhbnRfcGFyZW50ID0gZmFsc2U7CiAgICAg
ICAgfQogICAgICBlbHNlCiAgICAgICAgcmVsZXZhbnRfcGFyZW50ID0gY2FsY3VsYXRlX2NoYW5n
ZV9zZXRzX3JlY3Vyc2l2ZShhbmNlc3RvciwgY3Vycl9wYXJlbnQsIGFwcCwgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc2V0X3RvX2N1
cnJfcGFyZW50LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhcnRpYWxfY3NldHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpdGVkX25vZGVzKTsKCiAgICAgIGlmIChy
ZWxldmFudF9wYXJlbnQpCiAgICAgICAgewogICAgICAgICAgTChGKCJyZXZpc2lvbiAlcyBpcyBy
ZWxldmFudCwgY29tcG9zaW5nIHdpdGggZWRnZSB0byAlc1xuIikgCiAgICAgICAgICAgICUgY3Vy
cl9wYXJlbnQgJSBjaGlsZCk7CiAgICAgICAgICBjb25jYXRlbmF0ZV9jaGFuZ2Vfc2V0cyhjc2V0
X3RvX2N1cnJfcGFyZW50LCBlZGdlX2NoYW5nZXMoaSksIGN1bXVsYXRpdmVfY3NldCk7CiAgICAg
ICAgICByZWxldmFudF9jaGlsZCA9IHRydWU7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAg
ICAgIGVsc2UKICAgICAgICBMKEYoInBhcmVudCAlcyBvZiAlcyBpcyBub3QgcmVsZXZhbnRcbiIp
ICUgY3Vycl9wYXJlbnQgJSBjaGlsZCk7CiAgICB9CgogIC8vIHN0b3JlIHRoZSBwYXJ0aWFsIGVk
Z2UgZnJvbSBhbmNlc3RvciAtPiBjaGlsZCwgc28gdGhhdCBpZiBhbnlvbmUKICAvLyByZS10cmF2
ZXJzZXMgdGhpcyBlZGdlIHRoZXknbGwganVzdCBmZXRjaCBmcm9tIHRoZSBwYXJ0aWFsX2VkZ2Vz
CiAgLy8gY2FjaGUuCiAgaWYgKHJlbGV2YW50X2NoaWxkKQogICAgcGFydGlhbF9jc2V0cy5pbnNl
cnQoc3RkOjptYWtlX3BhaXIoY2hpbGQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vc3Q6OnNoYXJlZF9wdHI8Y2hhbmdlX3NldD4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChuZXcgY2hhbmdlX3NldChjdW11bGF0aXZlX2NzZXQpKSkp
OwogIAogIHJldHVybiByZWxldmFudF9jaGlsZDsKfQoKdm9pZCAKY2FsY3VsYXRlX2NvbXBvc2l0
ZV9jaGFuZ2Vfc2V0KHJldmlzaW9uX2lkIGNvbnN0ICYgYW5jZXN0b3IsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXZpc2lvbl9pZCBjb25zdCAmIGNoaWxkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXBwX3N0YXRlICYgYXBwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlX3NldCAmIGNvbXBvc2VkKQp7CiAgTChGKCJjYWxjdWxhdGluZyBjb21w
b3NpdGUgY2hhbmdlc2V0IGJldHdlZW4gJXMgYW5kICVzXG4iKQogICAgJSBhbmNlc3RvciAlIGNo
aWxkKTsKICBzdGQ6OnNldDxyZXZpc2lvbl9pZD4gdmlzaXRlZDsKICBzdGQ6Om1hcDxyZXZpc2lv
bl9pZCwgYm9vc3Q6OnNoYXJlZF9wdHI8Y2hhbmdlX3NldD4gPiBwYXJ0aWFsOwogIGNhbGN1bGF0
ZV9jaGFuZ2Vfc2V0c19yZWN1cnNpdmUoYW5jZXN0b3IsIGNoaWxkLCBhcHAsIGNvbXBvc2VkLCBw
YXJ0aWFsLCB2aXNpdGVkKTsKfQoKLy8gbWlncmF0aW9uIHN0dWZmCi8vCi8vIEZJWE1FOiB0aGVz
ZSBhcmUgdGVtcG9yYXJ5IGZ1bmN0aW9ucywgb25jZSB3ZSd2ZSBkb25lIHRoZSBtaWdyYXRpb24g
dG8KLy8gcmV2aXNpb25zIC8gY2hhbmdlc2V0cywgd2UgY2FuIHJlbW92ZSB0aGVtLgoKc3RhdGlj
IHZvaWQgCmFuYWx5emVfbWFuaWZlc3RfY2hhbmdlcyhhcHBfc3RhdGUgJiBhcHAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBtYW5pZmVzdF9pZCBjb25zdCAmIHBhcmVudCwgCiAgICAgICAgICAg
ICAgICAgICAgICAgICBtYW5pZmVzdF9pZCBjb25zdCAmIGNoaWxkLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYW5nZV9zZXQgJiBjcykKewogIG1hbmlmZXN0X21hcCBtX3BhcmVudCwgbV9j
aGlsZDsKICBhcHAuZGIuZ2V0X21hbmlmZXN0KHBhcmVudCwgbV9wYXJlbnQpOwogIGFwcC5kYi5n
ZXRfbWFuaWZlc3QoY2hpbGQsIG1fY2hpbGQpOwoKICBmb3IgKG1hbmlmZXN0X21hcDo6Y29uc3Rf
aXRlcmF0b3IgaSA9IG1fcGFyZW50LmJlZ2luKCk7IAogICAgICAgaSAhPSBtX3BhcmVudC5lbmQo
KTsgKytpKQogICAgewogICAgICBtYW5pZmVzdF9tYXA6OmNvbnN0X2l0ZXJhdG9yIGogPSBtX2No
aWxkLmZpbmQobWFuaWZlc3RfZW50cnlfcGF0aChpKSk7CiAgICAgIGlmIChqID09IG1fY2hpbGQu
ZW5kKCkpCiAgICAgICAgY3MuZGVsZXRlX2ZpbGUobWFuaWZlc3RfZW50cnlfcGF0aChpKSk7CiAg
ICAgIGVsc2UgaWYgKCEgKG1hbmlmZXN0X2VudHJ5X2lkKGkpID09IG1hbmlmZXN0X2VudHJ5X2lk
KGopKSkKICAgICAgICB7CiAgICAgICAgICBjcy5hcHBseV9kZWx0YShtYW5pZmVzdF9lbnRyeV9w
YXRoKGkpLAogICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfZW50cnlfaWQoaSksIAog
ICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfZW50cnlfaWQoaikpOwogICAgICAgIH0g
ICAgICAgCiAgICB9CiAgZm9yIChtYW5pZmVzdF9tYXA6OmNvbnN0X2l0ZXJhdG9yIGkgPSBtX2No
aWxkLmJlZ2luKCk7IAogICAgICAgaSAhPSBtX2NoaWxkLmVuZCgpOyArK2kpCiAgICB7CiAgICAg
IG1hbmlmZXN0X21hcDo6Y29uc3RfaXRlcmF0b3IgaiA9IG1fcGFyZW50LmZpbmQobWFuaWZlc3Rf
ZW50cnlfcGF0aChpKSk7CiAgICAgIGlmIChqID09IG1fcGFyZW50LmVuZCgpKQogICAgICAgIGNz
LmFkZF9maWxlKG1hbmlmZXN0X2VudHJ5X3BhdGgoaSksCiAgICAgICAgICAgICAgICAgICAgbWFu
aWZlc3RfZW50cnlfaWQoaSkpOwogICAgfQp9CgpzdGF0aWMgcmV2aXNpb25faWQKY29uc3RydWN0
X3JldmlzaW9ucyhhcHBfc3RhdGUgJiBhcHAsCiAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3Rf
aWQgY29uc3QgJiBjaGlsZCwKICAgICAgICAgICAgICAgICAgICBzdGQ6Om11bHRpbWFwPCBtYW5p
ZmVzdF9pZCwgbWFuaWZlc3RfaWQgPiBjb25zdCAmIGFuY2VzdHJ5LAogICAgICAgICAgICAgICAg
ICAgIHN0ZDo6bWFwPG1hbmlmZXN0X2lkLCByZXZpc2lvbl9pZD4gJiBtYXBwZWQpCnsKICByZXZp
c2lvbl9zZXQgcmV2OwogIHR5cGVkZWYgc3RkOjptdWx0aW1hcDwgbWFuaWZlc3RfaWQsIG1hbmlm
ZXN0X2lkID46OmNvbnN0X2l0ZXJhdG9yIGNpOwogIHN0ZDo6cGFpcjxjaSxjaT4gcmFuZ2UgPSBh
bmNlc3RyeS5lcXVhbF9yYW5nZShjaGlsZCk7CiAgZm9yIChjaSBpID0gcmFuZ2UuZmlyc3Q7IGkg
IT0gcmFuZ2Uuc2Vjb25kOyArK2kpCiAgICB7CiAgICAgIG1hbmlmZXN0X2lkIHBhcmVudChpLT5z
ZWNvbmQpOwogICAgICByZXZpc2lvbl9pZCBwYXJlbnRfcmlkOwogICAgICBzdGQ6Om1hcDxtYW5p
ZmVzdF9pZCwgcmV2aXNpb25faWQ+Ojpjb25zdF9pdGVyYXRvciBqID0gbWFwcGVkLmZpbmQocGFy
ZW50KTsKCiAgICAgIGlmIChqICE9IG1hcHBlZC5lbmQoKSkKICAgICAgICBwYXJlbnRfcmlkID0g
ai0+c2Vjb25kOwogICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgcGFyZW50X3JpZCA9IGNv
bnN0cnVjdF9yZXZpc2lvbnMoYXBwLCBwYXJlbnQsIGFuY2VzdHJ5LCBtYXBwZWQpOwogICAgICAg
ICAgUChGKCJpbnNlcnRpbmcgbWFwcGluZyAlZCA6ICVzIC0+ICVzXG4iKSAlIG1hcHBlZC5zaXpl
KCkgJSBwYXJlbnQgJSBwYXJlbnRfcmlkKTs7CiAgICAgICAgICBtYXBwZWQuaW5zZXJ0KHN0ZDo6
bWFrZV9wYWlyKHBhcmVudCwgcGFyZW50X3JpZCkpOwogICAgICAgIH0KICAgICAgCiAgICAgIGNo
YW5nZV9zZXQgY3M7CiAgICAgIGFuYWx5emVfbWFuaWZlc3RfY2hhbmdlcyhhcHAsIHBhcmVudCwg
Y2hpbGQsIGNzKTsKICAgICAgcmV2LmVkZ2VzLmluc2VydChzdGQ6Om1ha2VfcGFpcihwYXJlbnRf
cmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV9wYWly
KHBhcmVudCwgY3MpKSk7CiAgICB9IAoKICByZXZpc2lvbl9pZCByaWQ7CiAgaWYgKHJldi5lZGdl
cy5lbXB0eSgpKQogICAgewogICAgICBQKEYoImlnbm9yaW5nIGVtcHR5IHJldmlzaW9uIGZvciBt
YW5pZmVzdCAlc1xuIikgJSBjaGlsZCk7ICAKICAgICAgcmV0dXJuIHJpZDsKICAgIH0KCiAgcmV2
Lm5ld19tYW5pZmVzdCA9IGNoaWxkOwogIGNhbGN1bGF0ZV9pZGVudChyZXYsIHJpZCk7CgogIGlm
ICghYXBwLmRiLnJldmlzaW9uX2V4aXN0cyAocmlkKSkKICAgIHsKICAgICAgUChGKCJtYXBwaW5n
IG1hbmlmZXN0ICVzIHRvIHJldmlzaW9uICVzXG4iKSAlIGNoaWxkICUgcmlkKTsKICAgICAgYXBw
LmRiLnB1dF9yZXZpc2lvbihyaWQsIHJldik7CiAgICB9CiAgZWxzZQogICAgewogICAgICBQKEYo
InNraXBwaW5nIGFkZGl0aW9uYWwgcGF0aCB0byByZXZpc2lvbiAlc1xuIikgJSByaWQpOwogICAg
fQoKICAvLyBub3cgaG9pc3QgYWxsIHRoZSBpbnRlcmVzdGluZyBjZXJ0cyB1cCB0byB0aGUgcmV2
aXNpb24KICBzdGQ6OnNldDxjZXJ0X25hbWU+IGNuYW1lczsKICBjbmFtZXMuaW5zZXJ0KGNlcnRf
bmFtZShicmFuY2hfY2VydF9uYW1lKSk7CiAgY25hbWVzLmluc2VydChjZXJ0X25hbWUoZGF0ZV9j
ZXJ0X25hbWUpKTsKICBjbmFtZXMuaW5zZXJ0KGNlcnRfbmFtZShhdXRob3JfY2VydF9uYW1lKSk7
CiAgY25hbWVzLmluc2VydChjZXJ0X25hbWUodGFnX2NlcnRfbmFtZSkpOwogIGNuYW1lcy5pbnNl
cnQoY2VydF9uYW1lKGNoYW5nZWxvZ19jZXJ0X25hbWUpKTsKICBjbmFtZXMuaW5zZXJ0KGNlcnRf
bmFtZShjb21tZW50X2NlcnRfbmFtZSkpOwogIGNuYW1lcy5pbnNlcnQoY2VydF9uYW1lKHRlc3Ry
ZXN1bHRfY2VydF9uYW1lKSk7CgogIHN0ZDo6dmVjdG9yPCBtYW5pZmVzdDxjZXJ0PiA+IHRtcDsK
ICBhcHAuZGIuZ2V0X21hbmlmZXN0X2NlcnRzKGNoaWxkLCB0bXApOwogIGVyYXNlX2JvZ3VzX2Nl
cnRzKHRtcCwgYXBwKTsgICAgICAKICBmb3IgKHN0ZDo6dmVjdG9yPCBtYW5pZmVzdDxjZXJ0PiA+
Ojpjb25zdF9pdGVyYXRvciBpID0gdG1wLmJlZ2luKCk7CiAgICAgICBpICE9IHRtcC5lbmQoKTsg
KytpKQogICAgewogICAgICBpZiAoY25hbWVzLmZpbmQoaS0+aW5uZXIoKS5uYW1lKSA9PSBjbmFt
ZXMuZW5kKCkpCiAgICAgICAgY29udGludWU7CiAgICAgIGNlcnQgbmV3X2NlcnQ7CiAgICAgIGNl
cnRfdmFsdWUgdHY7CiAgICAgIGRlY29kZV9iYXNlNjQoaS0+aW5uZXIoKS52YWx1ZSwgdHYpOwog
ICAgICBtYWtlX3NpbXBsZV9jZXJ0KHJpZC5pbm5lcigpLCBpLT5pbm5lcigpLm5hbWUsIHR2LCBh
cHAsIG5ld19jZXJ0KTsKICAgICAgaWYgKCEgYXBwLmRiLnJldmlzaW9uX2NlcnRfZXhpc3RzKHJl
dmlzaW9uPGNlcnQ+KG5ld19jZXJ0KSkpCiAgICAgICAgYXBwLmRiLnB1dF9yZXZpc2lvbl9jZXJ0
KHJldmlzaW9uPGNlcnQ+KG5ld19jZXJ0KSk7CiAgICB9CiAgcmV0dXJuIHJpZDsgIAp9CgoKdm9p
ZCAKYnVpbGRfY2hhbmdlc2V0cyhhcHBfc3RhdGUgJiBhcHApCnsKICBzdGQ6OnZlY3RvcjwgbWFu
aWZlc3Q8Y2VydD4gPiB0bXA7CiAgYXBwLmRiLmdldF9tYW5pZmVzdF9jZXJ0cyhjZXJ0X25hbWUo
ImFuY2VzdG9yIiksIHRtcCk7CiAgZXJhc2VfYm9ndXNfY2VydHModG1wLCBhcHApOwoKICBzdGQ6
Om11bHRpbWFwPCBtYW5pZmVzdF9pZCwgbWFuaWZlc3RfaWQgPiBhbmNlc3RyeTsKICBzdGQ6OnNl
dDxtYW5pZmVzdF9pZD4gaGVhZHM7CiAgc3RkOjpzZXQ8bWFuaWZlc3RfaWQ+IHRvdGFsOwogIAog
IGZvciAoc3RkOjp2ZWN0b3I8IG1hbmlmZXN0PGNlcnQ+ID46OmNvbnN0X2l0ZXJhdG9yIGkgPSB0
bXAuYmVnaW4oKTsKICAgICAgIGkgIT0gdG1wLmVuZCgpOyArK2kpCiAgICB7CiAgICAgIGNlcnRf
dmFsdWUgdHY7CiAgICAgIGRlY29kZV9iYXNlNjQoaS0+aW5uZXIoKS52YWx1ZSwgdHYpOwogICAg
ICBtYW5pZmVzdF9pZCBjaGlsZCwgcGFyZW50OwogICAgICBjaGlsZCA9IGktPmlubmVyKCkuaWRl
bnQ7CiAgICAgIHBhcmVudCA9IGhleGVuYzxpZD4odHYoKSk7CiAgICAgIGhlYWRzLmluc2VydChj
aGlsZCk7CiAgICAgIGhlYWRzLmVyYXNlKHBhcmVudCk7CiAgICAgIHRvdGFsLmluc2VydChjaGls
ZCk7CiAgICAgIHRvdGFsLmluc2VydChwYXJlbnQpOwogICAgICBhbmNlc3RyeS5pbnNlcnQoc3Rk
OjptYWtlX3BhaXIoY2hpbGQsIHBhcmVudCkpOwogICAgfQogIAogIFAoRigiZm91bmQgYSB0b3Rh
bCBvZiAlZCBtYW5pZmVzdHNcbiIpICUgdG90YWwuc2l6ZSgpKTsKCiAgdHJhbnNhY3Rpb25fZ3Vh
cmQgZ3VhcmQoYXBwLmRiKTsKICBzdGQ6Om1hcDxtYW5pZmVzdF9pZCwgcmV2aXNpb25faWQ+IG1h
cHBlZDsKICBmb3IgKHN0ZDo6c2V0PG1hbmlmZXN0X2lkPjo6Y29uc3RfaXRlcmF0b3IgaSA9IGhl
YWRzLmJlZ2luKCk7CiAgICAgICBpICE9IGhlYWRzLmVuZCgpOyArK2kpCiAgICB7CiAgICAgIGNv
bnN0cnVjdF9yZXZpc2lvbnMoYXBwLCAqaSwgYW5jZXN0cnksIG1hcHBlZCk7CiAgICB9CiAgZ3Vh
cmQuY29tbWl0KCk7Cn0KCgovLyBpL28gc3R1ZmYKCnN0ZDo6c3RyaW5nIHJldmlzaW9uX2ZpbGVf
bmFtZSgicmV2aXNpb24iKTsKCm5hbWVzcGFjZSAKewogIG5hbWVzcGFjZSBzeW1zCiAgewogICAg
c3RkOjpzdHJpbmcgY29uc3Qgb2xkX3JldmlzaW9uKCJvbGRfcmV2aXNpb24iKTsKICAgIHN0ZDo6
c3RyaW5nIGNvbnN0IG5ld19tYW5pZmVzdCgibmV3X21hbmlmZXN0Iik7CiAgICBzdGQ6OnN0cmlu
ZyBjb25zdCBvbGRfbWFuaWZlc3QoIm9sZF9tYW5pZmVzdCIpOwogIH0KfQoKCnZvaWQgCnByaW50
X2VkZ2UoYmFzaWNfaW86OnByaW50ZXIgJiBwcmludGVyLAogICAgICAgICAgIGVkZ2VfZW50cnkg
Y29uc3QgJiBlKQp7ICAgICAgIAogIGJhc2ljX2lvOjpzdGFuemEgc3Q7CiAgc3QucHVzaF9oZXhf
cGFpcihzeW1zOjpvbGRfcmV2aXNpb24sIGVkZ2Vfb2xkX3JldmlzaW9uKGUpLmlubmVyKCkoKSk7
CiAgc3QucHVzaF9oZXhfcGFpcihzeW1zOjpvbGRfbWFuaWZlc3QsIGVkZ2Vfb2xkX21hbmlmZXN0
KGUpLmlubmVyKCkoKSk7CiAgcHJpbnRlci5wcmludF9zdGFuemEoc3QpOwogIHByaW50X2NoYW5n
ZV9zZXQocHJpbnRlciwgZWRnZV9jaGFuZ2VzKGUpKTsgCn0KCgp2b2lkIApwcmludF9yZXZpc2lv
bihiYXNpY19pbzo6cHJpbnRlciAmIHByaW50ZXIsCiAgICAgICAgICAgICAgIHJldmlzaW9uX3Nl
dCBjb25zdCAmIHJldikKewogIGJhc2ljX2lvOjpzdGFuemEgc3Q7IAogIHN0LnB1c2hfaGV4X3Bh
aXIoc3ltczo6bmV3X21hbmlmZXN0LCByZXYubmV3X21hbmlmZXN0LmlubmVyKCkoKSk7CiAgcHJp
bnRlci5wcmludF9zdGFuemEoc3QpOwogIGZvciAoZWRnZV9tYXA6OmNvbnN0X2l0ZXJhdG9yIGVk
Z2UgPSByZXYuZWRnZXMuYmVnaW4oKTsKICAgICAgIGVkZ2UgIT0gcmV2LmVkZ2VzLmVuZCgpOyAr
K2VkZ2UpCiAgICBwcmludF9lZGdlKHByaW50ZXIsICplZGdlKTsKfQoKCnZvaWQgCnBhcnNlX2Vk
Z2UoYmFzaWNfaW86OnBhcnNlciAmIHBhcnNlciwKICAgICAgICAgICBlZGdlX21hcCAmIGVzKQp7
CiAgY2hhbmdlX3NldCBjczsKICBtYW5pZmVzdF9pZCBvbGRfbWFuOwogIHJldmlzaW9uX2lkIG9s
ZF9yZXY7CiAgc3RkOjpzdHJpbmcgdG1wOwogIAogIHBhcnNlci5lc3ltKHN5bXM6Om9sZF9yZXZp
c2lvbik7CiAgcGFyc2VyLmhleCh0bXApOwogIG9sZF9yZXYgPSByZXZpc2lvbl9pZCh0bXApOwog
IAogIHBhcnNlci5lc3ltKHN5bXM6Om9sZF9tYW5pZmVzdCk7CiAgcGFyc2VyLmhleCh0bXApOwog
IG9sZF9tYW4gPSBtYW5pZmVzdF9pZCh0bXApOwogIAogIHBhcnNlX2NoYW5nZV9zZXQocGFyc2Vy
LCBjcyk7CgogIGVzLmluc2VydChzdGQ6Om1ha2VfcGFpcihvbGRfcmV2LCBzdGQ6Om1ha2VfcGFp
cihvbGRfbWFuLCBjcykpKTsKfQoKCnZvaWQgCnBhcnNlX3JldmlzaW9uKGJhc2ljX2lvOjpwYXJz
ZXIgJiBwYXJzZXIsCiAgICAgICAgICAgICAgIHJldmlzaW9uX3NldCAmIHJldikKewogIHJldi5l
ZGdlcy5jbGVhcigpOwogIHN0ZDo6c3RyaW5nIHRtcDsKICBwYXJzZXIuZXN5bShzeW1zOjpuZXdf
bWFuaWZlc3QpOwogIHBhcnNlci5oZXgodG1wKTsKICByZXYubmV3X21hbmlmZXN0ID0gbWFuaWZl
c3RfaWQodG1wKTsKICB3aGlsZSAocGFyc2VyLnN5bXAoc3ltczo6b2xkX3JldmlzaW9uKSkKICAg
IHBhcnNlX2VkZ2UocGFyc2VyLCByZXYuZWRnZXMpOwp9Cgp2b2lkIApyZWFkX3JldmlzaW9uX3Nl
dChkYXRhIGNvbnN0ICYgZGF0LAogICAgICAgICAgICAgICAgICByZXZpc2lvbl9zZXQgJiByZXYp
CnsKICBzdGQ6OmlzdHJpbmdzdHJlYW0gaXNzKGRhdCgpKTsKICBiYXNpY19pbzo6aW5wdXRfc291
cmNlIHNyYyhpc3MsICJyZXZpc2lvbiIpOwogIGJhc2ljX2lvOjp0b2tlbml6ZXIgdG9rKHNyYyk7
CiAgYmFzaWNfaW86OnBhcnNlciBwYXJzKHRvayk7CiAgcGFyc2VfcmV2aXNpb24ocGFycywgcmV2
KTsKICBJKHNyYy5sb29rYWhlYWQgPT0gRU9GKTsKfQoKdm9pZCAKcmVhZF9yZXZpc2lvbl9zZXQo
cmV2aXNpb25fZGF0YSBjb25zdCAmIGRhdCwKICAgICAgICAgICAgICAgICAgcmV2aXNpb25fc2V0
ICYgcmV2KQp7CiAgZGF0YSB1bnBhY2tlZDsKICB1bnBhY2soZGF0LmlubmVyKCksIHVucGFja2Vk
KTsKICByZWFkX3JldmlzaW9uX3NldCh1bnBhY2tlZCwgcmV2KTsKfQoKdm9pZAp3cml0ZV9yZXZp
c2lvbl9zZXQocmV2aXNpb25fc2V0IGNvbnN0ICYgcmV2LAogICAgICAgICAgICAgICAgICAgZGF0
YSAmIGRhdCkKewogIHN0ZDo6b3N0cmluZ3N0cmVhbSBvc3M7CiAgYmFzaWNfaW86OnByaW50ZXIg
cHIob3NzKTsKICBwcmludF9yZXZpc2lvbihwciwgcmV2KTsKICBkYXQgPSBkYXRhKG9zcy5zdHIo
KSk7Cn0KCnZvaWQKd3JpdGVfcmV2aXNpb25fc2V0KHJldmlzaW9uX3NldCBjb25zdCAmIHJldiwK
ICAgICAgICAgICAgICAgICAgIHJldmlzaW9uX2RhdGEgJiBkYXQpCnsKICBkYXRhIGQ7CiAgd3Jp
dGVfcmV2aXNpb25fc2V0KHJldiwgZCk7CiAgYmFzZTY0PCBnemlwPGRhdGE+ID4gcGFja2VkOwog
IHBhY2soZCwgcGFja2VkKTsKICBkYXQgPSByZXZpc2lvbl9kYXRhKHBhY2tlZCk7Cn0KCiNpZmRl
ZiBCVUlMRF9VTklUX1RFU1RTCiNpbmNsdWRlICJ1bml0X3Rlc3RzLmhoIgojaW5jbHVkZSAic2Fu
aXR5LmhoIgoKc3RhdGljIHZvaWQgCnJldmlzaW9uX3Rlc3QoKQp7Cn0KCnZvaWQgCmFkZF9yZXZp
c2lvbl90ZXN0cyh0ZXN0X3N1aXRlICogc3VpdGUpCnsKICBJKHN1aXRlKTsKICBzdWl0ZS0+YWRk
KEJPT1NUX1RFU1RfQ0FTRSgmcmV2aXNpb25fdGVzdCkpOwp9CgoKI2VuZGlmIC8vIEJVSUxEX1VO
SVRfVEVTVFMK
_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge_2.at:1576: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o parent parent.b64
else
  \$UNB64_COMMAND <parent.b64 >parent
fi
"
echo t_merge_2.at:1576 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o parent parent.b64
else
  $UNB64_COMMAND <parent.b64 >parent
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o parent parent.b64
else
  $UNB64_COMMAND <parent.b64 >parent
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_2.at:1576: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_2.at:1577: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o left left.b64
else
  \$UNB64_COMMAND <left.b64 >left
fi
"
echo t_merge_2.at:1577 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o left left.b64
else
  $UNB64_COMMAND <left.b64 >left
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o left left.b64
else
  $UNB64_COMMAND <left.b64 >left
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_2.at:1577: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_2.at:1578: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o right right.b64
else
  \$UNB64_COMMAND <right.b64 >right
fi
"
echo t_merge_2.at:1578 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o right right.b64
else
  $UNB64_COMMAND <right.b64 >right
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o right right.b64
else
  $UNB64_COMMAND <right.b64 >right
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_2.at:1578: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_2.at:1579: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o correct correct.b64
else
  \$UNB64_COMMAND <correct.b64 >correct
fi
"
echo t_merge_2.at:1579 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o correct correct.b64
else
  $UNB64_COMMAND <correct.b64 >correct
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o correct correct.b64
else
  $UNB64_COMMAND <correct.b64 >correct
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_2.at:1579: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_2.at:1581: cp -f parent testfile"
echo t_merge_2.at:1581 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f parent testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f parent testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_2.at:1581: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_2.at:1582: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_merge_2.at:1582 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_2.at:1582: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_2.at:1583: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge_2.at:1583 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_2.at:1583: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


PARENT_SHA=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_merge_2.at:1586: cp -f left testfile"
echo t_merge_2.at:1586 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f left testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f left testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_2.at:1586: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_2.at:1587: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge_2.at:1587 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_2.at:1587: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_merge_2.at:1589: rm -rf _MTN.old"
echo t_merge_2.at:1589 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_2.at:1589: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_2.at:1589: mv  _MTN _MTN.old"
echo t_merge_2.at:1589 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_2.at:1589: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_2.at:1589: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$PARENT_SHA ."
echo t_merge_2.at:1589 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$PARENT_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$PARENT_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$PARENT_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_2.at:1589: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_merge_2.at:1589: test \$PROBE_R_SHA = \$PARENT_SHA"
echo t_merge_2.at:1589 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $PARENT_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $PARENT_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $PARENT_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_2.at:1589: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_2.at:1591: cp -f right testfile"
echo t_merge_2.at:1591 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f right testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f right testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_2.at:1591: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_2.at:1592: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge_2.at:1592 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_2.at:1592: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_2.at:1594: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge"
echo t_merge_2.at:1594 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_2.at:1594: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_2.at:1596: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_merge_2.at:1596 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_2.at:1596: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_2.at:1597: cmp testfile correct"
echo t_merge_2.at:1597 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile correct ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile correct ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_2.at:1597: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  52 ) # 52. t_tags.at:3: tags and tagging of revisions
    at_setup_line='t_tags.at:3'
    at_desc='tags and tagging of revisions'
    $at_quiet $ECHO_N " 52: tags and tagging of revisions                $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "52. t_tags.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_tags.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_tags.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_tags.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_tags.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_tags.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_tags.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_tags.at:5: rm test_keys"
echo t_tags.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >file1 <<'_ATEOF'
file 1
_ATEOF

cat >file2 <<'_ATEOF'
file 2
_ATEOF

cat >file3 <<'_ATEOF'
file 3
_ATEOF


# make sure a tag of a nonexistent revision fails
$at_traceoff
echo "$at_srcdir/t_tags.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net tag af2f6c1f3b7892672357a1018124ee80c752475d foo"
echo t_tags.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag af2f6c1f3b7892672357a1018124ee80c752475d foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag af2f6c1f3b7892672357a1018124ee80c752475d foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag af2f6c1f3b7892672357a1018124ee80c752475d foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_tags.at:15: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# make and tag revision 1

$at_traceoff
echo "$at_srcdir/t_tags.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file1"
echo t_tags.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_tags.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'add file1'"
echo t_tags.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'add file1'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'add file1' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'add file1' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REV1=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_tags.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net tag \$REV1 tag1"
echo t_tags.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $REV1 tag1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $REV1 tag1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $REV1 tag1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# make and tag revision 2

$at_traceoff
echo "$at_srcdir/t_tags.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file2"
echo t_tags.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_tags.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'add file2'"
echo t_tags.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'add file2'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'add file2' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'add file2' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REV2=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_tags.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net tag \$REV2 tag2"
echo t_tags.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $REV2 tag2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $REV2 tag2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $REV2 tag2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# make and tag revision 3

$at_traceoff
echo "$at_srcdir/t_tags.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file3"
echo t_tags.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_tags.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'add file3'"
echo t_tags.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'add file3'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'add file3' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message 'add file3' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REV3=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_tags.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net tag \$REV3 tag3"
echo t_tags.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $REV3 tag3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $REV3 tag3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $REV3 tag3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check tags created above

$at_traceoff
echo "$at_srcdir/t_tags.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls tags"
echo t_tags.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls tags" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls tags ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls tags ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_tags.at:41: grep tag1 stdout"
echo t_tags.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep tag1 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep tag1 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_tags.at:42: grep tag2 stdout"
echo t_tags.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep tag2 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep tag2 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_tags.at:43: grep tag3 stdout"
echo t_tags.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep tag3 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep tag3 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# make sure 'ls tags' sorts output is sorted
$at_traceoff
echo "$at_srcdir/t_tags.at:45:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_tags.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_tags.at:46: sort <stdout >sorted-stdout"
echo t_tags.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sort <stdout >sorted-stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sort <stdout >sorted-stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_tags.at:47: cmp stdout sorted-stdout"
echo t_tags.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout sorted-stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout sorted-stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_tags.at:49: rm -rf _MTN file1 file2 file3"
echo t_tags.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN file1 file2 file3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN file1 file2 file3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_tags.at:51: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net co --revision=tag1 ."
echo t_tags.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co --revision=tag1 ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co --revision=tag1 . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co --revision=tag1 . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

TAG1=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_tags.at:53: test \$TAG1 = \$REV1"
echo t_tags.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $TAG1 = $REV1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $TAG1 = $REV1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $TAG1 = $REV1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_tags.at:54: test -e file1"
echo t_tags.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_tags.at:55: test -e file2"
echo t_tags.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_tags.at:55: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_tags.at:56: test -e file3"
echo t_tags.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e file3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e file3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_tags.at:56: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_tags.at:58: rm -rf _MTN file1 file2 file3"
echo t_tags.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN file1 file2 file3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN file1 file2 file3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_tags.at:60: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net co --revision=tag2 ."
echo t_tags.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co --revision=tag2 ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co --revision=tag2 . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co --revision=tag2 . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

TAG2=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_tags.at:62: test \$TAG2 = \$REV2"
echo t_tags.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $TAG2 = $REV2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $TAG2 = $REV2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $TAG2 = $REV2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_tags.at:63: test -e file1"
echo t_tags.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_tags.at:64: test -e file2"
echo t_tags.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:64: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_tags.at:65: test -e file3"
echo t_tags.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e file3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e file3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_tags.at:65: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_tags.at:67: rm -rf _MTN file1 file2 file3"
echo t_tags.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN file1 file2 file3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN file1 file2 file3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:67: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_tags.at:69: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net co --revision=tag3 ."
echo t_tags.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co --revision=tag3 ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co --revision=tag3 . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co --revision=tag3 . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

TAG3=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_tags.at:71: test \$TAG1 = \$REV1"
echo t_tags.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $TAG1 = $REV1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $TAG1 = $REV1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $TAG1 = $REV1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_tags.at:72: test -e file1"
echo t_tags.at:72 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:72: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_tags.at:73: test -e file2"
echo t_tags.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:73: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_tags.at:74: test -e file3"
echo t_tags.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e file3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e file3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_tags.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  53 ) # 53. t_add_dot.at:1: mtn add .
    at_setup_line='t_add_dot.at:1'
    at_desc='mtn add .'
    $at_quiet $ECHO_N " 53: mtn add .                                    $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "53. t_add_dot.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_add_dot.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_add_dot.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_dot.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_dot.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_add_dot.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_dot.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_dot.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_add_dot.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_dot.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_dot.at:2: rm test_keys"
echo t_add_dot.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_dot.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_add_dot.at:4: mkdir subdir"
echo t_add_dot.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir subdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir subdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_dot.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >subdir/testfile1 <<'_ATEOF'
foo
_ATEOF

cat >subdir/testfile2 <<'_ATEOF'
bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_add_dot.at:10: mkdir subdir/testdir1"
echo t_add_dot.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir subdir/testdir1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir subdir/testdir1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_dot.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >subdir/testdir1/subfile1 <<'_ATEOF'
baz
_ATEOF

cat >subdir/testdir1/subfile2 <<'_ATEOF'
quux
_ATEOF


$at_traceoff
echo "$at_srcdir/t_add_dot.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch subdir"
echo t_add_dot.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch subdir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch subdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch subdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_dot.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Make sure that "add ." works, even at the root of the tree
$at_traceoff
echo "$at_srcdir/t_add_dot.at:19: cd subdir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add ."
echo t_add_dot.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_dot.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Make sure that it took
$at_traceoff
echo "$at_srcdir/t_add_dot.at:22: cd subdir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=\"foo\""
echo t_add_dot.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=\"foo\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message="foo" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message="foo" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_dot.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add_dot.at:24: rm subdir/testfile1"
echo t_add_dot.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm subdir/testfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm subdir/testfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_dot.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_dot.at:25: rm subdir/testfile2"
echo t_add_dot.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm subdir/testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm subdir/testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_dot.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_dot.at:26: rm -r subdir/testdir1"
echo t_add_dot.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -r subdir/testdir1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -r subdir/testdir1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_dot.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_dot.at:27: cd subdir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert ."
echo t_add_dot.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_dot.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add_dot.at:29: test -f subdir/testfile1"
echo t_add_dot.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f subdir/testfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f subdir/testfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_dot.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_dot.at:30: test -f subdir/testfile2"
echo t_add_dot.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f subdir/testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f subdir/testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_dot.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_dot.at:31: test -f subdir/testdir1/subfile1"
echo t_add_dot.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f subdir/testdir1/subfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f subdir/testdir1/subfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_dot.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_dot.at:32: test -f subdir/testdir1/subfile2"
echo t_add_dot.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f subdir/testdir1/subfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f subdir/testdir1/subfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_dot.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  54 ) # 54. t_cleanup_empty_dir.at:1: (minor) update cleans emptied directories
    at_setup_line='t_cleanup_empty_dir.at:1'
    at_desc='(minor) update cleans emptied directories'
    $at_quiet $ECHO_N " 54: (minor) update cleans emptied directories    $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "54. t_cleanup_empty_dir.at:1: testing ..."
      $at_traceon


# This test is a bug report.




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_cleanup_empty_dir.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_cleanup_empty_dir.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cleanup_empty_dir.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cleanup_empty_dir.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_cleanup_empty_dir.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cleanup_empty_dir.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cleanup_empty_dir.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_cleanup_empty_dir.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cleanup_empty_dir.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cleanup_empty_dir.at:6: rm test_keys"
echo t_cleanup_empty_dir.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cleanup_empty_dir.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_cleanup_empty_dir.at:8: mkdir testdir"
echo t_cleanup_empty_dir.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir testdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir testdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cleanup_empty_dir.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >testdir/foo <<'_ATEOF'
blah blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_cleanup_empty_dir.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testdir/foo"
echo t_cleanup_empty_dir.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testdir/foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testdir/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testdir/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cleanup_empty_dir.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_cleanup_empty_dir.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_cleanup_empty_dir.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cleanup_empty_dir.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


BASE_R=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_cleanup_empty_dir.at:14: rm -r testdir"
echo t_cleanup_empty_dir.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -r testdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -r testdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cleanup_empty_dir.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cleanup_empty_dir.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop testdir/foo"
echo t_cleanup_empty_dir.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testdir/foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testdir/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testdir/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cleanup_empty_dir.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_cleanup_empty_dir.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_cleanup_empty_dir.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cleanup_empty_dir.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_cleanup_empty_dir.at:18: rm -rf _MTN.old"
echo t_cleanup_empty_dir.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cleanup_empty_dir.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cleanup_empty_dir.at:18: mv  _MTN _MTN.old"
echo t_cleanup_empty_dir.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cleanup_empty_dir.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cleanup_empty_dir.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE_R ."
echo t_cleanup_empty_dir.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cleanup_empty_dir.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_cleanup_empty_dir.at:18: test \$PROBE_R_SHA = \$BASE_R"
echo t_cleanup_empty_dir.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cleanup_empty_dir.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_cleanup_empty_dir.at:20: test -d testdir"
echo t_cleanup_empty_dir.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -d testdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -d testdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cleanup_empty_dir.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cleanup_empty_dir.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_cleanup_empty_dir.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cleanup_empty_dir.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_cleanup_empty_dir.at:23: test \$BASE_R != \`cat _MTN/revision\`"
echo t_cleanup_empty_dir.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $BASE_R != `cat _MTN/revision` ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $BASE_R != `cat _MTN/revision` ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cleanup_empty_dir.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_cleanup_empty_dir.at:25: test -d testdir"
echo t_cleanup_empty_dir.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -d testdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -d testdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_cleanup_empty_dir.at:25: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  55 ) # 55. t_merge_add_del.at:3: merging <add a> with <add a, drop a>
    at_setup_line='t_merge_add_del.at:3'
    at_desc='merging <add a> with <add a, drop a>'
    $at_quiet $ECHO_N " 55: merging <add a> with <add a, drop a>         $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "55. t_merge_add_del.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_merge_add_del.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_merge_add_del.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_merge_add_del.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:5: rm test_keys"
echo t_merge_add_del.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# We want a graph which looks like:
#              A
#            / | \
#           F  C  G
#           |/ |  |
#           D  E  |
#              \ /
#               B

# B and D are heads of branch.main and branch.fork respectively, we want to
# "propagate branch.main branch.fork".

# The revs F, C, and D are members of branch.fork.
# A, C, E, G, and B are members of branch.main (C is shared)

# C is "add bar", E is "drop bar", other revisions involve non-conflicting
# file additions or merges.

cat >foo <<'_ATEOF'
extra blah blah foo
_ATEOF

cat >bar <<'_ATEOF'
extra blah blah bar
_ATEOF

cat >quux <<'_ATEOF'
extra blah blah quux
_ATEOF

cat >iced <<'_ATEOF'
stuff here
_ATEOF


# produce state A
$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_merge_add_del.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state A - add foo'"
echo t_merge_add_del.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state A - add foo'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state A - add foo' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state A - add foo' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

A_REVISION_SHA=`cat _MTN/revision`

# produce state C
$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add bar"
echo t_merge_add_del.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state C - add bar'"
echo t_merge_add_del.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state C - add bar'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state C - add bar' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state C - add bar' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

C_REVISION_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net cert \$C_REVISION_SHA branch branch.fork"
echo t_merge_add_del.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $C_REVISION_SHA branch branch.fork" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $C_REVISION_SHA branch branch.fork ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $C_REVISION_SHA branch branch.fork ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# produce state F

$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:46: rm -rf _MTN.old"
echo t_merge_add_del.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:46: mv  _MTN _MTN.old"
echo t_merge_add_del.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:46: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$A_REVISION_SHA ."
echo t_merge_add_del.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A_REVISION_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A_REVISION_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A_REVISION_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:46: test \$PROBE_R_SHA = \$A_REVISION_SHA"
echo t_merge_add_del.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $A_REVISION_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $A_REVISION_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $A_REVISION_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:47: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add iced"
echo t_merge_add_del.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add iced" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add iced ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add iced ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:48: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.fork commit --message 'state F - add iced'"
echo t_merge_add_del.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.fork commit --message 'state F - add iced'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.fork commit --message 'state F - add iced' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.fork commit --message 'state F - add iced' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

F_REVISION_SHA=`cat _MTN/revision`

# merge heads of branch.fork to make D
$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.fork merge"
echo t_merge_add_del.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.fork merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.fork merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.fork merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# produce state E

$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:55: rm -rf _MTN.old"
echo t_merge_add_del.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:55: mv  _MTN _MTN.old"
echo t_merge_add_del.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:55: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main checkout --revision=\$C_REVISION_SHA ."
echo t_merge_add_del.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main checkout --revision=$C_REVISION_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main checkout --revision=$C_REVISION_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main checkout --revision=$C_REVISION_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:55: test \$PROBE_R_SHA = \$C_REVISION_SHA"
echo t_merge_add_del.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $C_REVISION_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $C_REVISION_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $C_REVISION_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:56: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop bar"
echo t_merge_add_del.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:57: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state E - drop bar'"
echo t_merge_add_del.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state E - drop bar'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state E - drop bar' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state E - drop bar' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

E_REVISION_SHA=`cat _MTN/revision`

# state G

$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:61: rm -rf _MTN.old"
echo t_merge_add_del.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:61: mv  _MTN _MTN.old"
echo t_merge_add_del.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:61: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$A_REVISION_SHA ."
echo t_merge_add_del.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A_REVISION_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A_REVISION_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A_REVISION_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:61: test \$PROBE_R_SHA = \$A_REVISION_SHA"
echo t_merge_add_del.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $A_REVISION_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $A_REVISION_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $A_REVISION_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:62: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add quux"
echo t_merge_add_del.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add quux" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add quux ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add quux ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:63: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state G - add quux'"
echo t_merge_add_del.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state G - add quux'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state G - add quux' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state G - add quux' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

G_REVISION_SHA=`cat _MTN/revision`

# merge to get state B
$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:67: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main merge"
echo t_merge_add_del.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:67: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# now try the propagate
$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:70: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net propagate branch.main branch.fork"
echo t_merge_add_del.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate branch.main branch.fork" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate branch.main branch.fork ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate branch.main branch.fork ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check
$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:73: rm -rf _MTN"
echo t_merge_add_del.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:73: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:74: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.fork checkout ."
echo t_merge_add_del.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.fork checkout ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.fork checkout . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.fork checkout . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:76: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of"
echo t_merge_add_del.at:76 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:76: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:77: mv stdout manifest"
echo t_merge_add_del.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:78: grep bar manifest"
echo t_merge_add_del.at:78 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep bar manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep bar manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:78: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:79: grep quux manifest"
echo t_merge_add_del.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep quux manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep quux manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:80: grep foo manifest"
echo t_merge_add_del.at:80 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foo manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foo manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:80: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_del.at:81: grep iced manifest"
echo t_merge_add_del.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep iced manifest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep iced manifest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_del.at:81: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  56 ) # 56. t_add_edge.at:1: merging an add edge
    at_setup_line='t_add_edge.at:1'
    at_desc='merging an add edge'
    $at_quiet $ECHO_N " 56: merging an add edge                          $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "56. t_add_edge.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_add_edge.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_add_edge.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_edge.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_edge.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_add_edge.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_edge.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_edge.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_add_edge.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_edge.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_edge.at:2: rm test_keys"
echo t_add_edge.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_edge.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This test relies on file-suturing


mkdir zz


cat >ancfile <<'_ATEOF'
ancestral file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_add_edge.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add ancfile"
echo t_add_edge.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add ancfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add ancfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add ancfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_edge.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >zz/testfile0 <<'_ATEOF'
added file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_add_edge.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add zz/testfile0"
echo t_add_edge.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add zz/testfile0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add zz/testfile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add zz/testfile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_edge.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_add_edge.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_add_edge.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_edge.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


ANC=`cat _MTN/revision`



cat >zz/testfile1 <<'_ATEOF'
added file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_add_edge.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add zz/testfile1"
echo t_add_edge.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add zz/testfile1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add zz/testfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add zz/testfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_edge.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_add_edge.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_add_edge.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_edge.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_add_edge.at:21: rm -rf _MTN.old"
echo t_add_edge.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_edge.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_edge.at:21: mv  _MTN _MTN.old"
echo t_add_edge.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_edge.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_edge.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$ANC ."
echo t_add_edge.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ANC ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ANC . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ANC . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_edge.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_add_edge.at:21: test \$PROBE_R_SHA = \$ANC"
echo t_add_edge.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $ANC" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $ANC ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $ANC ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_edge.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >changed_anc <<'_ATEOF'
changed anc
_ATEOF


$at_traceoff
echo "$at_srcdir/t_add_edge.at:26: cp changed_anc ancfile"
echo t_add_edge.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp changed_anc ancfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp changed_anc ancfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_edge.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >zz/testfile1 <<'_ATEOF'
added file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_add_edge.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add zz/testfile1"
echo t_add_edge.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add zz/testfile1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add zz/testfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add zz/testfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_edge.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_add_edge.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_add_edge.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_edge.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_add_edge.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge"
echo t_add_edge.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_edge.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_edge.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_add_edge.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_edge.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


MERGED=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_add_edge.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision \$MERGED"
echo t_add_edge.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $MERGED" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $MERGED ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $MERGED ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_edge.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_edge.at:39: mv stdout rev"
echo t_add_edge.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout rev ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout rev ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_edge.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_edge.at:40: grep add_file rev"
echo t_add_edge.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep add_file rev ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep add_file rev ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_add_edge.at:40: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  57 ) # 57. t_patch_drop_add.at:1: merge(<>, <patch a, drop a, add a>)
    at_setup_line='t_patch_drop_add.at:1'
    at_desc='merge(<>, <patch a, drop a, add a>)'
    $at_quiet $ECHO_N " 57: merge(<>, <patch a, drop a, add a>)          $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "57. t_patch_drop_add.at:1: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_patch_drop_add.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_patch_drop_add.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_drop_add.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_patch_drop_add.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_patch_drop_add.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_drop_add.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_patch_drop_add.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_patch_drop_add.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_drop_add.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_patch_drop_add.at:3: rm test_keys"
echo t_patch_drop_add.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_drop_add.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >v1a <<'_ATEOF'
foo blah
_ATEOF

cat >v1b <<'_ATEOF'
bar blah
_ATEOF

cat >v2a <<'_ATEOF'
baz blah
_ATEOF


$at_traceoff
echo "$at_srcdir/t_patch_drop_add.at:12: cp v1a testfile"
echo t_patch_drop_add.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp v1a testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp v1a testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_drop_add.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_patch_drop_add.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_patch_drop_add.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_drop_add.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_patch_drop_add.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_patch_drop_add.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_drop_add.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


BASE_R_SHA=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_patch_drop_add.at:17: cp v1b testfile"
echo t_patch_drop_add.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp v1b testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp v1b testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_drop_add.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_patch_drop_add.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_patch_drop_add.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_drop_add.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_patch_drop_add.at:20: rm -f testfile"
echo t_patch_drop_add.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_drop_add.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_patch_drop_add.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop testfile"
echo t_patch_drop_add.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_drop_add.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_patch_drop_add.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_patch_drop_add.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_drop_add.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_patch_drop_add.at:24: cp v2a testfile"
echo t_patch_drop_add.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp v2a testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp v2a testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_drop_add.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_patch_drop_add.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_patch_drop_add.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_drop_add.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_patch_drop_add.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_patch_drop_add.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_drop_add.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_patch_drop_add.at:28: rm -rf _MTN.old"
echo t_patch_drop_add.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_drop_add.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_patch_drop_add.at:28: mv  _MTN _MTN.old"
echo t_patch_drop_add.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_drop_add.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_patch_drop_add.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE_R_SHA ."
echo t_patch_drop_add.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_drop_add.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_patch_drop_add.at:28: test \$PROBE_R_SHA = \$BASE_R_SHA"
echo t_patch_drop_add.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_drop_add.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >otherfile <<'_ATEOF'
this space for rent
_ATEOF

$at_traceoff
echo "$at_srcdir/t_patch_drop_add.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add otherfile"
echo t_patch_drop_add.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_drop_add.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_patch_drop_add.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_patch_drop_add.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_drop_add.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_patch_drop_add.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge"
echo t_patch_drop_add.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_drop_add.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_patch_drop_add.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_patch_drop_add.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_drop_add.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_patch_drop_add.at:36: cmp testfile v2a"
echo t_patch_drop_add.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile v2a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile v2a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_drop_add.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  58 ) # 58. t_add_drop_add.at:1: merge(<>, <add a, drop a, add a>)
    at_setup_line='t_add_drop_add.at:1'
    at_desc='merge(<>, <add a, drop a, add a>)'
    $at_quiet $ECHO_N " 58: merge(<>, <add a, drop a, add a>)            $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "58. t_add_drop_add.at:1: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_add_drop_add.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_add_drop_add.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_drop_add.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_drop_add.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_add_drop_add.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_drop_add.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_drop_add.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_add_drop_add.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_drop_add.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_drop_add.at:3: rm test_keys"
echo t_add_drop_add.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_drop_add.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >v1 <<'_ATEOF'
foo blah
_ATEOF

cat >v2 <<'_ATEOF'
baz blah
_ATEOF



cat >randomfile <<'_ATEOF'
blah blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_add_drop_add.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add randomfile"
echo t_add_drop_add.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add randomfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add randomfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add randomfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_drop_add.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_add_drop_add.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_add_drop_add.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_drop_add.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


BASE_R_SHA=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_add_drop_add.at:15: cp v1 testfile"
echo t_add_drop_add.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp v1 testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp v1 testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_drop_add.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_drop_add.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_add_drop_add.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_drop_add.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add_drop_add.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_add_drop_add.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_drop_add.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_add_drop_add.at:19: rm -f testfile"
echo t_add_drop_add.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_drop_add.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_drop_add.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop testfile"
echo t_add_drop_add.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_drop_add.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add_drop_add.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_add_drop_add.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_drop_add.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_add_drop_add.at:23: cp v2 testfile"
echo t_add_drop_add.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp v2 testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp v2 testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_drop_add.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_drop_add.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_add_drop_add.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_drop_add.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add_drop_add.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_add_drop_add.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_drop_add.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_add_drop_add.at:27: rm -rf _MTN.old"
echo t_add_drop_add.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_drop_add.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_drop_add.at:27: mv  _MTN _MTN.old"
echo t_add_drop_add.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_drop_add.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_drop_add.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE_R_SHA ."
echo t_add_drop_add.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_drop_add.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_add_drop_add.at:27: test \$PROBE_R_SHA = \$BASE_R_SHA"
echo t_add_drop_add.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_drop_add.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >otherfile <<'_ATEOF'
this space for rent
_ATEOF

$at_traceoff
echo "$at_srcdir/t_add_drop_add.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add otherfile"
echo t_add_drop_add.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_drop_add.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_add_drop_add.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_add_drop_add.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_drop_add.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_add_drop_add.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge"
echo t_add_drop_add.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_drop_add.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_drop_add.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_add_drop_add.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_drop_add.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_drop_add.at:35: cmp testfile v2"
echo t_add_drop_add.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile v2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile v2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_drop_add.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  59 ) # 59. t_merge2_add_drop_add.at:1: merge(<add a>, <add a, drop a, add a>)
    at_setup_line='t_merge2_add_drop_add.at:1'
    at_desc='merge(<add a>, <add a, drop a, add a>)'
    $at_quiet $ECHO_N " 59: merge(<add a>, <add a, drop a, add a>)       $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "59. t_merge2_add_drop_add.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_merge2_add_drop_add.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_merge2_add_drop_add.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_merge2_add_drop_add.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:2: rm test_keys"
echo t_merge2_add_drop_add.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This test relies on file-suturing


cat >right_1_a <<'_ATEOF'
foo blah
_ATEOF

cat >right_1_b <<'_ATEOF'
bar blah
_ATEOF

cat >right_2_a <<'_ATEOF'
baz blah
_ATEOF


cat >left <<'_ATEOF'
quux blah
_ATEOF



cat >otherfile <<'_ATEOF'
this space for rent
_ATEOF

$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add otherfile"
echo t_merge2_add_drop_add.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge2_add_drop_add.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


BASE_R_SHA=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:22: cp right_1_a testfile"
echo t_merge2_add_drop_add.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp right_1_a testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp right_1_a testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_merge2_add_drop_add.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge2_add_drop_add.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:26: cp right_1_b testfile"
echo t_merge2_add_drop_add.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp right_1_b testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp right_1_b testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge2_add_drop_add.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:29: rm -f testfile"
echo t_merge2_add_drop_add.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop testfile"
echo t_merge2_add_drop_add.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge2_add_drop_add.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:33: cp right_2_a testfile"
echo t_merge2_add_drop_add.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp right_2_a testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp right_2_a testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_merge2_add_drop_add.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge2_add_drop_add.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:37: rm -rf _MTN.old"
echo t_merge2_add_drop_add.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:37: mv  _MTN _MTN.old"
echo t_merge2_add_drop_add.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE_R_SHA ."
echo t_merge2_add_drop_add.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:37: test \$PROBE_R_SHA = \$BASE_R_SHA"
echo t_merge2_add_drop_add.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:39: cp left testfile"
echo t_merge2_add_drop_add.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp left testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp left testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_merge2_add_drop_add.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge2_add_drop_add.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge"
echo t_merge2_add_drop_add.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:44: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_merge2_add_drop_add.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge2_add_drop_add.at:45: cmp testfile right_2_a || cmp testfile left"
echo t_merge2_add_drop_add.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile right_2_a || cmp testfile left ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile right_2_a || cmp testfile left ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge2_add_drop_add.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  60 ) # 60. t_add_patch_drop_add.at:1: merge(<>, <add a, patch a, drop a, add a>)
    at_setup_line='t_add_patch_drop_add.at:1'
    at_desc='merge(<>, <add a, patch a, drop a, add a>)'
    $at_quiet $ECHO_N " 60: merge(<>, <add a, patch a, drop a, add a>)   $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "60. t_add_patch_drop_add.at:1: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_add_patch_drop_add.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_add_patch_drop_add.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_add_patch_drop_add.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:3: rm test_keys"
echo t_add_patch_drop_add.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >v1a <<'_ATEOF'
foo blah
_ATEOF

cat >v1b <<'_ATEOF'
bar blah
_ATEOF

cat >v2a <<'_ATEOF'
baz blah
_ATEOF



cat >randomfile <<'_ATEOF'
blah blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add randomfile"
echo t_add_patch_drop_add.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add randomfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add randomfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add randomfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_add_patch_drop_add.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


BASE_R_SHA=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:17: cp v1a testfile"
echo t_add_patch_drop_add.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp v1a testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp v1a testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_add_patch_drop_add.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_add_patch_drop_add.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:21: cp v1b testfile"
echo t_add_patch_drop_add.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp v1b testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp v1b testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_add_patch_drop_add.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:24: rm -f testfile"
echo t_add_patch_drop_add.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop testfile"
echo t_add_patch_drop_add.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_add_patch_drop_add.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:28: cp v2a testfile"
echo t_add_patch_drop_add.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp v2a testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp v2a testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_add_patch_drop_add.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_add_patch_drop_add.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:32: rm -rf _MTN.old"
echo t_add_patch_drop_add.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:32: mv  _MTN _MTN.old"
echo t_add_patch_drop_add.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE_R_SHA ."
echo t_add_patch_drop_add.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:32: test \$PROBE_R_SHA = \$BASE_R_SHA"
echo t_add_patch_drop_add.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >otherfile <<'_ATEOF'
this space for rent
_ATEOF

$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add otherfile"
echo t_add_patch_drop_add.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_add_patch_drop_add.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge"
echo t_add_patch_drop_add.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:39: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_add_patch_drop_add.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_patch_drop_add.at:40: cmp testfile v2a"
echo t_add_patch_drop_add.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile v2a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile v2a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_patch_drop_add.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  61 ) # 61. t_patch_vs_drop_add.at:1: merge(<patch a>, <drop a, add a>)
    at_setup_line='t_patch_vs_drop_add.at:1'
    at_desc='merge(<patch a>, <drop a, add a>)'
    $at_quiet $ECHO_N " 61: merge(<patch a>, <drop a, add a>)            $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "61. t_patch_vs_drop_add.at:1: testing ..."
      $at_traceon


# In this case, the patch should be completely ignored; we shouldn't
# even try to do a merge.



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_patch_vs_drop_add.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_patch_vs_drop_add.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_vs_drop_add.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_patch_vs_drop_add.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_patch_vs_drop_add.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_vs_drop_add.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_patch_vs_drop_add.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_patch_vs_drop_add.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_vs_drop_add.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_patch_vs_drop_add.at:6: rm test_keys"
echo t_patch_vs_drop_add.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_vs_drop_add.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >base <<'_ATEOF'
foo blah
_ATEOF

cat >left <<'_ATEOF'
bar blah
_ATEOF

cat >new_right <<'_ATEOF'
baz blah
_ATEOF


$at_traceoff
echo "$at_srcdir/t_patch_vs_drop_add.at:15: cp base testfile"
echo t_patch_vs_drop_add.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp base testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp base testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_vs_drop_add.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_patch_vs_drop_add.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_patch_vs_drop_add.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_vs_drop_add.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_patch_vs_drop_add.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_patch_vs_drop_add.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_vs_drop_add.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


BASE_R_SHA=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_patch_vs_drop_add.at:20: cp left testfile"
echo t_patch_vs_drop_add.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp left testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp left testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_vs_drop_add.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_patch_vs_drop_add.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_patch_vs_drop_add.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_vs_drop_add.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_patch_vs_drop_add.at:23: rm -rf _MTN.old"
echo t_patch_vs_drop_add.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_vs_drop_add.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_patch_vs_drop_add.at:23: mv  _MTN _MTN.old"
echo t_patch_vs_drop_add.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_vs_drop_add.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_patch_vs_drop_add.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE_R_SHA ."
echo t_patch_vs_drop_add.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_vs_drop_add.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_patch_vs_drop_add.at:23: test \$PROBE_R_SHA = \$BASE_R_SHA"
echo t_patch_vs_drop_add.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_vs_drop_add.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_patch_vs_drop_add.at:25: rm -f testfile"
echo t_patch_vs_drop_add.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_vs_drop_add.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_patch_vs_drop_add.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop testfile"
echo t_patch_vs_drop_add.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_vs_drop_add.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_patch_vs_drop_add.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_patch_vs_drop_add.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_vs_drop_add.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_patch_vs_drop_add.at:29: cp new_right testfile"
echo t_patch_vs_drop_add.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp new_right testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp new_right testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_vs_drop_add.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_patch_vs_drop_add.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_patch_vs_drop_add.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_vs_drop_add.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_patch_vs_drop_add.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_patch_vs_drop_add.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_vs_drop_add.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_patch_vs_drop_add.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge"
echo t_patch_vs_drop_add.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_vs_drop_add.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_patch_vs_drop_add.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_patch_vs_drop_add.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_vs_drop_add.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_patch_vs_drop_add.at:35: cmp testfile new_right"
echo t_patch_vs_drop_add.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile new_right ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile new_right ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_patch_vs_drop_add.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  62 ) # 62. t_explicit_merge.at:1: explicit_merge
    at_setup_line='t_explicit_merge.at:1'
    at_desc='explicit_merge'
    $at_quiet $ECHO_N " 62: explicit_merge                               $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "62. t_explicit_merge.at:1: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_explicit_merge.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_explicit_merge.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_explicit_merge.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_explicit_merge.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_explicit_merge.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_explicit_merge.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_explicit_merge.at:3: rm test_keys"
echo t_explicit_merge.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
1 blah
2 blah
3 blah
4 blah
5 blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_explicit_merge.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_explicit_merge.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_explicit_merge.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_explicit_merge.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


ANC=`cat _MTN/revision`

cat >dont_merge <<'_ATEOF'
1 blah
2 change not to merge
3 blah
4 change not to merge
5 blah
_ATEOF

cat >left <<'_ATEOF'
1 blah
2 left change
3 blah
4 blah
5 blah
_ATEOF

cat >right <<'_ATEOF'
1 blah
2 blah
3 blah
4 right change
5 blah
_ATEOF

cat >merged <<'_ATEOF'
1 blah
2 left change
3 blah
4 right change
5 blah
_ATEOF


$at_traceoff
echo "$at_srcdir/t_explicit_merge.at:39: cp dont_merge testfile"
echo t_explicit_merge.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp dont_merge testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp dont_merge testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_explicit_merge.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_explicit_merge.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_explicit_merge.at:42: rm -rf _MTN.old"
echo t_explicit_merge.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_explicit_merge.at:42: mv  _MTN _MTN.old"
echo t_explicit_merge.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_explicit_merge.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$ANC ."
echo t_explicit_merge.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ANC ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ANC . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ANC . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_explicit_merge.at:42: test \$PROBE_R_SHA = \$ANC"
echo t_explicit_merge.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $ANC" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $ANC ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $ANC ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_explicit_merge.at:43: cp left testfile"
echo t_explicit_merge.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp left testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp left testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_explicit_merge.at:44: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_explicit_merge.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


LEFT=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_explicit_merge.at:47: rm -rf _MTN.old"
echo t_explicit_merge.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_explicit_merge.at:47: mv  _MTN _MTN.old"
echo t_explicit_merge.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_explicit_merge.at:47: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$ANC ."
echo t_explicit_merge.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ANC ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ANC . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ANC . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_explicit_merge.at:47: test \$PROBE_R_SHA = \$ANC"
echo t_explicit_merge.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $ANC" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $ANC ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $ANC ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_explicit_merge.at:48: cp right testfile"
echo t_explicit_merge.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp right testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp right testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_explicit_merge.at:49: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_explicit_merge.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


RIGHT=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_explicit_merge.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net explicit_merge \$LEFT \$RIGHT otherbranch"
echo t_explicit_merge.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $LEFT $RIGHT otherbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $LEFT $RIGHT otherbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $LEFT $RIGHT otherbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Check that it didn't end up on our current branch, i.e. update doesn't do anything
$at_traceoff
echo "$at_srcdir/t_explicit_merge.at:55: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_explicit_merge.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_explicit_merge.at:56: cmp right testfile"
echo t_explicit_merge.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp right testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp right testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_explicit_merge.at:58: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --branch=otherbranch otherbranch_co"
echo t_explicit_merge.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=otherbranch otherbranch_co" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=otherbranch otherbranch_co ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=otherbranch otherbranch_co ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_explicit_merge.at:59: cmp merged otherbranch_co/testfile"
echo t_explicit_merge.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp merged otherbranch_co/testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp merged otherbranch_co/testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  63 ) # 63. t_ambig_update.at:1: update with multiple candidates
    at_setup_line='t_ambig_update.at:1'
    at_desc='update with multiple candidates'
    $at_quiet $ECHO_N " 63: update with multiple candidates              $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "63. t_ambig_update.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_ambig_update.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_ambig_update.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_ambig_update.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_ambig_update.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:2: rm test_keys"
echo t_ambig_update.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# Make sure that when there are multiple plausible heads, update
# fails, and prints some informative message listing the heads.


cat >testfile <<'_ATEOF'
foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_ambig_update.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_ambig_update.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_ambig_update.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


ANC=`cat _MTN/revision`


cat >file1 <<'_ATEOF'
bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file1"
echo t_ambig_update.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_ambig_update.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_ambig_update.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


LEFT=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_ambig_update.at:17: rm -rf _MTN.old"
echo t_ambig_update.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:17: mv  _MTN _MTN.old"
echo t_ambig_update.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$ANC ."
echo t_ambig_update.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ANC ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ANC . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ANC . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_ambig_update.at:17: test \$PROBE_R_SHA = \$ANC"
echo t_ambig_update.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $ANC" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $ANC ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $ANC ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >file1 <<'_ATEOF'
baz
_ATEOF

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file1"
echo t_ambig_update.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_ambig_update.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_ambig_update.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


RIGHT=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_ambig_update.at:24: rm -rf _MTN.old"
echo t_ambig_update.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:24: mv  _MTN _MTN.old"
echo t_ambig_update.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$ANC ."
echo t_ambig_update.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ANC ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ANC . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ANC . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_ambig_update.at:24: test \$PROBE_R_SHA = \$ANC"
echo t_ambig_update.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $ANC" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $ANC ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $ANC ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# There are two possible candidates, so our update should fail.
$at_traceoff
echo "$at_srcdir/t_ambig_update.at:27: rm -f file1"
echo t_ambig_update.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_ambig_update.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_ambig_update.at:28: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:29: test ! -e file1"
echo t_ambig_update.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# Make sure that the failure message listed the possibilities
$at_traceoff
echo "$at_srcdir/t_ambig_update.at:31: grep \$LEFT stderr >/dev/null"
echo t_ambig_update.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $LEFT stderr >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $LEFT stderr >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $LEFT stderr >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:32: grep \$RIGHT stderr >/dev/null"
echo t_ambig_update.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $RIGHT stderr >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $RIGHT stderr >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $RIGHT stderr >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:33: grep \$ANC stderr >/dev/null"
echo t_ambig_update.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $ANC stderr >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $ANC stderr >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $ANC stderr >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_ambig_update.at:33: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Check also when one side is deeper than the other...

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:36: rm -rf _MTN.old"
echo t_ambig_update.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:36: mv  _MTN _MTN.old"
echo t_ambig_update.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$LEFT ."
echo t_ambig_update.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$LEFT ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$LEFT . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$LEFT . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_ambig_update.at:36: test \$PROBE_R_SHA = \$LEFT"
echo t_ambig_update.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $LEFT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $LEFT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $LEFT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >file2 <<'_ATEOF'
blah blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file2"
echo t_ambig_update.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_ambig_update.at:39: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_ambig_update.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


LEFT2=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_ambig_update.at:42: rm -rf _MTN.old"
echo t_ambig_update.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:42: mv  _MTN _MTN.old"
echo t_ambig_update.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$ANC ."
echo t_ambig_update.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ANC ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ANC . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ANC . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_ambig_update.at:42: test \$PROBE_R_SHA = \$ANC"
echo t_ambig_update.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $ANC" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $ANC ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $ANC ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ambig_update.at:43: rm -f file1"
echo t_ambig_update.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:44: rm -f file2"
echo t_ambig_update.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:45: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_ambig_update.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_ambig_update.at:45: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:46: test ! -e file1"
echo t_ambig_update.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:47: test ! -e file2"
echo t_ambig_update.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# Make sure that the failure message listed the possibilities
$at_traceoff
echo "$at_srcdir/t_ambig_update.at:49: grep \$LEFT stderr >/dev/null"
echo t_ambig_update.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $LEFT stderr >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $LEFT stderr >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $LEFT stderr >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_ambig_update.at:49: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:50: grep \$LEFT2 stderr >/dev/null"
echo t_ambig_update.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $LEFT2 stderr >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $LEFT2 stderr >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $LEFT2 stderr >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:51: grep \$RIGHT stderr >/dev/null"
echo t_ambig_update.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $RIGHT stderr >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $RIGHT stderr >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $RIGHT stderr >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambig_update.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambig_update.at:52: grep \$ANC stderr >/dev/null"
echo t_ambig_update.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $ANC stderr >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $ANC stderr >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $ANC stderr >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_ambig_update.at:52: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  64 ) # 64. t_checkout_dir.at:1: checkout validates target directory
    at_setup_line='t_checkout_dir.at:1'
    at_desc='checkout validates target directory'
    $at_quiet $ECHO_N " 64: checkout validates target directory          $ECHO_C"
    at_xfail=no
      test -O / && at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "64. t_checkout_dir.at:1: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_checkout_dir.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_checkout_dir.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_dir.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_dir.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_checkout_dir.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_dir.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_dir.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_checkout_dir.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_dir.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_dir.at:3: rm test_keys"
echo t_checkout_dir.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_dir.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_checkout_dir.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_checkout_dir.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_dir.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_checkout_dir.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_checkout_dir.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_dir.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_checkout_dir.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout test_dir1"
echo t_checkout_dir.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout test_dir1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout test_dir1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout test_dir1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_dir.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


echo >test_dir2
$at_traceoff
echo "$at_srcdir/t_checkout_dir.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout test_dir2"
echo t_checkout_dir.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout test_dir2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout test_dir2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout test_dir2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_checkout_dir.at:14: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


mkdir test_dir3
$at_traceoff
echo "$at_srcdir/t_checkout_dir.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout test_dir3"
echo t_checkout_dir.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout test_dir3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout test_dir3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout test_dir3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_checkout_dir.at:18: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


mkdir test_dir4
chmod 444 test_dir4
# XFAIL if run as root (hi Gentoo!)

$at_traceoff
echo "$at_srcdir/t_checkout_dir.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout test_dir4"
echo t_checkout_dir.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout test_dir4" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout test_dir4 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout test_dir4 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_checkout_dir.at:25: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_dir.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout test_dir4/subdir"
echo t_checkout_dir.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout test_dir4/subdir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout test_dir4/subdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout test_dir4/subdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_checkout_dir.at:27: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# Reset the permissions so Autotest can correctly clean up our
# temporary directory.
chmod 700 test_dir4

# checkout <existing dir> normally is disallowed
# but as a special case, we allow "checkout ."

mkdir test_dir5
$at_traceoff
echo "$at_srcdir/t_checkout_dir.at:36: cd test_dir5 && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout ."
echo t_checkout_dir.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd test_dir5 && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd test_dir5 && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd test_dir5 && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_dir.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  65 ) # 65. t_checkout_options.at:1: checkout creates right _MTN/options
    at_setup_line='t_checkout_options.at:1'
    at_desc='checkout creates right _MTN/options'
    $at_quiet $ECHO_N " 65: checkout creates right _MTN/options          $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "65. t_checkout_options.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_checkout_options.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_checkout_options.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_options.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_options.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_checkout_options.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_options.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_options.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_checkout_options.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_options.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_options.at:2: rm test_keys"
echo t_checkout_options.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_options.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_checkout_options.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_checkout_options.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_options.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_checkout_options.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_checkout_options.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_options.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV=`cat _MTN/revision`

# We use RAW_MTN because it used to be that passing --db= (as
# MTN does) would hide a bug in this functionality...

# all of these inherit options settings from the current _MTN dir
# unless they override them on the command line

$at_traceoff
echo "$at_srcdir/t_checkout_options.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR checkout test_dir1"
echo t_checkout_options.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR checkout test_dir1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR checkout test_dir1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR checkout test_dir1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_options.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_options.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --db=test.db checkout test_dir2"
echo t_checkout_options.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --db=test.db checkout test_dir2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --db=test.db checkout test_dir2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --db=test.db checkout test_dir2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_options.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_options.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --db=test.db --branch=testbranch checkout test_dir3"
echo t_checkout_options.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --db=test.db --branch=testbranch checkout test_dir3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --db=test.db --branch=testbranch checkout test_dir3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --db=test.db --branch=testbranch checkout test_dir3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_options.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_options.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --branch=testbranch checkout test_dir4"
echo t_checkout_options.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --branch=testbranch checkout test_dir4" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --branch=testbranch checkout test_dir4 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --branch=testbranch checkout test_dir4 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_options.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_options.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --db=test.db --branch=testbranch checkout --revision=\$REV test_dir5"
echo t_checkout_options.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --db=test.db --branch=testbranch checkout --revision=$REV test_dir5" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --db=test.db --branch=testbranch checkout --revision=$REV test_dir5 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --db=test.db --branch=testbranch checkout --revision=$REV test_dir5 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_options.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_options.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --branch=testbranch checkout --revision=\$REV test_dir6"
echo t_checkout_options.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --branch=testbranch checkout --revision=$REV test_dir6" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --branch=testbranch checkout --revision=$REV test_dir6 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --branch=testbranch checkout --revision=$REV test_dir6 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_options.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_options.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --db=test.db checkout --revision=\$REV test_dir7"
echo t_checkout_options.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --db=test.db checkout --revision=$REV test_dir7" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --db=test.db checkout --revision=$REV test_dir7 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --db=test.db checkout --revision=$REV test_dir7 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_options.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_options.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR checkout --revision=\$REV test_dir8"
echo t_checkout_options.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR checkout --revision=$REV test_dir8" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR checkout --revision=$REV test_dir8 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR checkout --revision=$REV test_dir8 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_options.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# checkout fails if the specified revision is not a member of the specified branch
$at_traceoff
echo "$at_srcdir/t_checkout_options.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --branch=foobar checkout --revision=\$REV test_dir9"
echo t_checkout_options.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --branch=foobar checkout --revision=$REV test_dir9" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --branch=foobar checkout --revision=$REV test_dir9 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --branch=foobar checkout --revision=$REV test_dir9 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_checkout_options.at:25: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_options.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net cert \$REV branch foobar"
echo t_checkout_options.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $REV branch foobar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $REV branch foobar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $REV branch foobar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_options.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_options.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --branch=foobar checkout --revision=\$REV test_dir10"
echo t_checkout_options.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --branch=foobar checkout --revision=$REV test_dir10" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --branch=foobar checkout --revision=$REV test_dir10 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --branch=foobar checkout --revision=$REV test_dir10 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_options.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



for DIR in test_dir[12345678]; do
  $at_traceoff
echo "$at_srcdir/t_checkout_options.at:31: echo DIR=\$DIR"
echo t_checkout_options.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo DIR=$DIR" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo DIR=$DIR ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo DIR=$DIR ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_options.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

  $at_traceoff
echo "$at_srcdir/t_checkout_options.at:32: test -f \$DIR/_MTN/options"
echo t_checkout_options.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test -f $DIR/_MTN/options" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f $DIR/_MTN/options ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f $DIR/_MTN/options ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_options.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

  $at_traceoff
echo "$at_srcdir/t_checkout_options.at:33: grep test.db \$DIR/_MTN/options >/dev/null"
echo t_checkout_options.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep test.db $DIR/_MTN/options >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep test.db $DIR/_MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep test.db $DIR/_MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_options.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

  $at_traceoff
echo "$at_srcdir/t_checkout_options.at:34: grep testbranch \$DIR/_MTN/options >/dev/null"
echo t_checkout_options.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep testbranch $DIR/_MTN/options >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testbranch $DIR/_MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testbranch $DIR/_MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_options.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done

$at_traceoff
echo "$at_srcdir/t_checkout_options.at:37: grep foobar test_dir10/_MTN/options >/dev/null"
echo t_checkout_options.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foobar test_dir10/_MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foobar test_dir10/_MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_options.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  66 ) # 66. t_trusted.at:1: trust hooks and 'trusted' command
    at_setup_line='t_trusted.at:1'
    at_desc='trust hooks and 'trusted' command'
    $at_quiet $ECHO_N " 66: trust hooks and 'trusted' command            $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "66. t_trusted.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_trusted.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_trusted.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_trusted.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_trusted.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_trusted.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_trusted.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_trusted.at:2: rm test_keys"
echo t_trusted.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# run as CHECK_TRUSTED(rev, name, value, signers)

# run as CHECK_UNTRUSTED(rev, name, value, signers)


GOOD=1111111111111111111111111111111111111111
BAD=0000000000000000000000000000000000000000

# Idea here is to check a bunch of combinations, to make sure that
# trust hooks get all information correctly

$at_traceoff
echo "$at_srcdir/t_trusted.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net trusted \$GOOD foo bar foo@bar.com"
echo t_trusted.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $GOOD foo bar foo@bar.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $GOOD foo bar foo@bar.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $GOOD foo bar foo@bar.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_trusted.at:20: grep -i ' trusted' stdout >/dev/null"
echo t_trusted.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep -i ' trusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep -i ' trusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_trusted.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net trusted \$GOOD foo bar alice@trusted.com"
echo t_trusted.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $GOOD foo bar alice@trusted.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $GOOD foo bar alice@trusted.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $GOOD foo bar alice@trusted.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_trusted.at:21: grep -i ' trusted' stdout >/dev/null"
echo t_trusted.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep -i ' trusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep -i ' trusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_trusted.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net trusted \$GOOD foo bar mallory@evil.com"
echo t_trusted.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $GOOD foo bar mallory@evil.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $GOOD foo bar mallory@evil.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $GOOD foo bar mallory@evil.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_trusted.at:22: grep -i ' untrusted' stdout >/dev/null"
echo t_trusted.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep -i ' untrusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep -i ' untrusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_trusted.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net trusted \$GOOD bad-cert bad-val foo@bar.com"
echo t_trusted.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $GOOD bad-cert bad-val foo@bar.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $GOOD bad-cert bad-val foo@bar.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $GOOD bad-cert bad-val foo@bar.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_trusted.at:23: grep -i ' trusted' stdout >/dev/null"
echo t_trusted.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep -i ' trusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep -i ' trusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_trusted.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net trusted \$BAD good-cert bad-val foo@bar.com"
echo t_trusted.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $BAD good-cert bad-val foo@bar.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $BAD good-cert bad-val foo@bar.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $BAD good-cert bad-val foo@bar.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_trusted.at:24: grep -i ' trusted' stdout >/dev/null"
echo t_trusted.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep -i ' trusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep -i ' trusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_trusted.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net trusted \$BAD bad-cert good-val foo@bar.com"
echo t_trusted.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $BAD bad-cert good-val foo@bar.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $BAD bad-cert good-val foo@bar.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $BAD bad-cert good-val foo@bar.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_trusted.at:25: grep -i ' trusted' stdout >/dev/null"
echo t_trusted.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep -i ' trusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep -i ' trusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_trusted.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net trusted \$BAD bad-cert bad-val foo@bar.com"
echo t_trusted.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $BAD bad-cert bad-val foo@bar.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $BAD bad-cert bad-val foo@bar.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $BAD bad-cert bad-val foo@bar.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_trusted.at:26: grep -i ' untrusted' stdout >/dev/null"
echo t_trusted.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep -i ' untrusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep -i ' untrusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_trusted.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net trusted \$BAD bad-cert bad-val alice@trusted.com"
echo t_trusted.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $BAD bad-cert bad-val alice@trusted.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $BAD bad-cert bad-val alice@trusted.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $BAD bad-cert bad-val alice@trusted.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_trusted.at:27: grep -i ' trusted' stdout >/dev/null"
echo t_trusted.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep -i ' trusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep -i ' trusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_trusted.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net trusted \$GOOD foo bar foo@bar.com alice@trusted.com"
echo t_trusted.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $GOOD foo bar foo@bar.com alice@trusted.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $GOOD foo bar foo@bar.com alice@trusted.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $GOOD foo bar foo@bar.com alice@trusted.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_trusted.at:29: grep -i ' trusted' stdout >/dev/null"
echo t_trusted.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep -i ' trusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep -i ' trusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_trusted.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net trusted \$GOOD foo bar alice@trusted.com foo@bar.com"
echo t_trusted.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $GOOD foo bar alice@trusted.com foo@bar.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $GOOD foo bar alice@trusted.com foo@bar.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $GOOD foo bar alice@trusted.com foo@bar.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_trusted.at:30: grep -i ' trusted' stdout >/dev/null"
echo t_trusted.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep -i ' trusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep -i ' trusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_trusted.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net trusted \$GOOD foo bar foo@bar.com mallory@evil.com"
echo t_trusted.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $GOOD foo bar foo@bar.com mallory@evil.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $GOOD foo bar foo@bar.com mallory@evil.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $GOOD foo bar foo@bar.com mallory@evil.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_trusted.at:31: grep -i ' untrusted' stdout >/dev/null"
echo t_trusted.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep -i ' untrusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep -i ' untrusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_trusted.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net trusted \$GOOD foo bar mallory@evil.com foo@bar.com"
echo t_trusted.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $GOOD foo bar mallory@evil.com foo@bar.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $GOOD foo bar mallory@evil.com foo@bar.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $GOOD foo bar mallory@evil.com foo@bar.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_trusted.at:32: grep -i ' untrusted' stdout >/dev/null"
echo t_trusted.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep -i ' untrusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep -i ' untrusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_trusted.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net trusted \$BAD bad-cert bad-val foo@bar.com alice@trusted.com"
echo t_trusted.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $BAD bad-cert bad-val foo@bar.com alice@trusted.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $BAD bad-cert bad-val foo@bar.com alice@trusted.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $BAD bad-cert bad-val foo@bar.com alice@trusted.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_trusted.at:33: grep -i ' trusted' stdout >/dev/null"
echo t_trusted.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep -i ' trusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep -i ' trusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_trusted.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net trusted \$BAD bad-cert bad-val alice@trusted.com foo@bar.com"
echo t_trusted.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $BAD bad-cert bad-val alice@trusted.com foo@bar.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $BAD bad-cert bad-val alice@trusted.com foo@bar.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net trusted $BAD bad-cert bad-val alice@trusted.com foo@bar.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_trusted.at:34: grep -i ' trusted' stdout >/dev/null"
echo t_trusted.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep -i ' trusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep -i ' trusted' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_trusted.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  67 ) # 67. t_attr.at:1: attr set/attr get
    at_setup_line='t_attr.at:1'
    at_desc='attr set/attr get'
    $at_quiet $ECHO_N " 67: attr set/attr get                            $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "67. t_attr.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_attr.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_attr.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_attr.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_attr.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr.at:2: rm test_keys"
echo t_attr.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
foo bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_attr.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_attr.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_attr.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr set testfile test:unique_key unique_value"
echo t_attr.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set testfile test:unique_key unique_value" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set testfile test:unique_key unique_value ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set testfile test:unique_key unique_value ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr get testfile"
echo t_attr.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr.at:8: grep test:unique_key stdout >/dev/null"
echo t_attr.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep test:unique_key stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep test:unique_key stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr.at:9: grep unique_value stdout >/dev/null"
echo t_attr.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep unique_value stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep unique_value stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr get testfile test:unique_key"
echo t_attr.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile test:unique_key" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile test:unique_key ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile test:unique_key ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr.at:11: grep unique_value stdout >/dev/null"
echo t_attr.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep unique_value stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep unique_value stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_attr.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_attr.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV=`cat _MTN/revision`

      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  68 ) # 68. t_rcfile_required.at:1: --rcfile requires extant file
    at_setup_line='t_rcfile_required.at:1'
    at_desc='--rcfile requires extant file'
    $at_quiet $ECHO_N " 68: --rcfile requires extant file                $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "68. t_rcfile_required.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_rcfile_required.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_rcfile_required.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcfile_required.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rcfile_required.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_rcfile_required.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcfile_required.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rcfile_required.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_rcfile_required.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcfile_required.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rcfile_required.at:2: rm test_keys"
echo t_rcfile_required.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcfile_required.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# rcfiles may contain security settings.  So make it a hard error if
# the user typoes or somesuch.
$at_traceoff
echo "$at_srcdir/t_rcfile_required.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=no-such-file status"
echo t_rcfile_required.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=no-such-file status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=no-such-file status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=no-such-file status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_rcfile_required.at:6: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  69 ) # 69. t_persistent_server_revision.at:1: persistent netsync server - revs & certs
    at_setup_line='t_persistent_server_revision.at:1'
    at_desc='persistent netsync server - revs & certs'
    $at_quiet $ECHO_N " 69: persistent netsync server - revs & certs     $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "69. t_persistent_server_revision.at:1: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_persistent_server_revision.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_persistent_server_revision.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_persistent_server_revision.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:3: rm test_keys"
echo t_persistent_server_revision.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:4: cp test.db test2.db"
echo t_persistent_server_revision.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:4: cp -r keys/ keys2"
echo t_persistent_server_revision.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:4: cp test.db test3.db"
echo t_persistent_server_revision.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:4: cp -r keys/ keys3"
echo t_persistent_server_revision.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT



cat >testfile <<'_ATEOF'
blah balh
balh
_ATEOF

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add testfile"
echo t_persistent_server_revision.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --branch=testbranch --message foo"
echo t_persistent_server_revision.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --branch=testbranch --message foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --branch=testbranch --message foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --branch=testbranch --message foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REV1=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:13: rm -rf _MTN"
echo t_persistent_server_revision.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >otherfile <<'_ATEOF'
stuff stuff
nonsense
_ATEOF

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 setup --branch=testbranch ."
echo t_persistent_server_revision.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 add otherfile"
echo t_persistent_server_revision.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 add otherfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 add otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 add otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 commit --branch=testbranch --message foo"
echo t_persistent_server_revision.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 commit --branch=testbranch --message foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 commit --branch=testbranch --message foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 commit --branch=testbranch --message foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REV2=`cat _MTN/revision`



# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4



$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua sync localhost:\$_PORT testbranch"
echo t_persistent_server_revision.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua sync localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua sync localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua sync localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua sync localhost:\$_PORT testbranch"
echo t_persistent_server_revision.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua sync localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua sync localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua sync localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$REV1"
echo t_persistent_server_revision.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $REV1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $REV1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $REV1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:28: mv stdout expout"
echo t_persistent_server_revision.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision \$REV1"
echo t_persistent_server_revision.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision $REV1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision $REV1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision $REV1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs \$REV1"
echo t_persistent_server_revision.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $REV1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $REV1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $REV1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:29: mv stdout expout"
echo t_persistent_server_revision.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls certs \$REV1"
echo t_persistent_server_revision.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls certs $REV1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls certs $REV1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls certs $REV1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Also exercise files and manifest
$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 checkout --revision=\$REV1 somedir"
echo t_persistent_server_revision.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 checkout --revision=$REV1 somedir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 checkout --revision=$REV1 somedir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 checkout --revision=$REV1 somedir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua sync localhost:\$_PORT testbranch"
echo t_persistent_server_revision.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua sync localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua sync localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua sync localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$REV2"
echo t_persistent_server_revision.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $REV2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $REV2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $REV2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:34: mv stdout expout"
echo t_persistent_server_revision.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision \$REV2"
echo t_persistent_server_revision.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision $REV2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision $REV2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision $REV2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs \$REV2"
echo t_persistent_server_revision.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $REV2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $REV2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $REV2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:35: mv stdout expout"
echo t_persistent_server_revision.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls certs \$REV2"
echo t_persistent_server_revision.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls certs $REV2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls certs $REV2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls certs $REV2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Also exercise files and manifest
$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=\$REV2 otherdir"
echo t_persistent_server_revision.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$REV2 otherdir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$REV2 otherdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$REV2 otherdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# And now make sure it works for children, where there are diffs and all

cat >otherfile <<'_ATEOF'
foo bar, baz, also quux (on off days)
_ATEOF

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 commit --branch=testbranch --message foo"
echo t_persistent_server_revision.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 commit --branch=testbranch --message foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 commit --branch=testbranch --message foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 commit --branch=testbranch --message foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REV3=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:46: rm -rf _MTN"
echo t_persistent_server_revision.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:47: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=\$REV1 ."
echo t_persistent_server_revision.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$REV1 ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$REV1 . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$REV1 . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >testfile <<'_ATEOF'
ptang
_ATEOF

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:50: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --branch=testbranch --message foo"
echo t_persistent_server_revision.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --branch=testbranch --message foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --branch=testbranch --message foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --branch=testbranch --message foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REV4=`cat _MTN/revision`

# And add a cert on an old revision
$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:54: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 comment \$REV1 'sorry dave'"
echo t_persistent_server_revision.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 comment $REV1 'sorry dave'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 comment $REV1 'sorry dave' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 comment $REV1 'sorry dave' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:56: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua sync localhost:\$_PORT testbranch"
echo t_persistent_server_revision.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua sync localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua sync localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua sync localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:57: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua sync localhost:\$_PORT testbranch"
echo t_persistent_server_revision.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua sync localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua sync localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua sync localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:59: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$REV3"
echo t_persistent_server_revision.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $REV3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $REV3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $REV3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:59: mv stdout expout"
echo t_persistent_server_revision.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:59: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision \$REV3"
echo t_persistent_server_revision.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision $REV3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision $REV3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision $REV3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:60: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs \$REV3"
echo t_persistent_server_revision.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $REV3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $REV3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $REV3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:60: mv stdout expout"
echo t_persistent_server_revision.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:60: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls certs \$REV3"
echo t_persistent_server_revision.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls certs $REV3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls certs $REV3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls certs $REV3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Also exercise files and manifest
$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:62: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=\$REV3 somedir2"
echo t_persistent_server_revision.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$REV3 somedir2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$REV3 somedir2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$REV3 somedir2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# And check for that extra cert

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:65: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs \$REV1"
echo t_persistent_server_revision.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $REV1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $REV1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $REV1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:65: mv stdout expout"
echo t_persistent_server_revision.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:65: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls certs \$REV1"
echo t_persistent_server_revision.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls certs $REV1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls certs $REV1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls certs $REV1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:67: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua sync localhost:\$_PORT testbranch"
echo t_persistent_server_revision.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua sync localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua sync localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua sync localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:67: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:69: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$REV4"
echo t_persistent_server_revision.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $REV4" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $REV4 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $REV4 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:69: mv stdout expout"
echo t_persistent_server_revision.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:69: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision \$REV4"
echo t_persistent_server_revision.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision $REV4" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision $REV4 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision $REV4 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:70: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs \$REV4"
echo t_persistent_server_revision.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $REV4" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $REV4 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $REV4 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:70: mv stdout expout"
echo t_persistent_server_revision.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:70: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls certs \$REV4"
echo t_persistent_server_revision.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls certs $REV4" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls certs $REV4 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls certs $REV4 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Also exercise files and manifest
$at_traceoff
echo "$at_srcdir/t_persistent_server_revision.at:72: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 checkout --revision=\$REV4 somedir3"
echo t_persistent_server_revision.at:72 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 checkout --revision=$REV4 somedir3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 checkout --revision=$REV4 somedir3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 checkout --revision=$REV4 somedir3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_revision.at:72: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  70 ) # 70. t_persistent_server_keys.at:1: persistent netsync server - keys
    at_setup_line='t_persistent_server_keys.at:1'
    at_desc='persistent netsync server - keys'
    $at_quiet $ECHO_N " 70: persistent netsync server - keys             $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "70. t_persistent_server_keys.at:1: testing ..."
      $at_traceon





# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_persistent_server_keys.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_persistent_server_keys.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_keys.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_persistent_server_keys.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_keys.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_persistent_server_keys.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_keys.at:4: rm test_keys"
echo t_persistent_server_keys.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_persistent_server_keys.at:5: cp test.db test2.db"
echo t_persistent_server_keys.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_keys.at:5: cp -r keys/ keys2"
echo t_persistent_server_keys.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_keys.at:5: cp test.db test3.db"
echo t_persistent_server_keys.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_keys.at:5: cp -r keys/ keys3"
echo t_persistent_server_keys.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT



cat >testfile <<'_ATEOF'
blah balh
balh
_ATEOF

$at_traceoff
echo "$at_srcdir/t_persistent_server_keys.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add testfile"
echo t_persistent_server_keys.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_keys.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --branch=testbranch --message foo"
echo t_persistent_server_keys.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --branch=testbranch --message foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --branch=testbranch --message foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --branch=testbranch --message foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_persistent_server_keys.at:13: (echo foo@foo ; echo foo@foo) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 genkey foo@foo"
echo t_persistent_server_keys.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo foo@foo ; echo foo@foo) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 genkey foo@foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo foo@foo ; echo foo@foo) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 genkey foo@foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo foo@foo ; echo foo@foo) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 genkey foo@foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4



$at_traceoff
echo "$at_srcdir/t_persistent_server_keys.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:\$_PORT testbranch"
echo t_persistent_server_keys.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_persistent_server_keys.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_persistent_server_keys.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_persistent_server_keys.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls keys"
echo t_persistent_server_keys.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_keys.at:21: grep foo@foo stdout >/dev/null"
echo t_persistent_server_keys.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foo@foo stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foo@foo stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_persistent_server_keys.at:21: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >testfile <<'_ATEOF'
stuffty stuffty
_ATEOF

$at_traceoff
echo "$at_srcdir/t_persistent_server_keys.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --branch=testbranch --message foo --key=foo@foo"
echo t_persistent_server_keys.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --branch=testbranch --message foo --key=foo@foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --branch=testbranch --message foo --key=foo@foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --branch=testbranch --message foo --key=foo@foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_persistent_server_keys.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:\$_PORT testbranch"
echo t_persistent_server_keys.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_persistent_server_keys.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_persistent_server_keys.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



$at_traceoff
echo "$at_srcdir/t_persistent_server_keys.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls keys"
echo t_persistent_server_keys.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_keys.at:33: grep foo@foo stdout >/dev/null"
echo t_persistent_server_keys.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foo@foo stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foo@foo stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  71 ) # 71. t_fmerge_normalize.at:1: first extent normalization pass
    at_setup_line='t_fmerge_normalize.at:1'
    at_desc='first extent normalization pass'
    $at_quiet $ECHO_N " 71: first extent normalization pass              $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "71. t_fmerge_normalize.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_fmerge_normalize.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_fmerge_normalize.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge_normalize.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fmerge_normalize.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_fmerge_normalize.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge_normalize.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fmerge_normalize.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_fmerge_normalize.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge_normalize.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fmerge_normalize.at:2: rm test_keys"
echo t_fmerge_normalize.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge_normalize.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >left <<'_ATEOF'
A
B
B
_ATEOF


cat >right <<'_ATEOF'
A
B
A
B
_ATEOF


$at_traceoff
echo "$at_srcdir/t_fmerge_normalize.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net fload <left"
echo t_fmerge_normalize.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <left" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <left ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <left ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge_normalize.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fmerge_normalize.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net fload <right"
echo t_fmerge_normalize.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <right" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <right ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <right ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge_normalize.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

LEFT_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify left`
RIGHT_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify right`
$at_traceoff
echo "$at_srcdir/t_fmerge_normalize.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net fmerge \$LEFT_SHA \$LEFT_SHA \$RIGHT_SHA"
echo t_fmerge_normalize.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fmerge $LEFT_SHA $LEFT_SHA $RIGHT_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fmerge $LEFT_SHA $LEFT_SHA $RIGHT_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fmerge $LEFT_SHA $LEFT_SHA $RIGHT_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge_normalize.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fmerge_normalize.at:20:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_fmerge_normalize.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge_normalize.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_fmerge_normalize.at:21: cmp right stdout"
echo t_fmerge_normalize.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp right stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp right stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_fmerge_normalize.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  72 ) # 72. t_delete_dir.at:1: (imp) deleting directories
    at_setup_line='t_delete_dir.at:1'
    at_desc='(imp) deleting directories'
    $at_quiet $ECHO_N " 72: (imp) deleting directories                   $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "72. t_delete_dir.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_delete_dir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_delete_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_delete_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_delete_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:2: rm test_keys"
echo t_delete_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_delete_dir.at:4: mkdir groundzero"
echo t_delete_dir.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir groundzero ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir groundzero ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >groundzero/preexisting <<'_ATEOF'
1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add groundzero/preexisting"
echo t_delete_dir.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add groundzero/preexisting" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add groundzero/preexisting ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add groundzero/preexisting ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >groundzero/rename-out <<'_ATEOF'
2
_ATEOF

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add groundzero/rename-out"
echo t_delete_dir.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add groundzero/rename-out" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add groundzero/rename-out ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add groundzero/rename-out ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >rename-in <<'_ATEOF'
3
_ATEOF

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add rename-in"
echo t_delete_dir.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add rename-in" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add rename-in ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add rename-in ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >groundzero/double-kill <<'_ATEOF'
4
_ATEOF

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add groundzero/double-kill"
echo t_delete_dir.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add groundzero/double-kill" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add groundzero/double-kill ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add groundzero/double-kill ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >bystander1 <<'_ATEOF'
5
_ATEOF

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add bystander1"
echo t_delete_dir.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bystander1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bystander1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bystander1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_delete_dir.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_delete_dir.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


BASE_R=`cat _MTN/revision`


cat >bystander2 <<'_ATEOF'
6
_ATEOF

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add bystander2"
echo t_delete_dir.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bystander2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bystander2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bystander2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >groundzero/new-file <<'_ATEOF'
7
_ATEOF

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add groundzero/new-file"
echo t_delete_dir.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add groundzero/new-file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add groundzero/new-file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add groundzero/new-file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_delete_dir.at:22: mv rename-in groundzero/rename-in"
echo t_delete_dir.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv rename-in groundzero/rename-in ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv rename-in groundzero/rename-in ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename rename-in groundzero/rename-in"
echo t_delete_dir.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename rename-in groundzero/rename-in" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename rename-in groundzero/rename-in ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename rename-in groundzero/rename-in ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:24: mv  groundzero/rename-out rename-out"
echo t_delete_dir.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  groundzero/rename-out rename-out ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  groundzero/rename-out rename-out ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename groundzero/rename-out rename-out"
echo t_delete_dir.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename groundzero/rename-out rename-out" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename groundzero/rename-out rename-out ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename groundzero/rename-out rename-out ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop -e groundzero/double-kill"
echo t_delete_dir.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop -e groundzero/double-kill" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop -e groundzero/double-kill ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop -e groundzero/double-kill ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_delete_dir.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_delete_dir.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


OTHER_OPS_R=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_delete_dir.at:30: rm -rf _MTN.old"
echo t_delete_dir.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:30: mv  _MTN _MTN.old"
echo t_delete_dir.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE_R ."
echo t_delete_dir.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_delete_dir.at:30: test \$PROBE_R_SHA = \$BASE_R"
echo t_delete_dir.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# update doesn't remove files...
$at_traceoff
echo "$at_srcdir/t_delete_dir.at:33: rm groundzero/rename-in"
echo t_delete_dir.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm groundzero/rename-in ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm groundzero/rename-in ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:34: rm groundzero/new-file"
echo t_delete_dir.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm groundzero/new-file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm groundzero/new-file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_delete_dir.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop -e groundzero"
echo t_delete_dir.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop -e groundzero" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop -e groundzero ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop -e groundzero ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_delete_dir.at:36: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop --recursive -e groundzero"
echo t_delete_dir.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop --recursive -e groundzero" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop --recursive -e groundzero ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop --recursive -e groundzero ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_delete_dir.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_delete_dir.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


DIR_DELETE_R=`cat _MTN/revision`


# orphaned node conflicts on rename-in and new-file
$at_traceoff
echo "$at_srcdir/t_delete_dir.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge"
echo t_delete_dir.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_delete_dir.at:43: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_delete_dir.at:45: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update -r \$OTHER_OPS_R"
echo t_delete_dir.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -r $OTHER_OPS_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -r $OTHER_OPS_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -r $OTHER_OPS_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:46: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop groundzero/new-file"
echo t_delete_dir.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop groundzero/new-file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop groundzero/new-file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop groundzero/new-file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:47: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop groundzero/rename-in"
echo t_delete_dir.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop groundzero/rename-in" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop groundzero/rename-in ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop groundzero/rename-in ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_delete_dir.at:48: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_delete_dir.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_delete_dir.at:49: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge"
echo t_delete_dir.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_delete_dir.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE_R clean"
echo t_delete_dir.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R clean" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R clean ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R clean ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:53: cd clean && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch update"
echo t_delete_dir.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd clean && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd clean && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd clean && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_delete_dir.at:55: test -f clean/rename-out"
echo t_delete_dir.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f clean/rename-out ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f clean/rename-out ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_delete_dir.at:55: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:56: test -f clean/bystander1"
echo t_delete_dir.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f clean/bystander1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f clean/bystander1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:57: test -f clean/bystander2"
echo t_delete_dir.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f clean/bystander2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f clean/bystander2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:58: test -f clean/groundzero/rename-in"
echo t_delete_dir.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f clean/groundzero/rename-in ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f clean/groundzero/rename-in ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_delete_dir.at:58: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:59: test -f clean/groundzero/preexisting"
echo t_delete_dir.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f clean/groundzero/preexisting ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f clean/groundzero/preexisting ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_delete_dir.at:59: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:60: test -f clean/groundzero/double-kill"
echo t_delete_dir.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f clean/groundzero/double-kill ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f clean/groundzero/double-kill ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_delete_dir.at:60: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:61: test -f clean/groundzero/new-file"
echo t_delete_dir.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f clean/groundzero/new-file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f clean/groundzero/new-file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_delete_dir.at:61: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# Just in case:
$at_traceoff
echo "$at_srcdir/t_delete_dir.at:63: test -f clean/rename-in"
echo t_delete_dir.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f clean/rename-in ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f clean/rename-in ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_delete_dir.at:63: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir.at:64: test -f clean/groundzero/rename-out"
echo t_delete_dir.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f clean/groundzero/rename-out ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f clean/groundzero/rename-out ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_delete_dir.at:64: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  73 ) # 73. t_migrate_schema.at:1: schema migration
    at_setup_line='t_migrate_schema.at:1'
    at_desc='schema migration'
    $at_quiet $ECHO_N " 73: schema migration                             $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "73. t_migrate_schema.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_migrate_schema.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_migrate_schema.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_migrate_schema.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:2: rm test_keys"
echo t_migrate_schema.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:3: echo \$UNB64_COMMAND"
echo t_migrate_schema.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test -n "`command -v gunzip`" 2>/dev/null; then
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  UNGZ_COMMAND="gunzip -c"
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:3: echo \$UNGZ_COMMAND"
echo t_migrate_schema.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNGZ_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# This test ensures that 'monotone migrate' can take any old-format
# database and bring it forward to the current time; it is basically a
# compatibility test.  We actually don't test against old-format
# databases directly, because some old-format databases can't be read
# at all by a modern monotone -- you have to do a dump/load first.  So
# instead we store pre-dumped old-format databases.  So technically
# we're not checking that 'db migrate' can handle things, we're just
# checking that 'dump | load; db migrate' can handle things.  But that
# should be good enough.

# This means that every time the database schema is changed, you need
# to add a new piece to this test, for the new schema.  The way you do
# this is to run this test with the -d option, like so:
#   $ ./testsuite AUTOTEST_PATH=. -d 73
# this will cause autotest to leave behind the temporary files the
# test generates.  You want 'testsuite.dir/073/latest.db.dump'.  Gzip
# it, base64 it, and stick it in this file with the id of its schema.
# (E.g., gzip -c latest.db.dump | mimencode > foo, then copy the
# contents of foo into this file.  Make sure when you do that that you
# put a newline between the end of the base64'd text and the closing
# ], or autotest will get very weirdly confused.)

######################################################################
## Do not touch this code; you'll have to regenerate all the test
## databases if you do!
######################################################################

# We don't want the standard db, we want full control ourselves
$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:33: rm -f test.db"
echo t_migrate_schema.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f test.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f test.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:34: rm -r keys/"
echo t_migrate_schema.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -r keys/ ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -r keys/ ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_migrate_schema.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Put some random keys in, with and without corresponding private keys
cat >migrate_keys <<'_ATEOF'
[pubkey njs@pobox.com]
MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQC54vVjrrqYoTfPTgWm6JpuL+kOERcN2OSc
BsWq6cb4Wm3nlymwVqJJywq6cbfygUYwmqyiRLPxRosfLGu228AhEzaM4JbAH1pgg7CwvvVd
fHRXNAXEMgO89gBjkkecxLi4U/T67DrLjkRPAilCgWLZNv8YeOG9XAPegWyr7hNA9wIBEQ==
[end]
[keypair tester@test.net]
MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQCfN/cAMabgb6T7m8ksGnpQ7LO6hOdnc/7V
yivrRGtmpwSItljht1bmgLQF37KiSPoMEDUb1stfKxaMsYiy8iTyoQ+M2EVFP37n2rtnNZ0H
oVcQd2sRsCerQFh9nslRPymlkQXUlOiNFN6RlFNcdjkucqNe+YorFX21EYw7XuT5XwIBEQ==#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIefgT/1vcuRoCAggAAgEYMBQG
CCqGSIb3DQMHBAjBYTCc+TuEIQSCAoDbSxK5UeaBREeMlP8ZBFihsxyapmrUs/ZYbieJIq+j
ZQJ+OX15hzpbk2/jqfUgYaV7uFBf8JVglWLw6SfQe3KrvFEH1K3FsIIVf2SzEvERiWUd9YuT
P6pxTwT0zUbyiKQJl+43BSYb8UWRBOsuAAJXUJ1KPRSd9BYSvysmc1CSJd+6TKsxCSH+3bFx
gH07FOzE/Q20bv8duk8AcM+9X/0Ob8hfW8Nt5/QSrc/fdutMKPrJOIaQRvOa9wulXbbmn28E
uQd8+21t22QvMPif/39VwvbDpX6a77Rg1ZOL0o2pFvpObmMnwTMAKq6ayJU+qhNpXh5T5HOw
8jUYt5GU2YCaxMczFvJousYi+5lN+rldwIxMyx9Z3pFFnbxYI5n9VuJUnqz0ZlCsf785/NXy
gZaYt7HCKgnCw4jUEK9aAqHIzsJCNOvM60dW92ZyhU6iycs9uzlW87hWC3mwEG518JShdAyX
hk0LhprJd4OEj/LJarLaTveePkFWJm4XyP5R+ByJgWOVqPdn7ILl2rRRlmpIsyTzBisOf/Aw
DF3oO2zlOPSCtPgVblQnUujuhrWy4/uldwSQC+78klzmcNG4z6UTDkThUiAKMoT27z9AOR3a
qv7e+C2ExR7ykk9lRz4836i4wMJddw5d1+AARpxGjidw5FjaTRss6NLB0k9Wo7fChFIlEjYc
N+BGMiMbkGiXLFtATQKEDqx/kDAlecN0FpljC5g6x6FYHxouaulEY0L7RkYSfVUvKQU2r6Lu
vTlEEZeNPdRtYwOz4ogqysHgZzDmbJ/AOt23u5R+O+vipNaYpv0S/vlGMJPtj2TcpgIn2ooZ
KLqSDA8igs89M3oRnyvz
[end]
_ATEOF

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:63: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read < migrate_keys"
echo t_migrate_schema.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read < migrate_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read < migrate_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read < migrate_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile1 <<'_ATEOF'
f1v1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:66: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile1"
echo t_migrate_schema.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:66: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile2 <<'_ATEOF'
f2v1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:68: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile2"
echo t_migrate_schema.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:69: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr set testfile1 testfile1_key initial_value"
echo t_migrate_schema.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set testfile1 testfile1_key initial_value" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set testfile1 testfile1_key initial_value ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set testfile1 testfile1_key initial_value ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:70: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr set . dir_key initial_value"
echo t_migrate_schema.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set . dir_key initial_value" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set . dir_key initial_value ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set . dir_key initial_value ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:71: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch1 --date=\"1999-01-01T12:00:00\" commit --message blah-blah"
echo t_migrate_schema.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch1 --date=\"1999-01-01T12:00:00\" commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch1 --date="1999-01-01T12:00:00" commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch1 --date="1999-01-01T12:00:00" commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:74: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net cert \$REV somekey somevalue"
echo t_migrate_schema.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $REV somekey somevalue" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $REV somekey somevalue ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $REV somekey somevalue ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile1 <<'_ATEOF'
f1v2
_ATEOF



cat >testfile3 <<'_ATEOF'
f3v1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:79: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile3"
echo t_migrate_schema.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:80: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr drop testfile1 testfile1_key"
echo t_migrate_schema.at:80 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr drop testfile1 testfile1_key" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr drop testfile1 testfile1_key ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr drop testfile1 testfile1_key ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:80: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:81: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr set . dir_key new_value"
echo t_migrate_schema.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set . dir_key new_value" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set . dir_key new_value ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set . dir_key new_value ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:81: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:82: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch2 --date=\"2000-01-01T12:00:00\" commit --message blah-blah"
echo t_migrate_schema.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch2 --date=\"2000-01-01T12:00:00\" commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch2 --date="2000-01-01T12:00:00" commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch2 --date="2000-01-01T12:00:00" commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:84: rm -rf _MTN.old"
echo t_migrate_schema.at:84 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:84: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:84: mv  _MTN _MTN.old"
echo t_migrate_schema.at:84 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:84: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:84: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV ."
echo t_migrate_schema.at:84 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:84: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:84: test \$PROBE_R_SHA = \$REV"
echo t_migrate_schema.at:84 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $REV" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $REV ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $REV ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:84: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile2 <<'_ATEOF'
f2v2
_ATEOF



cat >testfile4 <<'_ATEOF'
f4v1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:89: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile4"
echo t_migrate_schema.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile4" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile4 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile4 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:89: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:90: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch1 --date=\"2001-01-01T12:00:00\" commit --message blah-blah"
echo t_migrate_schema.at:90 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch1 --date=\"2001-01-01T12:00:00\" commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch1 --date="2001-01-01T12:00:00" commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch1 --date="2001-01-01T12:00:00" commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:90: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:92: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net propagate --date=\"2002-01-01T12:00:00\" testbranch2 testbranch1"
echo t_migrate_schema.at:92 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate --date=\"2002-01-01T12:00:00\" testbranch2 testbranch1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate --date="2002-01-01T12:00:00" testbranch2 testbranch1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate --date="2002-01-01T12:00:00" testbranch2 testbranch1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:92: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:93: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_migrate_schema.at:93 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:93: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:95: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop testfile1"
echo t_migrate_schema.at:95 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:95: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >testfile4 <<'_ATEOF'
f4v2
_ATEOF



$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:98: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch3 --date=\"2003-01-01T12:00:00\" commit --message blah-blah"
echo t_migrate_schema.at:98 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch3 --date=\"2003-01-01T12:00:00\" commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch3 --date="2003-01-01T12:00:00" commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch3 --date="2003-01-01T12:00:00" commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:98: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:100: cp test.db latest.db"
echo t_migrate_schema.at:100 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db latest.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db latest.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:100: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:101: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db db dump"
echo t_migrate_schema.at:101 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db db dump" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db db dump ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db db dump ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:101: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:102: cp stdout latest.db.dump"
echo t_migrate_schema.at:102 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout latest.db.dump ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout latest.db.dump ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:102: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


######################################################################
## End untouchable code
######################################################################

# Usage: CHECK_MIGRATE_FROM(<schema id>, <encoded dumped db with this schema>)



cat >1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz.b64 <<'_ATEOF'
H4sICDXywUMAA2xhdGVzdC5kYi5kdW1wAO17WY/jSJLmc+lXJPqlu6GaFu9jBgMMxUu8RVIi
RS4WBR7O+5B4U79+GZmVWXlE9kRU72BfVoAiRInuZv6Z+WdmTvcjL0r6B/7Gqldbcvj/2LEW
z1z4DxfmqPIfwi5oouw3cG+jrN/98rfdL1nQZx+advjQjFX1YWzyxwh+/fD59W//9uHjDW3y
oQN1kDd5k35IclDF/Yce3IMuGED8IVw//OXf/7L75VPvP+tt66to86b/MOdDtnU35X3eNr9F
oBv6f0xBNYLdLx8V+6OD715bD5uEuK0/ZGD5N9BEbbxJz+PdL3//bpxx+NsUdP3uc8u/ffm0
td6G8UXEr1967qP2Dl4GGtzvVR4Fw6bcx8sPW09fmjdBDb5v/LH5dtOHEqxfbvw4oB/u/P3G
T6P9fOsnmP72SbNfP4r4+5cfvx9ZklfgtxhUQ/Biv192v+Txa4MZunaz1GfbvTT6ELXNAJph
axYG/XeqfWubl9v7f2wdt93X8v7xgvTHj980frFKnCfJh6F9kbGJHqPhQzR23SbtQ9Jt5noR
uPvl93Hm8a8fv/j7R7NJus1blw+SfjG+lvXBYdQrb//trwEdBSQEEzQZxAGACCKkiRgigyAM
USiBYgLBcIJGor/++tcYoxE6QTAiRtAAh0EYECRNExQOECqhgxAiyRCj0GC79YT1EvP763DQ
r5rhKNo6P3FDYhmjk9qqVF5+2/31DSqiREIjFAbFUZIECAIRWIjEMQ0gCqNiGEPxTU8ywl9U
TOgYh6kAAzAKUVEIKBxCwzimEpykQpiIAYZBJEbDP1Wx/aQi91iZDHu7ihC96RJhBAoHCBRE
MEGgGJbgVICgCQAQFhARgREBtsmFQQQIaIONTkIaI5AYIDgJEzAMkQQdBjEcUBCgYuqnKpaf
VJTvJ/PO/6HiD178iX82L7t3eR1068v0+fUt7hsHX3ngZ4+P2vregb4Hm3d9ZobPTT5N45de
XnW5P2D6sx4E9U+VO+dMyuLmQgpH8+Xb//zPV03zh7QwBEGcUADFMYSKaICjKApIOAoSBKdw
GKMpFCJASLwmrTiXTMotCHfn3yjtz7reJk0pXsZ2vJHKdHujtD/rRS/SLh+RVHuKW7+R9o0H
1UGTJ6AfPsWPfxrK3hfEfuTT18LXZ/GfafKLOl9R5eux4mNP7T3YlHvx8xddoqztQfOiwdiD
bvfL67Hj64Zh1Ya7X7YJcw/y7rUo85Wq9zHc4tlv282f1OrztAmGsftewtbKspmDfWLgD3/c
s4H2l//1MpL/yuN/3xT733/5QuQv3/764YXOPyr864ff9fn1j+Z//zE0f4fUZxJ4dbTf8UCw
mXXIwDa/N9w2Z9viePClv9fC2g9YgO0P+MNa/8R4P8a5fznUvQrDz1jwzwDwIzG+lRv/6ON7
PRuwDL91bT+A7rdma/lbM9bhi5NuWr9cf633137aVOv255Oq64uiQ5b3H4YgrDZHAdNLD98R
yE8kfaEU/AcO+Mqz/+8SwI+2+NTLyxjzeBtSvrXufpi3288/M8E2s35X98OLvLr/YfhfDeaP
eAQoLMRJPMYBRiI4htLoFpMwOo7A9sbikKZAjCHxxqJN0f/XvQ3b5R+btbdrTRJjjYFE1n6I
thSinMkfGfPKMJioMhx7zGblmJosjk1O0XUPr70k50vq1oR8H9V9afBWpCOGHe2OvfsgohBz
a3SzaT07D1le55evkjW9enP9WHNLPS9W2yeqOCIIxWT8M9AwOWRO8D1NSXaeJifeJSfrpjM3
XksNik6PRVmCaFFz7Hq4ECTXqUVpnZm8YlNX9fWJ8oAh0jfmDFJ37chMZ+hZOvLmf/7n94Hn
NeAiOqYgBIcAjWEkRG3ZIpkAmoAiGEaJEIfJJEa3YI5sQA3gxeP+6+XfPxowvB26RD9EjBaE
aUhcyJoqe7G5m6RqEJkRN9GBdHZrPnWWONT32ZaGqsgGOKxT1RRQUsntc6vx3DWE+yFRlkDr
vXyl8svamnsN4R3hjJIN0g2N7kOnXetEZoz0Vs+CzhQyuukr67zWVWnerpWR64JOWJWgR3FR
jtFDB3uv7YQbAvPeTN7GC377CrpvZtCXKmwr3DYAuvXjPNo89IXPfggPr5Rvn8gyyvLqtTLk
pw1+58dPgn798LH9j/XAD9p9se9mpTDBCAoQEbLlFhGNQGiQEBgGBzEZI1BIBDEVJBBGB9+7
y887fXOPv/41omASQUIIQQkUQl8SRBSDAUwkEESiMUHgEA0lIYn+jwjH0K3KQHECJjAcibfy
CAMgSlA63q4Dgo4DCkBbZge9Xfibe9yEBzBCYgmKUzCy/bQNHCcjApARGcUElGAYnUDRVqq9
XfibsfyfEP7mHn/9K7ndsymJRhFKhwSyKbkpt32CX1hmUzcmUByhCPrnk+z/Tar67cz7/0np
KwsP31roi3NsdT1K4SSylXwxlpBomNA4EqEEQcRBBCB6uwRhjEPvYaPt1o+rZC/rFaLzjEV5
9Vy8CDh+K3Jei0ZskZqPM9wdYM4pU5sNnmShTGl8lmFXRvmQpYoVMNby6JEZHlKNzBlR77fS
C/aofXd0/JE9RqJa7eyDCwuw7zBVD5wLotdHx8hGyKhqN/MRB5bPZbVKpVCiZScXtryc4XCg
OEI6sc6yxE22hasuoYwdG2E+lBpP7tnIyOPaCImG+v6VZQrpx7LwZ9AG0UY1GIWhG++EGBYF
SJxECEETMUolSEhvM42GIfp90G7ZF3gJ4JcSN2xo1l7ejrloRTtr3Pb+WEm+BrJ/PCXNeBBz
wqYhS8fEuzSafVLZKiKfr6gp2aMjgWJx2UXBMYd45sDwCf8kUSLPJi77kN2BQ9X9bhb4bMt5
0Na2e78zLY2q4/vD1/D+whtKEeBDTCLxuZTsO7T2Mo8paj1yzkRRgc12UX/jlpX3r9SuuPJi
kOd7eWYSIT5jxqVLVKQ/wfLbQY5JMiQoMqYiAqYhkgIURCIwgVMBEdNbApkAEqAIwN8HcjAO
Wdt98V9nNU9WFaHmGNYO9Dq8J78P0HU9dqaY78UKOxQqcZezrngSIEEZu0sJTy8M3cXXO0gL
hJMi/27qWKGKsqg8L2fzKu2tY7qzhQYVkfjCM/DlMFaUfSlHKTrUD79WJg1oZ3t4oOBZ2IrH
ripYcTO8TDV0Ku+S7aHNpe5vYIj6aFdnR268MrRY+Ke0oFmJd4zOS0rFjN4MLxLHARzBKLal
lFvEQJItPJBwhMBQgIQxFFEUnqAwGr0P3igLmhRUbbp99uolC1g4D0WhfR1ZXZFihW/TNUY5
ZS7k5FpCx/aRpFbCUwA/dVaQqb1mJ4eCuHHUzYSgh+PSWd01BzY4XuLj6uO+P+4up/1xVaMb
x5ycTLqcvMBi1OWyoJhb7cX7+Rin4y2V0CxdcWcvSLSswzUSHSuKbkpHJEQXakmqEXdCCy8k
Ot1r7xHg7tmd2Y4xZrkmffPNyEY4hCAbqOHmnzFC0RsnADohYBRC4AiloIR6WYyD4fch27c1
2KLBC8YIPfg3PwtPTvU6riKTTEQ7tSoIH6ObPTaa8+sTe2+escomDThhtVsnUlDE+ZQdx312
Fhxizff7xZ4oNOrAnRsc2QM7IYYtCYfOnt8MVwHrni4qG0YlVzOTbWHpuUB9wN9Pcm57++dR
1W+cG/aC1XCzOzNsjF96e47PjrNjBMwfztM1YVOkFbFH3qh7ub3qkfsO1kWoAKExBN+qt5fl
8+1iy6+iMIC2gjLAqQja2IAMofdkuD8NaNJPuLaiLLUBlzqc5C64VvPz8dBz7F60Gic5WGdW
FmJnhhTWggULxWpMVqATJtYVKFF6AdAqJ+jZ4mTtFDzWtKbOeDEq5ms9RMQT25+UcDLwYxGe
WPIEtD4iwb5R7k8ai+rQcS5QIuOHiX08JTSYGyVHi8uOvlzoCaWwBTcubjaWtUOypGPPXdO/
GVoSiiB4c9YNS0CTCQ5IiIijCCEBBUIU2TwzgeiISN4H7eeAVjCzxr4noKkkCSOEZN14LvS3
ynPCBUFvLwLyXPyYvbhaCHX0DRG4w+F4w8fzOTFVi4TiEqaVZ+mfT5H71Fcr3uVzZHtyzW0B
kAyry6BO3SQShFWokW+d5Lg7qsRIZmDNtIe6JytXfiAkGgjTdN7finCUH7ga3tZuV5hgJOgD
B+qMVF25ap7JDCpMuabtm0HeQAXwln9vacMWu1AkJgBAoBjByS1Pp6mNcYktvhHh+0D+EwEt
e2g9QSPjagRbwoVOEgkb3fUAeVCwn2vh2Eg9XianQy4/TuQ9iyyv3oiUE4TGZ9VAGY/lMyjw
edwRyVDy51n3hLnKnsqzFRP4VupigUOTOLaIb5FlzxhEOphqdqUE+3jNIjiviaE+TgLnmgGU
0TKd7kKszhN3GMB8SG0qxO0JvT8wYQHz2+kBx2McJTfkYhQQcUht5cxGueQLWWAkEQRkmIQb
18bvg/d9AU27d4PtNtXgw/vBUqTZKEfK1KD9KjPwgiDXXBi5tBHQ3BkttAJnW3fz6mmE2lMc
PUudQhlPbh69C6tG4c4+oOSKNZ00qMfGY4t7W2IjZfORHUBBKE7s2U6k4kZdPcw7evtML6Bn
bR6TzpkMw5ptx9rZV7NuH2uVSdeU6+B98JTImTJS/qa9GdmQQiAyBBgBYpjEEQjHttKRprZU
IQxCNCSiFzKGPjruO2rxd1YSgfGA+SikRT8Jo+vJXK0oVIM9A/gei5OGua5nCKKA5JUDMtz2
zSlt+XPuUSVFRveWUsau4PxqIHfb7G9rSOdP1FQmdYWTbhiBwlseB/Jii+SjknITGpW6NPR9
fyE0iyr38MpGdalgALoXCTsohwub7ZiIbFc4FyA3DRObiGsTfZ7v9aMT3+60EQJohIgxFIoD
mobQiIYpAGA8RMKtpAA0DQBOYQT6Pmi/Jt53VRKsIlhES804mJ3YQEhzvvSICWlT49uuO7hd
IxsHQRc7ALGXuzMzLRQVsJ8wA9aank7vQ8/IBXna9e3GZtl5y+Dx7JCa1bHwsMy5KGl/S9w9
62VyZByWPGKo2B5Pq2hqD/cZQ7NSGpYV9L1ACZ5JBvpupiUkcHGsdU8RXnqnqin1RoiahZ3f
TrxBgNJJBBNoCG3JWBSDGEdIKCGgMKLxjZXJBAPwx8ThHSD/CeI1+lRla5G80luM0jAzzWdd
OB3pIZDrFhYgKmT1m0FOVz27yGsKLCJciaJaJP/pq7EzV5yPmJXu7bbIU41SMjyEu1dQ8Ayl
CwNFepognp3cVe56Jbyqr6diELMrN1I1wt8wouUyl92XDjxymVmMvunumpwLbMhBB6YjYRzm
8uMVY/OJa9m30wMd0xiJbAACmIQhFH55Jp8kFJJgcLzRBaBgBCMxBLwP3vcRL+vHYajepoi/
xOBJzAMtP+FqL93wkFqMiI9SXTcwKePxh0ojhQeNssfBtHchy27CZptfH2K3v2q7ySZhtelh
hiK1ZgoC76FyT1dW1OSusJctGainW7k4QjvsY1gvuuB+WhfOLZ+96013jZv2Zq8KxXEne0fh
Hq84zxVwikeKjuzj0GsL1U3fjCxFYTGxJQ0EQOENpi09gGk4jJF4qx+iYMMtgBBqSybes7j4
LTvk72EH7rzxfzwhVXa6dhp+OzL4AaHWdB2uoD31MHKwuSNdP9vrPbGPK8+kFmHo7EpZG1e3
T5xyDni/Zem7VOPmwCQc4a49gNlTtQk36cFDLTY8Zyk351UwMNjUNWTYYDI6LeOlo9J8pWvY
IniOEaVYPQ7EuuuzhS7ak46J5HMcjNpKh4684ot39d5eCJMIFscktQEZYthWR8QYBMINTmoL
JzEe0i9rZeTHjQzvAPlPsEOoADq3ZXL/RJf2AYsPFtviOMY9GinwFAXlxfh2XoYSW6xYEvVS
t8Joljp6701L2fgBe8xWTjbX3WOP23Uyo5iO0yxv4GyUrJUbMTaWRve64HRX0DhuEZc2OUz6
3pg586IL1p1piLNzbsZTqJTHnpB3ApqMNt626pI4qiIQ0khVxS1az8PbI9yGIxUEcIBGKA4n
MbSlZUFA43EcBADdiooI3ygABcj74H1n8lAhjzwZjzpeHEOxg7BkPCxbhSWGdzijaKgM29NE
Os6870AxuhpGcGo1MjymB23Aw4+lYvzazVlnV6EU8jg86ImxsMYVyrq/SU0B16sirpOCsKf7
ZQgWzr4yhqU3XekZRoSNdlhY7pibA0gy+6q767KD3Y2ye9bu+bK/ljyaNsPtGIk+rr09rr2U
ZwG5Ba4kwIkAx2FAIgGIEYIi4DDAICyGkCRG3wnt18QbneQpEoXGu1mVJPpriECp18hZWOut
xMaQf9Ohz9daHqWKmFWea6beM130p7R6BbNqT++50zgNMTin0p7m4l94xN/IR39uPlx4sMaV
s19LqLaWisQy6dfvWKS+Ebj7RqL9h0Sd0zOtkJ76xVv0woS12iq8SwT5rlP4hYb7nAfpLo8Y
rpUZ4nXeebVVamypvO4weWU+2qNxPBbxObRY6Grcq9keJ3g+MRN2UpjVVzHI7O/AnQ6PSkST
h+dfrMSIbrl44FcMPVTW9ZzuTFp5BHrNMQkH9+bzqOZufY9zFDbjZ4jcJJRCHTtCSn+Z504h
xScbke7t4rqEVtPTeg1JHbu18HV3iUgPbcNS4PfOufbUS8HtCRte5gR6e4n0slYd49HmEwkK
qGTzlCCCt0soipIAIeOt/CQ2v3jP86KfzkXtJ3ORSf34QdqIXYbEBEpDrA5i2Ty5yunZ3rSz
mGErV7SLJdHBSEl2YNCwlgo3cIFN0/dppx6RqqFPO8oTRlyvmCpKVXi5ITElaxcuiLcUEaMW
d1Ey1Ubuin4XngmDqzaxGviA6IYj8hIOwYSdXNGru3C7u5seLmsx3ZiKVk/lBKjwgpTELILy
7TUSlKAIRm+IUEgYbxPqpbBMIAKmSTIgKRoPNtwSCnsftF+H6vU9odpADUsCsOcMh4R/QuMp
wWZf8RGFPCWFKJ+AfV6zBLbEJLbZCbknbpaIVRKkGuLA6rNfK+xS5qW/8+z9aU/0LCGEOoo8
74A/0Ps87+PAOokM695iA4SKG/NycBStix4RMxqEVV1mG5wPBSWEQpA3/tvNHHwT/fDxODh5
1Vx8POpw8eFZov6OZaqA2uIzvfnrls2TYMuKyCShwyACURBtqf0WXDAIQt/1vPPPPRI4sEQh
w8nKxCNqCvtOHVBhzFy5xqs+uCcOVXslf1HGEUmL8AKiBbVbSmP7M+Jm/F4apohUtRHbFVDL
lLQDziP+wFo4QxdcB8+Iei60iuSp/Chb+iSAZiRMpkDtkCeYq+bpbVXum5opDsX1PF1Qi9rB
h71diQBDbPjyrLjlMlH8UpLX6B2Z0Oa9GEQgSARjAQKiECBoSCI4HNIEFFNhRFIxiLaf3gfv
+xL5Wxc+4QF+yN5dUFo3sc5wXgDxltuoB2nLemgjHGMnH1726zGPNPtcbQxNin6vllVIxSON
0vfrOO2KQeG4WDk0NX5c230/1U8CnKG2e6iylOGOxNQePehURlJAi9Wu3q/XWsdgY3aW04S2
encN5xa1d2AUvZLUiyVz6/1NOLdmGKyW6iep9srOzi/QftoL9vF5+fbdb6/ty/pnT7p/30r2
1UPyf7Ij8NPNn3dz/t70q+2APzP/pzv/zC4OQKDJli8HAQLhAI5ReCsMUADoEMKJEAZxFNN4
FIbgp573neh3rMih2zTHKBTGQjKitxydQAGBw1tGCW01ZxCEW4Qjt/QGf6vo99SkIQUDAklo
AFMBFaLJpmBIwliyzQ6cwCgYBXgQItSbRb9j/wYGU3iAxNvkRKk4IVEIogmwzTYkpACGxgmI
tsHT2FtFv2cCbyPFUZqKNpy2qj6kQ4pGo63kx/DNSSgSCjASj7Dwp3Phn+8Sfdkd8bcBLMOn
fSOfmvz9X9kP+rmTnzp+/2dc/pud3ihyvnodpzELf0A1BVs0rHignr82giJ7vF9pp2uRqGhD
xELZHqoJCtkICUv3Se44pyeAur91dksTtdgeZHh0pWmegkYlTmXOLWW9Rh4jWhHPINeT2YQL
2vHmUhyTDBG2MhGmKjZ57KAsliql6O1xvFWdskIP+Hmh3aejb8GEvheaGERPM1usUkIYfurd
yznvy0XkJAE+PVQdJmmJvmvQLr2aYaPwfTp4QST1VV6vLPvcEqZbEjVnWL6OnUG6a9OrDujR
WL8d1iKbzzdrD25u1R31C3w6hORhlxjHKhEP+/5AsZeJODLifHzZAv/TCNT/GQb4xhKwY7oI
yUvMk8IXs5Vnhjv2mN3ZCldYLVzDpowGjy2QKc5+SkMALHxwkcMVp8Cuzw7PYeyOXPkYqOIU
Bz4SngTkLF/ukKwdrbPIZLbIMbKCDcdOqW6ZGabyYCOUelHbA65seTpe8PLOSVm37nksGHNa
9jDtnh+Xtvap+2RYtRIhKqGckuYOVgZWYAQd+gqz8oxFZRbHbM5RIw2XB/ka7LKj3T+p0q8k
pYGyCd5PUhfRoRXGhxE8rEixHqphKRdRs+3yCpVK7/p+VhyP1GKG0L1DLxHd93tzJ6JZGW2d
CZriaYSXlsKj9mqpP3dll1QIT0/7Gj5PyXowH80erG52sOmE4yhyOWgzHaD9AYEP8nlnKOnE
ZaZ/uJdvNeU7GPXb4xO3s+mSvMakAnSCDQ9ceVHU82Z1H1K9MMXFvjhy1YIJIdDb5YR3hwOV
6MTaIfSOvHUDvpxqgz9cvPgQXjEyJm/uCb5yVvsII6SV0sE99va+9CUrqZeBWWLnmS9PO+Zo
aAR7+gDrj2g3HjPU2vyc9yWMh26WZfFBvvhLy7aFojxCcqZU6gkRyboP7jR3xki/uEjH4HG6
5IJ47QmZx/lbOe7SvtFTyST5udeJ6zQepuaMiRxl3OnsAmaHxQQkhnj+3gYP2OVMMa+qSMgI
MqMvrMHv5/3didaF3QmZcUUfS2nzCAwEXMmJRTwyk0Ml0fmM8mcCMt9smbcHnG8sgyBb+oWF
krkK5D66Q9x6nKPA87HKLSNBLPxOd2T9/uhwenXCAE3ISLSfhpGQ2g45+7dzhJ3R/f5GWqE7
sqT6vO2j28FBxBt2mB8V8XheCToNlrwpRt7KVBUx5sg2LdGX0il/qnF3e+7I9qDWtC1fhTP7
lPm7vB+CVYXOHRee18G5nuTWf0rxI86I2wNL4Fomz+wQVbQBI3sRFgMNdbIiq3f2oHQ+dIH4
bjQq1jk9WpVBm/SRxEaRHGqzBgbfu/sJCyxYbjlpCPI7gxpdKByvLqR5njy3EYTSO98ss5PQ
Y2LsXK1VQTL5Ueh7x1agCZEV/ZHCUsCCFiKd5Ha40pezR571PZgOjWFz4DRacJHs0dDfJWgE
wATt7+jeTtbpNiECkttudUxLn9lopFTk0yllhOJScVnMK4csqpNND+eaEtrV11sOWiX6JO3a
tD4ZW8K7VXpVgoh1jBdSu3pZz5HijZPmwbXcUxBAViRRuR+AM8IaQVErZRnxRARVDEXGK5UJ
O7e2nlKeXfE1IY7hwRdn22LSVw7s/ehk70gtvp3+rmEj5BZTZ4F+PgTsqJtC6Vj+k2dTXJZg
iTlktlbCyCG4hNG5lqsGRlHJFWhidyaTjhYMr+EmeLLwNXyEZ8wHgOfKco5yX2Q5188DOMoH
u3d7d0klntuDcQr26NR5B9iTbLyd3R2Pxf6DtXXlktjoSe2Oku9x8h3ae8c4XtDH/cDfkS7s
SGyYRIB2CaXKIByneaVNUS2zxWaeNjPwOz7m7XVZdMFhW95X0xltpmXv3loektlGXNw7V3fN
WUmvCnNRHIWjlBQ9N1mSsgjzbFku5T8dHnulxvg6wf/5EaRXD+G8HMD5XJq8euToz9YYrx45
+pdPHX3jaV/L/OPh3lsrkXdUDt85Ju6eL27LaeYi0k9CoJiyLGzjDMMNzLG8RmV776IE5ijd
wFTokJiqsS60MnuDzztyTiXt3qKU4g3dBcRPi6cYEznF17zQSJ4Qvb7Eq8X2jiuUN0aJuImo
yPdTB3K2aZHj5D5Cls7AjmzQbj1jPTRN9kqr2Z0V7xaupro7HEsrLVsY6FHEKm6cxvKJIQ5z
gEw67A/pnqUbnJTK9UbVt+OOTMPLncISP7l6E3POnx4h3RbOZ2LdCfHoUOn6IaK9U3Zc5+NZ
00Onqeba+0mI+Vdt8uaS6jubLDe1t668ZKbCLM8PhTkt+XKfBt7pU5ajK5Sb5Pv+lLlQMJlr
FnYObF6Ux024ajvreUYrz3W4Gyyt3mzR52O/pGhxwC1jjgP4qkGhSzikGDOUT7RbZrqAdIQS
yNx75+Mlihjmq6n538PxjjG+ucx7zUW7LXX64qK9a59PxIuLapqJc9RcEt6MLT6xXz1I9ZzR
fUB7WbGbXTx7J+1eNqwSTMnNip/HkmWm7gL3trz5fX/FHc0RHwauzoh39YbWP6ptfbPxonjA
Voo9JrdKMxTeaUnA041h3mjfgmf+Vjg1Z2LVMYe9pnxIVwG2LtSDwKXebHLfnm5zTCJJ1CPu
ni2a08H0s4mOEXZ3Np+1Dm+Y7cOMmc922MbSYWFw5mw80Xp/UGRwQIcS8KKd2sLAckdCQm4z
Q2VXVDvx73HVd3DCn7XN+uKq/EYfKT8Li3NlZJY4knkBzyIzCAc2CTSd3t9qlVnOD5MShk6o
2JE0MTvbWURH9Y/GgVUX30d1jK1XLDC6/URrygjl1jhuZlseD23f3jFPa3MkhPcc8rRNKblR
N98qYezjIfY3wvGOMb55WeD7MI/qZ/clzK8i5iCNdJrZQ1vbeDnT5sJ7w4lgJAniZOFO7Olu
uNZYhI6AZBip2bEZzSiS6DJG4uBPkjyP4jMA/OoqyAIUez8Gjq1qiQGsS6Ipjt4fCribDWwI
9RAwzbAV3di5AsmOmm8qaVB4WO1juJkOXBaZxZWNChhRW9dXnsdxrRU2GvMM7lvRu8uVoHI5
IqtUdyej/eF0O2QLlu4qUxWjllWY6+TedJdvdL6rveaR65Vvjfs2HG7Xm0SN4qzfz1xvKP1G
4VEKRVusG84RcVcvRbxO+i6iwKCHq0gx55QeD71h8j85PP57JP75osp/G/hfXVp52+rK1928
6lFfV/R/zkEI1/bcttC2YuOwj64zvjB9vfjnspfM0K+MztLX+hL4Lp3IENSKTiYNB6zaJ6K2
Q3OAYof1sR5IDh906MzMRXGf9Iir4LqNl4mzLkOkr5BNKGo53sYOPwzdodCOZP884NyNJgeb
Olx2EzfrCD1TOSosXXWXuTINAUYHHuqabjC0DE5DA9pccLc5PKbz8wI9GynENRTX+xw5Qmqr
FXLOujvPuFjlcWDuWhtJ/EktbwFaamfznkXh0jvGSlYrjBUVEAqjDqMB9tgcvR8Zu/BkU63c
wBa2op+sd+ernUSnmKS0h7IMk1CgAvREKWuMcIq+VTa+pnOf7kehRUHHWcqQJMojaD2a5ebL
YkPWfZsrLpzvBHW9lPlsltdrj1SrmXKYzDhTrZuPgzWdsGrErbNBkNbh1N32p5uis4pm2y58
UldUSAqztMRMS++7ALo6mlKvVnZylSOZQAWiLCiKKuJW9h7XVuAf/g0kJnWIlNlXJ4u9XyJN
vg+Hkp8twxiX8qOPf5PiSjrH33488/bbb5+OaRr6K+fh/vbpCObP+vj4lOO3l7X0r1t/evax
5Zv/XbuXQ1m/fTpA9kr7T0e2Pv780pGhadLlP3b/B/9helPJSAAA
_ATEOF


$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:285: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o 1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz 1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz.b64
else
  \$UNB64_COMMAND <1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz.b64 >1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz
fi
"
echo t_migrate_schema.at:285 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o 1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz 1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz.b64
else
  $UNB64_COMMAND <1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz.b64 >1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o 1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz 1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz.b64
else
  $UNB64_COMMAND <1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz.b64 >1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:285: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:285: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz\" != \"1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz\"; then
    mv 1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz 1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz
  fi
  gunzip 1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz
else
  \$UNGZ_COMMAND <1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz >1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped
fi
"
echo t_migrate_schema.at:285 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz" != "1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz"; then
    mv 1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz 1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz
  fi
  gunzip 1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz
else
  $UNGZ_COMMAND <1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz >1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz" != "1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz"; then
    mv 1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz 1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz
  fi
  gunzip 1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz
else
  $UNGZ_COMMAND <1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped.gz >1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:285: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:285: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db db load < 1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped"
echo t_migrate_schema.at:285 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db db load < 1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db db load < 1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db db load < 1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db.dumped ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:285: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# verify that the db actually has the claimed schema
$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:285: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db db version"
echo t_migrate_schema.at:285 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db db version" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db db version ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db db version ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:285: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:285: grep 1db80c7cee8fa966913db1a463ed50bf1b0e5b0e stdout >/dev/null"
echo t_migrate_schema.at:285 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 1db80c7cee8fa966913db1a463ed50bf1b0e5b0e stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 1db80c7cee8fa966913db1a463ed50bf1b0e5b0e stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:285: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# now do the actual migration
$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:285: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db db migrate"
echo t_migrate_schema.at:285 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db db migrate" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db db migrate ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db db migrate ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:285: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:285: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db ls keys"
echo t_migrate_schema.at:285 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:285: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:285: mv stdout expout"
echo t_migrate_schema.at:285 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:285: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:285: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys"
echo t_migrate_schema.at:285 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:285: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



REVS=`$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db complete revision ""`
for R in $REVS; do

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:285: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db automate certs \$R"
echo t_migrate_schema.at:285 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db automate certs $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db automate certs $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db automate certs $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:285: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:285: mv stdout expout"
echo t_migrate_schema.at:285 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:285: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:285: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs \$R"
echo t_migrate_schema.at:285 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:285: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:285: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db automate get_revision \$R"
echo t_migrate_schema.at:285 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db automate get_revision $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db automate get_revision $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db automate get_revision $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:285: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:285: mv stdout expout"
echo t_migrate_schema.at:285 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:285: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:285: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision \$R"
echo t_migrate_schema.at:285 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:285: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:285: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db automate get_manifest_of \$R"
echo t_migrate_schema.at:285 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db automate get_manifest_of $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:285: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:285: mv stdout expout"
echo t_migrate_schema.at:285 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:285: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:285: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of \$R"
echo t_migrate_schema.at:285 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:285: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


done


$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:285: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db complete file \"\""
echo t_migrate_schema.at:285 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db complete file \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db complete file "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db complete file "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:285: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:285: mv stdout expout"
echo t_migrate_schema.at:285 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:285: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:285: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file \"\""
echo t_migrate_schema.at:285 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:285: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


FILES=`$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db complete file ""`
for F in $FILES; do

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:285: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db automate get_file \$F"
echo t_migrate_schema.at:285 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db automate get_file $F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db automate get_file $F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1db80c7cee8fa966913db1a463ed50bf1b0e5b0e.db automate get_file $F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:285: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:285: mv stdout expout"
echo t_migrate_schema.at:285 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:285: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:285: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file \$F"
echo t_migrate_schema.at:285 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file $F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file $F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file $F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:285: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


done




cat >9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz.b64 <<'_ATEOF'
H4sIANfQ6UMCA+2cW2+dR5aer61fQfSNbEDt1Pkwc9OeiZEY6HEDbc+ggSAQ6tjiRCYVkupp
//s870dLoiTS3pQyyE2sbomHvb86rfUeqlbtf/r2v333/dm3f/nnP/7rD9/927f/+OSf//zt
Nz9+e/bjN//0x2/P+lW7GC+er1eX48X1ky++fPLFi3b94uzi8ubs4vXLl2evL87/9+v17OzN
f7///dnxgst9drV+aucX5xd/Pdvn6+W8Prter9pVu1nzrP989rt/+N2TL26f/tDTeNa/X55f
XJ/9x/nNCx73t/Pr88uL52Nd3Vx//bf28vV68sXRsXcP+OA/nkAL8/Knsxfr779fF+Ny0vr5
fPLFVx+Mc/bnf2tX10/evPPLt1/xbobxtolnb598PS5fLQ20vXr18ny0Gzp3fHvGk96+/aL9
tD588/F2XnT2v9bPb194DOijV/7ywtvRvnnp7TR9eduzZ0cTX7395Ycj2+cv1/O5Xt602/U7
n/eN5ebqkoV6s3R6z9m4vLhZFze8q7frD3r2/tLo5ddf8+DLq7vNfa2JPr587828d1z+9Opq
XV+zGFfzfO+zm0s1Ry9ej5uz8frqiobP9hULp7affPHLiM/ns+MHXx0L+N33P3z75x/Pvvv+
xz/dbfbs3775479++8OXT1sdLRubam6zLZNSr2ma3Frv3mwzkwsxVTeePns6Q3V1u5Cm8y3a
1VvKtaYSlyu7tm5y7qH49vTZX57aXbop5s5/e28fgzcrhua9G96vsJxxxqw2SnOxmnb7yqcn
dNunXV0JZo69m3Mmhe7mrMuUUKYNPtL3PKK6veuMtrSwrDdl9FWi8X3OsmMu3aa5QjA5VHtS
t9u7bvvW+deux3TbVPo3QvK2OdOGTcmHsCPD93stE1oaKaQW6LZdYyXD9Nbda0huLhezTdaa
nGpv07ZiVpnlpG7Xd92uLeTgqr3b7Y9y4W0WvLo6/6ld/awkfHZKFsx2J5DfJM6dSH7zylsM
0JvvjdJ3M/a5QRf6L8F2DJ6Z9ExsNPHhNXvXdu+rzV0WM+nKqCt6npPtaNvFEm2oxZu0evrV
tpemXm1vO+knwXZS258btUfb7c24Y16j9ZlPa/tzQ+9ou75pu4Akw2x3t+33Au6ndnG+1/XN
LWn9Kn8+jjk/RvH7OPNN82/A+W137gD0/QR1POnyVaNzSgv1Zby4vF4X6sHr63X15Iv7Cevu
G/vLy/7kC/LrVTu/uo/a7nT11esOiT7nxbfduj7/60W7eX31YQu8688/fPNffvjv39izd69h
0n73PzSSP5zPf6Bj//N3bzlDP312JuY4Ovzs7Jf+PHv39q8+1gMfzNQDzHkvbDSW9ebFOgML
rs4JPcRDe/u8+8j0o7lY/LXerdavLN7H7PqL6vl0Vr13Gh4CzU+ZgI9x9EMofXb2Rqq9j6nv
nvFhPy/W32+eX11e36yr5xe88/nF65+6gpRe6/u7/b4bpxcvf+av267+rI7evDi/Prtp/SWB
sv6mJ3wAJw+09BZg4kcYcCey/+8CwMdrcfsUjfF8MqRz3n31Ud7y64eWgMz6pbtnau+n64+G
f2cw73hsldBjjjOukB3UXD1cFuoci/+H2WtZM7gJ81/8+/UfXl32y79/zWoLY2EAW6c3Zhpg
2bWSQilpZ763xx8hqy8WJDZ6bcnG8bcV3y23Y/KNtmpp1uexwzKxpVUqf7m9qlnWWp41ywp1
mDRia6uOtAsvmyvX7Go3MTXHr7tpvWXb86YFdAxyog1+A+Rvvoeathup9zT7QBxZ71MZCy4Z
xm6eZ4rvhj9rxzjzyCFmDyOO4B38NnYyJvnqQq5jhF56iX6H3dbwbXQ6iFoyzlX42MJLFRm4
GW5Zts84jGeWbYLpFrQZDDPkDIN7esL6jDqLcdGsGkI2Bf2bmZtkBmNIPdq8WYCcHetzsxTY
f9A/X1+sm89bobp95nUGRZiQ37sFOLcPFLdtudGf0X1vJaycckYkMszm+uohpJ4S0p2Geoqa
gRzTSsV05nPu7liVshsDMD4yPWn0uB3SATVheY/bzoXtmjW7jFlCDEx1XitPpH/KPlbZAAvx
M+zUre3G5aaHl4zQHjVav11tESkZUWlhFSnvuaqtPCqOrIVcGRES1yb4aDvmyVTaMnyPa4Vd
4363Qu/hwVsji/dlnq9+PlCBfBM6f0R29zjgW+gfL85f3mflHnzDL2h/29Czs+P9Hxupj3r3
NowIj77Jg5WGQzexjviEnUKwbebpTE9tlrZNqO3pyQ89+YnPno5is3MslSc3vWSyD3bZtI3J
fqYUTTW7Z/+f0njwWDEfk00huomvDGuN7evk+5bqbGUZNKw5vfGTn0jjzboccD3FOn7FwGMe
aYExYyazQ6jbDDzu6Y2fPJf/GY2f/MRnTzOvoZN+DF97cnSSzvGVFZjR3Zl8dCXVh5Ps/43w
fj/z/r/EXr8CNMcKvQ2OtKsvMQPwfoadfQdJMbkppdnEtny7IETzGDTipcdGo+gshwQv87fL
jtxbiej39n7qMw1eM60QZn3vaGaklVBc6n4tLOgudnrYNfKwLBbpo2yXiwnZoh1mNzNBvWPh
FuH+NCYs3tEsY+PuY0zQIoloklsx9B3FxTHFCFl3u2L0s8xabIR/0pqEPInZbMqMIEJw1cVR
SjWx+lxdd8mHUkfYM/aesaXNmWwqbGUh2IKpngHPvw2zOBacLlniDZDDEFqLLtu4vefplR6Q
de7piUvWBhAWCkLHR9gbFp97uFTT9MxHrzwLJq2PWzI06jr0h0VP8sehQby9/RuNaWms8bW5
/fv+BUzB2rnrWnug31oAT9E8udhWnVvBjczElz5LJdjAWmfpbXR2lW1jcSO0lQlGAo9VXSm3
hMD1w5ZAIPKCVmpsEzGG2BwmWmcPGYi2cKGNlHqQTByV+U28dzDygB4srcy20sy5T6QVHQEI
M/M2UJvLNLdSL1DD3n4kZgnB5kYcfmRkZ41+lBmsQSK50umZQX/aOP0uzBMr7HbqJmt36cQF
VEcS0qeMZKthpMXQEsoLkUzfx16ZcF/xcQvYXt+8uLx6L+eU1+bNd4xy8VW4f+nsrN1qMFAV
U2yb2+B8Lpue7Ia7KMzR9qsuaUzmb5EfBTrzhfivo9XcTEF0j5ItUs6w7Ic8rLaQmt5PhGvZ
xGUipWPdKP+Uo0e3zqgdy5pHUNgtZ5mA1GpF6PUxMhJvOg2VGYA2mSRDJ3vuzJAh5PvSLnN1
lVVNZOb0tY2oxKf5UVGlwfcaUPS2eQKqOHyAA1jIc+YvEw4swolL5+ZsduAIUPIwqNvQZbbD
AVuuTwZfyGnrx+OWbrxoF39dLy//eiSRS8RFKm6++eoBoxCas9MV/jEgyhwegVFGVSTiWFJp
FcC0TOu2KOTcpk0kCv4HObA3gp4Q3zYHH6ZroOMmGluvIFZtJhIxzF5dERRcYWSepVkHPvFf
MxbwB11utQvJLNDGlMuLRA2+AxlfWJ4FEuVCTJDleVlMBF3LEUFBCLHgO+VqcRTNgl2uABv1
GPDMdu3c1xEDtS0gHNNhXMOXIaLo0KzhxBUbgCsMsjo5RRuER1mVoXrQZ/iCZdHWr7WPW7Hr
y58WrHtkG84xTTIr0fUhQnkgw8jytVcDQ1hbkpG5TsxWq1h3BpoNMY+FC12sO5elZzXxI1Cu
TLVdgu28mbmOkLLAaHcbGrCFm+y54b9nDDWhLOOcwCPq1mhVKz83cbmO4JujagZCrQAZqNPg
VZAukP3WVZa8VNJojWHdwCFi3jrcGVgxVhXPSbxnHBqWGmTBemNHI+zWMZszkBFgQjNpgdVN
MO0Qu4b1TCezm8Pf4cojLlN0yTfQ8OjYzwWuFMJgxdzNYxzKbwqSB7y4MCl01iIsYm4TRomJ
IwNWY0lKB4s8/SLtYy6gJkZ26iwJDOu1xJCjRXwUBJSCWvsjDhDNqwUSB2CrZB0x3bydYkIo
ybsMYgGSB+8RazP7NkjWoq2TjrQJtkxwjTzOWQA71lybqW51bIKGlO0sStishbC6D9c63I3v
RoYQfLnAXNEjW/rO25eRRffoHG0hIfZ4MkHUDVTcT1yyAxIE0g1OyDsuJNYcw+XF0D3ATOho
F+hxS/ZWkLhDdphPESRua3todpDSxoEi6yn5khh6tSHSfoApuh+RuXcBd2M7w9gRbo46+BpI
tCremzuYHtAPLLCPG7WxQhLojdjRcC4AeCQEDGRIZaBZMZpQO2s6lmdtpndBhQME1baQi8hr
C7P23pmE0RgOlLsWMlSARLRlZofew41MUkLTprZCR8WM1os2VBZxtQfqBy3RD7aIxxYQvwJ5
EZimnbiALBiRAxoGWsueZ0lCT4daAIoKrJZAitQft4CfJ0hARu8GQ0S6kULa+1vA5nYenIG4
wwatfQDZkb422Ao7+VqRZnAbUwixI1BYdOYT7LewUJSWh/pnk3xBH2L6dyXgIYSOdjV74CBM
HC4WZqGT24lwjguKTLxyQnRtISJSFKNqA643sJzQINmBx4B5cDZ7KTm6iJfo0M9M4hBnIT/0
URLhuIzFYSm72cuETm5UcByEYGktHMv8nrh0MSKf8pAzQgfRD1egtizwDBlyyX13Zm8+buk+
TZA4qBrxkRANPdaZkWDWoQJBBZLAGg/qdEcEwAdkYnQE1TrsUdS5IDIDaomiacR4QZ5IwPNf
AkzB4T476JhnlhpAlwygd6e4ABf4IuAgrMSCdl+bJyngORATnaK07CFJ4G4jDbK1E7SJh7Jg
5YgUsswJIrVW2Gw3FC1SEzK0LupwNgQnnhxNsieqzqAzuiRc7dgE4gSd5U9csV7wiR34WBP7
6cStsHxBQnaQuqch0jNHsj1iz+rTHDdyp2kblQCcyIQ8gadg0bGVKART0Bz4k9B9yQAhlstL
PGPCsyAhdFglZtjnKF0IHozCfXkoaTD/Wxv8vWgzIXapOaabXCSZgt2DGWAKa0abJNgik1be
tr7XROODP8gimW3gU5tWZnnCyfpVhojNr5kdcVNbgFFzDxAx2qMribxB8kOLvLRH9Li413Yk
3JLMMhPPjbBsDcN4apIBEYiiGbyZaDTDGBkKIqs75mjzNGC7gEaPW7IPCM5+CsGZ0hDQiMqt
Ao0FX9HgJPe9QaNNhov4XplcQ8d31MYCgdHZCAD07MKCh4U2R9WVib7fqNdtdEqP1sRYY+Z7
MotZdInUpRWkj/WgJZyWrMDLRW21eF4ScdSY+Dg3vGVqKZJKS6cqRA4hE7VUo6RgcItpzMlI
XQteVNy6G1gVchizhlaS5yNualoIK5vg2ZVCwubhGMwEMLJDm7lxKsG15itsnrAPGIDByCNG
HjjuQ8NHKIVlD1H5iAX8PIJD1xWDzkqI+giioSYAPGuKc9CQDdnoiKPhdpqP2DQkhMFrE9hL
e2OFXMyAvZxd2g5aquAcNIgCRfxnU/GoorsIHWHksXi9QIoMAJtWyh4zk11GqggjxNxuDAya
rTpEvyUsCotUQQBwiiCD65irnkC65VszvkRmj6SOUyBuA1hYtUlcJR1a6CGqnsY0fAGmPBAh
NuK38MkCTHcqXJK0yCUWZwFJZIaKm2B4t8EpQmoV61SFtB63dJ9EcPBMjl2nX6gzE8KEwP3q
RuAiBsX8Yv9r2mMEJBXdNnhrD+Dr+BJJ0iXqZhGmRZxn3IT77tX1vgtcIw2I7EHwkbTSjQyP
Fpj6gR+ra6faEjIRylExnbb9WmimItjoUtI8CzmiflHnDBP5nVrVOWpA4QeeEiuusYInAC3p
Q7aqYTrDu+LEpzPFoEAhmCDRjC7Rlmpz0oTlxBUj8VFRCIvlLdOftIkmXT3x2QOzWVn9gtB8
zGHHR2jpPgktx845ron+B1qsnej4gVI3QQgw+5CkgP0BVKOJ53WhoKZmRQvitBH+2gVRDRZZ
51HhHUkIfNHnMnbFmG8Q044J52KKthFz4QoTa9RArq7NSQRhZvwwlnQF5i4ZXoneAZGZ/b66
5OjKYOjUTirus29ndM4KU9I5OoDhIpmRoGkusZAdWBZyAWTDfG906UQCgZgdgYxeVs1VSKdu
cgFixHahkz0w6oLCXZ2lKgYwiL3qXCCrWO0xC/h5aJlIZ20cOydFix+zCLIJiRUnIgYVWXls
sHaEgZgsC81jAc0UiEP8mRNPkQdW3pTp3iQJGWmrgx7bcZKujbTASnX43NUqc7XMXHka0VJF
cOTtakzwZQBMLSoHX+IFOWEY0jIAHyVvXLeK/WC9YBG9KLxq5IY3LgGtgPiF90wayCGbc5aX
wBOAaTbDS5jBDJAtlQbOjBFB7ZyqVKS3W7PNC8P3NNiB1mrERLXl6f+IQCI67XFL92nissp/
MGxEwuSFJqK/O+zLTxAFppMnKSHK0BF+Tocghs1UlkBCYoxJsF61v7yKNsN7MdYXYIzRWf7p
+GiTdEKDEMS/Z5AG+UgLfZCdRc9NQVvBo9QlfzNQEuQKY0Jsr4pOSt3K5eLjKgYAR03CoPvH
citg+6eNjSUygKt2LwkNbUrZGTVmA0uD3CbAlxH34aHYjBrGPmrDLYxxcratojoYxgwC4DdU
6MCKp5K0J8PkGYeqfeSSvUdwSAmnEpIkA2y1hiRD0s+S0uLOWjpt7927Q8Y3wDadOvhVycRq
MGrC0yVhsvNexwF8pX91nqIiV5CZf60OFA90zl5JKMUY+Q4m4hdOP3WVvDX3/6Ev+8R+2g/7
SQ98Ejuof1Emg/+zkvQaxZ40Ap7DH7rIK+rRO620Xsd3/Muz6Kdej6xWPx/YsWgxOJSR1Smm
0J3ZJcxDNKslosJ1MCdjTUzXZjoSikd2TDhE3OKKbW+5njSh9ao2Q9RhYdRu4rYq/81IA9DE
k1Ho44bHmiocthstQShrzxZl0YiiWRAl0eRjc5oMmMg97Q0PlFnK6D2Dm10jaZfOd21/IV96
8wqJDQii9gnouBCc6BwMXZk6FA02qNTGrwSzgKtGBzcOOz8Am1N3LHRkiY4lpDd+bhPobYgy
6f/WzoglJAjrx5Qj/CZE+QcEAVEVVaUUoAlmRvBxlLFB9ToKzGo5xm4c00v25WAMKYqHAWFZ
nbgQxTp3KihCQsrgvxBhzHywWBWQQgVsfLVDxgfRmxXQszolRvtPnQCnjHENIyDBkbrYG/QX
iqaT4agbRFPFmjUkxtxGp7IOvgcYsd4+EA3MRVmsXm4kf/TacUbsNUHUDltnKhGcQqCOXB2k
PdL0PA7Vauuqp25ZmO2djgBrcX2CM9o/QtxYYLdlHcqyHruExy3ZB4rOf4qi8z2D3cD5jPiR
CadDuMyRxZaTs6EBeMhrHU5h97W/5DyzEjc6yiJitEm6meOMvI1oiphxCQYPFWfoUt0kJtLd
ucp6Wrch946MxXZEOdgNh+OtwqZhCLxhclsI2RZjKoE1fV0Il1jBgZqKdDChrx19r/L3ysyQ
22CCk2ThmQUqwWovrwLEmCGShHXt2HJHaBA6K6KgqyX1rdVBwKk79A1w0tmXwQTDv95mCdXG
CBtmE25GiBnfHreAn3nivLfpraieY5MNOaHLDZ1ro/eMXtUU66gvSTeQj1BdxZMaFTx0CBLJ
NjvKInuLepDiIUvNJocKIKVSRpWzuMHjcLv4JKPEhDMx0KktsioRFvhnubjMeLfdoU+WUZWo
JDi2OBLeXSRsys5IAqutPkKzgClww0bTo4mxo/jbRb7lABNrah0QmlEQJGzEvUWzcdQMOAzk
6CRCThbjVRsmybmB/3Br9EX2Zxct0WNA+ZFB5sGvHrd0n+R/QbuEVIOgUkObAkr41VjBAx7N
fC7woGj3AWM0hk7/Ctm5WJZZwbrdDw43IxQ4BBjqEBCyTGIrwnCzY85Jxhj6seuASTRTxzEk
EcwzWtnEBgnFtJfNr9vCC5Obqt3RdaRaYFxthmMRLDEurKw0UoGuiVby3ZBTaEy47KjEBbsL
LSD8LJHlO4zP8CHQXVmh3aDx2Qb4MitGwD9c9XZboH6UvfGz5/cVi/9awdov9e13at1+5ZrC
7YvfXDH55a137ig8FFa3r/yUYkwodGMFEfM66p3eYlPIoqOUuwO9gkuybD09selHHEQgJyMW
3IZO9pNqCekRLdFjdkEAdcEpKxtPbfoxW0QdO5Ic0WdLKypKRxQpLMi6mEKxfmnbspzc9CPK
MIMt2sUh6T3SLXvRiQpunArXMb9rONUNnNr0Y4CBkUZfy2CeMKTkD4kxgk44CRIVKYQcR+gP
5sKvX11RkeOXN+vvN7fln7dv+epzLqm8eciDgX/9CSF//2W0rDtzKmciKkExWJ+VwVcjOUpZ
DdzDUyHYHdxgQpJrQGAASIjKjNG1ko3aH5xWh/ETBYBa293M2D2YBtLlJiqbGAYL3MGNaUWo
DKZEpOjuHgLGGW1aJNXKGFSc1faVJ2kg3JyA0dUtXkCGG7mSdEpR1yR9+PXSOWQOpQYCXeV2
veaajmMMp1KDo5jRR/l1xjUbjgiDVseYLD2cFUhZ7X1oI1GX8rqUq2q+bNammRvaEt3ge+LX
pAizq9ow64bIxbasXSydjvK96R6gH0jIOVS7AAk4yH9hy7XXg+uGbzwuD32wR/PEnp8QrK6R
xBbxDAQqVLrhEVZiLKQ8CYWJIle3DjbgH2uM7ovcd1Hx4/g4HZfujw8Vw8SemFjYaOyxmDKS
KOvChnZ7yPtJVpHStqmuJmIEtDODlocba9yqcO25rpD5paoUyESYrDu0kufBjNms0FSmJ9GT
alXV3sDtbReJoMBymGghMeNsUOEV04DUmYY1xrcsy3ogbzrYB/fhwPBfEiv0RkYJlRqTsKZq
dgsxUPpkvRbAlLDhVqcRma9BTBiz4S6ddG9mURDKqDiVvOZElrLMC4UKhaJWUIKI5EJgdRXP
IKRYbAIcO9nQXTBsrQE8Jw+xupoHlkFTTsogCRZPlwNChAuI4eOKBBu6zmvD5OmNcERM8zNr
sGzRJPReAsfRdfRk7GqYV4QU7psWEeEO3+w1pmoiYhrdg8LyS3vxeTGfePe9W5qqatqDkHat
7pUZVcPpOvpoBqSI/NqkyI4NRNmoj7wdEA9fuK0zESzGqvXU+DudnB64LBvHBs6JP/CpGEgy
z7AS8gg7CnUmXX9muA7wCKhnH1j4oCvQGRPUAbAchs61N//Z7XPTTV/AC3e5gDCkU/JMzfRS
zrNHj0rTb3WPJ+ocqcFsU2UVgBQRTNAHHRHhchD2SMuJtcsxjoUdpXVYHPnFtOKeAYAD4rQP
m0NQ9uOXnIdnQ5w24Ne0+jYRhfJL/tjZ5J0GcGQRJvG/YetGFJF8y6vUJxCSDLhklWRp2+vY
ciWCLDi6CupxzHJs7lpvwGHosC9wYwNI4AluyTcVCwKIw0aj4gz8etBewFG6h8E3R7Esbi/r
OlNby5K1eHLkAQFF0mXvAASbaJbHNAxAKIHJ0/YKMAwEgqCBhcV/7ozT3tmarWtZJ8fNycri
/rhJx5Gh7n05q1o2JgAeY60AxGEHrj/J5CcVRATtObWhvSQPTLS+BN+AVVOizsGSDdVOIFGY
2i0jOIFm/DGTmpcSOvUiIyOjBFkCm1kbCctvRE3Vx0WA602VMh38yDpoB0iCTj/8UWIV+L6K
BvFCuDvVIGzkKHSJWpmQGyjsB78SUDhVoTRUDbEGcUO3OuCJ4agMhthgyEb7uPjWMfcRH0DO
GVDMxY1VA5oLMKB9/jljUfUYLA5bdvx4IN0c9nKpXjHQ9aKj25UPKCMgvaxgxZgs0obQBdiW
lYByOh5CRmLLq/ZEeZo+SSDELnOZEAeAqg8kmUiH7FGZme4F0vMgjsLjMvneZ1kf10PfOhD0
qQGyjgSpq3l6H/NUYhGRnvUFSwTUWzVeyB/8muqCIwoTViMI8sZ36wWo+5ZZHUdGdTF6Iu5x
dtCuLiVaEA0kqdqxDar9MIT+JLy9qi2MBpldQi3x2ij53ry0A46dLAXhVGmgXXuG2Ku2pnOC
nTKtNLJL9WbaiIQKDDmU4tAGkSQ3yIgkITGgAmJT1bFETSLZUvOqFKY3Jixy2h1npnMSZSXE
qHsENOxKDER23g2a3rNa7d5bfbDAKVl2uoh+CJ2L6vfWrXpEnLHs5JpBxhghvqrTdKxQdGm1
EMfG74J8dEFBOBuYATpUDZtVJetKLDwERQllwVBS7XV43WuZOkNALhDt8uQ4GG0dBnKZd1uk
19Suu2p3iJ2om5z8T6IBHCI4kIWzbZXsdJwfUe+sUwGeMKzkWAlzOggJw9cTn7+Yx5IiIV3h
LLoI9RBJgB2QTA5O1TOC1NqSsWjR1TO5jvKrHafP8m5moMC9hLlTlZhunuoqiUU4om/CtCir
pv0zhxTxDGjrKomuHIQJhev4BNtejWRr9oOXIrxMGC2GZoQr+nQXpgEXj9CnCSjErHf4+r6T
uWupH/4kgnvv4use/pvNgHs/eeBTXf29nzzw2R8+8F7E323zXeXMqd7/EV79gQSpsewwEyhB
GkCKJMgiwtGjR7j5slEalVjRdYuxEcW1sMSpwstFFz6W16UFlhbsRTERGLoMAfHQUlF1oopj
EX1wle6JDF1OkjmYKA56DpxKB0ALmBR0UyQak7GjByld8q/qWAJz13SZYpWCryqz6EI0QgQC
J5t16XnpWhrUhExEPR+VHIA+qFyDVIdB4XWUIaQmyEYH6PxE5/+Vh01hGPS3ob/UxTmqwFK9
S8rSn2QxOO10nrSWrr80nI+FZ+VM+wAxabioYmszMIB6el3tqBnjGaYuiCOrVdPHuHBy2+vO
XNS+MtL+AcHxuYFx8k7KA4Fh9SCL/mISpWuH+FH7tHYzZkhDZQoRT0lSA+tZVWcuVdyvzgR0
6Iz8QRfrQxOCimwaS0sYQQqILcJON/AmoVKI22HtDsz+AA8n9MK0BcQfqkVvwbnHDld1e+ij
BOerxoXnoSZRN1h7YbRq90FGc/9H5Nw/oafP0un7Q7+RaYdReD/TcFJwq0TTkWnDy3Gy0qZi
l7xZHpaCG3T50RHwiT6RTYtIDkiGjDyAaVFn+uCD1DZMhXofyEId5G5eirvX/oO2kAeUFcOI
quJQDYQqRa0+JIgUNKFjNiO5g+RaqsnBN7e2VbvmcB/RE/SyaUgZuBSdZHW2asmmqAJ8TxtW
E+fIuYb4x3foYwmc9jycFDmSVkXXDPu4F7gziVNRe67gdKBrYAAPGBHGKBZca/LHR24AM0l8
ipaBYnEWRcUMdALl3v1cLNoGIxBNOKNqeSl6UVfeenCGpC3o5zx4tbMR5YegfUzWnY6xnx0k
7jbr7AHHIlOjrInGyM4TqvrULFIR1TAtuIpNKuOoGEXBodwI1xbIA+2gR/RxV1FqwapIJyPV
0fpTh2yxV2xAreSaw1CqIhnzc5Tx8g7cmi5ODHSKbRK8C69FguD+UBOJ1Ss4fKykgQ5U0j2r
lGYuj8m802fq9O3Rh0Tg1KXkNyKwJN3UatkZIkLHJSTOSmH4iQ2AH3rIS6BWwBpaaMq82VS7
yhvHhGz6cSOLbGugFtoRj5CMgYQiOmhtXZy2HaOGHdW+2+wkSAsqMWsyDgOLuLJ2UchwxBJT
uVnVto3vJA9j7Uwlkk07k0z1irluXkporLG2Z5qiSg0T4a4ND4JZxWJVlcTAFqCbtMNje3fo
c37etVsUQTFtHwUSUJfNWUmHg3G95a5ej4wrLBgLVfYYB8qq8kwnb1BtHLp8iMbXjSm5taaM
IsLS2k33tgmqqHvhqudl5B5JbJbTneIh4+FZrNYr/loCXHWq67g+p3PZAa8zZNYFLPS4Vp7J
UtVfFYq/suH9mxLx3m3v03a+7z7m3ii/u6/5eUGLMlElRXOHMIMotnY2mZcRDEygvWDdhtH1
RG16g0JBFwAwfCkqRV0OUyuu2xP6LBycdYW5CWCX+2H8WxtdM710fgdqIPF0SVGLArQelgND
AUEA4R1DmMEcQKg5Vc7lrl2IjVzaKEADMo1BF4OHFtbSOT5oonsaZs4++fe4xmob1AVurKA9
166oF8Lrej92BfMFI4Cyuk+8ImJig1rwIJafjMGbLqB2V4/qQJ/prLvcVkIBHYmHTplklT+j
UO3AWFkV1+bUc8XBTJV9a0BMHuqiMwingsulXaEyVq09q4pb5dIqSAlG5t5U5rvGo2pA1Spt
QUpT2zsZDiMFkTmlDX1gEgTPGMPYGDBtwa88NrmrgmIdq3aEUlu6lKgdKR9C61hJlqGiZ9AG
urEXNvkWQqoHgKSJIWcqdUUbnDQq2iehUFKVcCFXGG6EGjGzTecsW9dX01rajYYzu+pfEBX4
0UkPJunsrQs8ljDcuMhIHAQXaA9Nj7JGIkcI0qCsXVCpblKt+9z4gKk6C4iG59Angzg7DF9o
FR5Usaa20PSRmLp1FIJr8KzR5yMQe0ylPoap0CNpjA/S+rvv/+u3f/n4k1SeP7/98J8/fX/P
p6x8efvBPg894zjMf66j3bvvvj3ix4z91vv0UR/Pbz+W5J73334QyPFrPehP//Iv3/34j0/+
D6TSUF9iWAAA
_ATEOF


$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:462: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o 9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz 9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz.b64
else
  \$UNB64_COMMAND <9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz.b64 >9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz
fi
"
echo t_migrate_schema.at:462 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o 9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz 9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz.b64
else
  $UNB64_COMMAND <9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz.b64 >9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o 9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz 9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz.b64
else
  $UNB64_COMMAND <9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz.b64 >9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:462: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:462: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz\" != \"9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz\"; then
    mv 9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz 9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz
  fi
  gunzip 9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz
else
  \$UNGZ_COMMAND <9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz >9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped
fi
"
echo t_migrate_schema.at:462 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz" != "9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz"; then
    mv 9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz 9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz
  fi
  gunzip 9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz
else
  $UNGZ_COMMAND <9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz >9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz" != "9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz"; then
    mv 9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz 9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz
  fi
  gunzip 9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz
else
  $UNGZ_COMMAND <9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped.gz >9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:462: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:462: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db db load < 9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped"
echo t_migrate_schema.at:462 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db db load < 9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db db load < 9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db db load < 9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db.dumped ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:462: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# verify that the db actually has the claimed schema
$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:462: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db db version"
echo t_migrate_schema.at:462 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db db version" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db db version ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db db version ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:462: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:462: grep 9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df stdout >/dev/null"
echo t_migrate_schema.at:462 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:462: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# now do the actual migration
$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:462: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db db migrate"
echo t_migrate_schema.at:462 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db db migrate" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db db migrate ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db db migrate ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:462: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:462: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db ls keys"
echo t_migrate_schema.at:462 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:462: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:462: mv stdout expout"
echo t_migrate_schema.at:462 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:462: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:462: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys"
echo t_migrate_schema.at:462 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:462: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



REVS=`$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db complete revision ""`
for R in $REVS; do

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:462: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db automate certs \$R"
echo t_migrate_schema.at:462 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db automate certs $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db automate certs $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db automate certs $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:462: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:462: mv stdout expout"
echo t_migrate_schema.at:462 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:462: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:462: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs \$R"
echo t_migrate_schema.at:462 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:462: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:462: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db automate get_revision \$R"
echo t_migrate_schema.at:462 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db automate get_revision $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db automate get_revision $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db automate get_revision $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:462: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:462: mv stdout expout"
echo t_migrate_schema.at:462 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:462: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:462: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision \$R"
echo t_migrate_schema.at:462 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:462: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:462: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db automate get_manifest_of \$R"
echo t_migrate_schema.at:462 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db automate get_manifest_of $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:462: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:462: mv stdout expout"
echo t_migrate_schema.at:462 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:462: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:462: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of \$R"
echo t_migrate_schema.at:462 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:462: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


done


$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:462: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db complete file \"\""
echo t_migrate_schema.at:462 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db complete file \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db complete file "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db complete file "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:462: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:462: mv stdout expout"
echo t_migrate_schema.at:462 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:462: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:462: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file \"\""
echo t_migrate_schema.at:462 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:462: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


FILES=`$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db complete file ""`
for F in $FILES; do

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:462: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db automate get_file \$F"
echo t_migrate_schema.at:462 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db automate get_file $F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db automate get_file $F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=9d2b5d7b86df00c30ac34fe87a3c20f1195bb2df.db automate get_file $F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:462: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:462: mv stdout expout"
echo t_migrate_schema.at:462 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:462: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_schema.at:462: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file \$F"
echo t_migrate_schema.at:462 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file $F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file $F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file $F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_schema.at:462: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


done



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  74 ) # 74. t_dump_load.at:1: database dump/load
    at_setup_line='t_dump_load.at:1'
    at_desc='database dump/load'
    $at_quiet $ECHO_N " 74: database dump/load                           $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "74. t_dump_load.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_dump_load.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_dump_load.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_dump_load.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_dump_load.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_dump_load.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_dump_load.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_dump_load.at:2: rm test_keys"
echo t_dump_load.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




awk -- 'BEGIN{srand(4691);for(a=0;a<1024*1024;a+=20)printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256);}' > largish.tmp
i=1
while test $i -gt 0; do
	cat largish.tmp >> largish
	i=$((i - 1))
done
rm -f largish.tmp


$at_traceoff
echo "$at_srcdir/t_dump_load.at:6: (echo foo; echo foo) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net genkey foo"
echo t_dump_load.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo foo; echo foo) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo foo; echo foo) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo foo; echo foo) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >testfile1 <<'_ATEOF'
blah balh
_ATEOF

$at_traceoff
echo "$at_srcdir/t_dump_load.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile1"
echo t_dump_load.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_dump_load.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah"
echo t_dump_load.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile1 <<'_ATEOF'
stuff stuff
_ATEOF



cat >testfile2 <<'_ATEOF'
foo foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_dump_load.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile2"
echo t_dump_load.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# include a largish file in the dump, so we can test for iostream breakage on
# MinGW wrt sync_with_stdio().
$at_traceoff
echo "$at_srcdir/t_dump_load.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add largish"
echo t_dump_load.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add largish" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add largish ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add largish ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_dump_load.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah"
echo t_dump_load.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# run a db analyze so that SQLite creates any internal tables and indices,
# because we want to make sure we don't attempt to dump and load these.
$at_traceoff
echo "$at_srcdir/t_dump_load.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db execute 'analyze;'"
echo t_dump_load.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute 'analyze;'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute 'analyze;' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute 'analyze;' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_dump_load.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db dump"
echo t_dump_load.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db dump" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db dump ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db dump ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_dump_load.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db load <stdout --db=test2.db"
echo t_dump_load.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load <stdout --db=test2.db" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load <stdout --db=test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load <stdout --db=test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_dump_load.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db ls keys"
echo t_dump_load.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_dump_load.at:27: mv stdout expout"
echo t_dump_load.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_dump_load.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db ls keys"
echo t_dump_load.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



REVS=`$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete revision ""`
for R in $REVS; do

$at_traceoff
echo "$at_srcdir/t_dump_load.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate certs \$R"
echo t_dump_load.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate certs $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate certs $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate certs $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_dump_load.at:27: mv stdout expout"
echo t_dump_load.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_dump_load.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate certs \$R"
echo t_dump_load.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate certs $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate certs $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate certs $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_dump_load.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_revision \$R"
echo t_dump_load.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_revision $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_revision $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_revision $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_dump_load.at:27: mv stdout expout"
echo t_dump_load.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_dump_load.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_revision \$R"
echo t_dump_load.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_revision $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_revision $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_revision $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_dump_load.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_manifest_of \$R"
echo t_dump_load.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_manifest_of $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_dump_load.at:27: mv stdout expout"
echo t_dump_load.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_dump_load.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_manifest_of \$R"
echo t_dump_load.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_manifest_of $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


done


$at_traceoff
echo "$at_srcdir/t_dump_load.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete file \"\""
echo t_dump_load.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete file \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete file "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete file "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_dump_load.at:27: mv stdout expout"
echo t_dump_load.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_dump_load.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db complete file \"\""
echo t_dump_load.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db complete file \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db complete file "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db complete file "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


FILES=`$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete file ""`
for F in $FILES; do

$at_traceoff
echo "$at_srcdir/t_dump_load.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_file \$F"
echo t_dump_load.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_file $F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_file $F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_file $F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_dump_load.at:27: mv stdout expout"
echo t_dump_load.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_dump_load.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_file \$F"
echo t_dump_load.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_file $F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_file $F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_file $F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dump_load.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


done


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  75 ) # 75. t_no_change_deltas.at:1: no-change deltas disappear
    at_setup_line='t_no_change_deltas.at:1'
    at_desc='no-change deltas disappear'
    $at_quiet $ECHO_N " 75: no-change deltas disappear                   $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "75. t_no_change_deltas.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_no_change_deltas.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_no_change_deltas.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_change_deltas.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_change_deltas.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_no_change_deltas.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_change_deltas.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_change_deltas.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_no_change_deltas.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_change_deltas.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_change_deltas.at:2: rm test_keys"
echo t_no_change_deltas.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_change_deltas.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# If we have a changeset representing a reversion, like
#    changeset_1:   patch "a" [id1] -> [id2]
#    changeset_2:   patch "a" [id2] -> [id1]
# then concatenating these revisions should _not_ create a changeset
# like
#    changeset_c:   patch "a" [id1] -> [id1]


cat >testfile <<'_ATEOF'
version 1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_no_change_deltas.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_no_change_deltas.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_change_deltas.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >start_file <<'_ATEOF'
start file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_no_change_deltas.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add start_file"
echo t_no_change_deltas.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add start_file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add start_file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add start_file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_change_deltas.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_no_change_deltas.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_no_change_deltas.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_change_deltas.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


BASE=`cat _MTN/revision`
BASE_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
BASE_OTHER_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify start_file`


cat >testfile <<'_ATEOF'
version 2
_ATEOF



$at_traceoff
echo "$at_srcdir/t_no_change_deltas.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_no_change_deltas.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_change_deltas.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
version 1
_ATEOF



cat >end_file <<'_ATEOF'
end file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_no_change_deltas.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add end_file"
echo t_no_change_deltas.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add end_file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add end_file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add end_file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_change_deltas.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_no_change_deltas.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop start_file"
echo t_no_change_deltas.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop start_file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop start_file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop start_file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_change_deltas.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_no_change_deltas.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_no_change_deltas.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_change_deltas.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


NEW=`cat _MTN/revision`
NEW_F_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
NEW_OTHER_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify end_file`

$at_traceoff
echo "$at_srcdir/t_no_change_deltas.at:35: test \$BASE_F_SHA = \$NEW_F_SHA"
echo t_no_change_deltas.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $BASE_F_SHA = $NEW_F_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $BASE_F_SHA = $NEW_F_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $BASE_F_SHA = $NEW_F_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_change_deltas.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_no_change_deltas.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff --revision \$BASE --revision \$NEW"
echo t_no_change_deltas.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision $BASE --revision $NEW" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision $BASE --revision $NEW ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision $BASE --revision $NEW ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_change_deltas.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_change_deltas.at:38: grep \$NEW_OTHER_SHA stdout >/dev/null"
echo t_no_change_deltas.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $NEW_OTHER_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $NEW_OTHER_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $NEW_OTHER_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_change_deltas.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_change_deltas.at:39: grep \$BASE_F_SHA stdout >/dev/null"
echo t_no_change_deltas.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $BASE_F_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $BASE_F_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $BASE_F_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_no_change_deltas.at:39: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_change_deltas.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff --revision \$NEW --revision \$BASE"
echo t_no_change_deltas.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision $NEW --revision $BASE" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision $NEW --revision $BASE ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision $NEW --revision $BASE ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_change_deltas.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_change_deltas.at:41: grep \$BASE_OTHER_SHA stdout >/dev/null"
echo t_no_change_deltas.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $BASE_OTHER_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $BASE_OTHER_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $BASE_OTHER_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_change_deltas.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_change_deltas.at:42: grep \$BASE_F_SHA stdout >/dev/null"
echo t_no_change_deltas.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $BASE_F_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $BASE_F_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $BASE_F_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_no_change_deltas.at:42: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  76 ) # 76. t_drop_rename_patch.at:1: merge(<>, <drop a, rename b a, patch a>)
    at_setup_line='t_drop_rename_patch.at:1'
    at_desc='merge(<>, <drop a, rename b a, patch a>)'
    $at_quiet $ECHO_N " 76: merge(<>, <drop a, rename b a, patch a>)     $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "76. t_drop_rename_patch.at:1: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_drop_rename_patch.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_drop_rename_patch.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_rename_patch.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_rename_patch.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_drop_rename_patch.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_rename_patch.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_rename_patch.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_drop_rename_patch.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_rename_patch.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_rename_patch.at:3: rm test_keys"
echo t_drop_rename_patch.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_rename_patch.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >v1a <<'_ATEOF'
foo blah
_ATEOF

cat >v1b <<'_ATEOF'
bar blah
_ATEOF

cat >v2a <<'_ATEOF'
baz blah
_ATEOF


$at_traceoff
echo "$at_srcdir/t_drop_rename_patch.at:12: cp v1a testfile"
echo t_drop_rename_patch.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp v1a testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp v1a testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_rename_patch.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_rename_patch.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_drop_rename_patch.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_rename_patch.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >renamefile <<'_ATEOF'
this will be overwritten
_ATEOF

$at_traceoff
echo "$at_srcdir/t_drop_rename_patch.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add renamefile"
echo t_drop_rename_patch.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add renamefile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add renamefile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add renamefile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_rename_patch.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_drop_rename_patch.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add renamefile"
echo t_drop_rename_patch.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add renamefile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add renamefile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add renamefile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_rename_patch.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_drop_rename_patch.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_drop_rename_patch.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_rename_patch.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


BASE_R_SHA=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_drop_rename_patch.at:20: rm -f testfile"
echo t_drop_rename_patch.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_rename_patch.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_rename_patch.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop testfile"
echo t_drop_rename_patch.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_rename_patch.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_rename_patch.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename renamefile testfile"
echo t_drop_rename_patch.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename renamefile testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename renamefile testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename renamefile testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_rename_patch.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_rename_patch.at:23: mv renamefile testfile"
echo t_drop_rename_patch.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv renamefile testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv renamefile testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_rename_patch.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_drop_rename_patch.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_drop_rename_patch.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_rename_patch.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_drop_rename_patch.at:26: cp v2a testfile"
echo t_drop_rename_patch.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp v2a testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp v2a testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_rename_patch.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_drop_rename_patch.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_drop_rename_patch.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_rename_patch.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_drop_rename_patch.at:29: rm -rf _MTN.old"
echo t_drop_rename_patch.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_rename_patch.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_rename_patch.at:29: mv  _MTN _MTN.old"
echo t_drop_rename_patch.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_rename_patch.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_rename_patch.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE_R_SHA ."
echo t_drop_rename_patch.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_rename_patch.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_drop_rename_patch.at:29: test \$PROBE_R_SHA = \$BASE_R_SHA"
echo t_drop_rename_patch.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_rename_patch.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >otherfile <<'_ATEOF'
this space for rent
_ATEOF

$at_traceoff
echo "$at_srcdir/t_drop_rename_patch.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add otherfile"
echo t_drop_rename_patch.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_rename_patch.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_drop_rename_patch.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_drop_rename_patch.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_rename_patch.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_drop_rename_patch.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge"
echo t_drop_rename_patch.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_rename_patch.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_rename_patch.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_drop_rename_patch.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_rename_patch.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_rename_patch.at:37: cmp testfile v2a"
echo t_drop_rename_patch.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile v2a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile v2a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_rename_patch.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  77 ) # 77. t_cmdline_options.at:1: verification of command line options
    at_setup_line='t_cmdline_options.at:1'
    at_desc='verification of command line options'
    $at_quiet $ECHO_N " 77: verification of command line options         $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "77. t_cmdline_options.at:1: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_cmdline_options.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_cmdline_options.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cmdline_options.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cmdline_options.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_cmdline_options.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cmdline_options.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cmdline_options.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_cmdline_options.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cmdline_options.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cmdline_options.at:3: rm test_keys"
echo t_cmdline_options.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cmdline_options.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_cmdline_options.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net"
echo t_cmdline_options.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_cmdline_options.at:5: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cmdline_options.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --norc"
echo t_cmdline_options.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --norc" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --norc ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --norc ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_cmdline_options.at:6: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cmdline_options.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=test_hooks.lua"
echo t_cmdline_options.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=test_hooks.lua" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=test_hooks.lua ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=test_hooks.lua ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_cmdline_options.at:7: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_cmdline_options.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --unknown-option"
echo t_cmdline_options.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --unknown-option" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --unknown-option ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --unknown-option ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_cmdline_options.at:9: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cmdline_options.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile"
echo t_cmdline_options.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_cmdline_options.at:10: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  78 ) # 78. t_log_nonexistent.at:1: log hides deleted/renamed files
    at_setup_line='t_log_nonexistent.at:1'
    at_desc='log hides deleted/renamed files'
    $at_quiet $ECHO_N " 78: log hides deleted/renamed files              $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "78. t_log_nonexistent.at:1: testing ..."
      $at_traceon


# This test checks that 'mtn log' of deleted and renamed files shows
# nothing in a further revision, as they are not applicable any more.



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_log_nonexistent.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_log_nonexistent.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nonexistent.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_nonexistent.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_log_nonexistent.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nonexistent.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_nonexistent.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_log_nonexistent.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nonexistent.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_nonexistent.at:6: rm test_keys"
echo t_log_nonexistent.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nonexistent.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >foo <<'_ATEOF'
foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_log_nonexistent.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_log_nonexistent.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nonexistent.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_nonexistent.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message \"Addition of foo.\""
echo t_log_nonexistent.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message \"Addition of foo.\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message "Addition of foo." ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message "Addition of foo." ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nonexistent.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >bar <<'_ATEOF'
bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_log_nonexistent.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add bar"
echo t_log_nonexistent.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nonexistent.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_nonexistent.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message \"Addition of bar.\""
echo t_log_nonexistent.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message \"Addition of bar.\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message "Addition of bar." ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message "Addition of bar." ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nonexistent.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >baz <<'_ATEOF'
baz
_ATEOF

$at_traceoff
echo "$at_srcdir/t_log_nonexistent.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add baz"
echo t_log_nonexistent.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add baz" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add baz ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add baz ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nonexistent.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_nonexistent.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message \"Addition of baz.\""
echo t_log_nonexistent.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message \"Addition of baz.\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message "Addition of baz." ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message "Addition of baz." ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nonexistent.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_nonexistent.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop bar baz"
echo t_log_nonexistent.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop bar baz" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop bar baz ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop bar baz ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nonexistent.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_nonexistent.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_log_nonexistent.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nonexistent.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


rm -f bar baz

mv foo bar
$at_traceoff
echo "$at_srcdir/t_log_nonexistent.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename foo bar"
echo t_log_nonexistent.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nonexistent.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_nonexistent.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_log_nonexistent.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nonexistent.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_log_nonexistent.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log foo"
echo t_log_nonexistent.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_log_nonexistent.at:31: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_nonexistent.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log baz"
echo t_log_nonexistent.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log baz" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log baz ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log baz ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_log_nonexistent.at:33: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_nonexistent.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log bar | grep \"^Addition of [a-z][a-z][a-z].\$\""
echo t_log_nonexistent.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log bar | grep \"^Addition of [a-z][a-z][a-z].$\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log bar | grep "^Addition of [a-z][a-z][a-z].$" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log bar | grep "^Addition of [a-z][a-z][a-z].$" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo >>"$at_stdout"; echo "Addition of foo.
" | $at_diff - "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nonexistent.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_nonexistent.at:44: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log | grep \"^Addition of [a-z][a-z][a-z].\$\""
echo t_log_nonexistent.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log | grep \"^Addition of [a-z][a-z][a-z].$\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log | grep "^Addition of [a-z][a-z][a-z].$" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log | grep "^Addition of [a-z][a-z][a-z].$" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo >>"$at_stdout"; echo "Addition of baz.
Addition of bar.
Addition of foo.
" | $at_diff - "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nonexistent.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  79 ) # 79. t_crlf.at:1: CRLF line normalization
    at_setup_line='t_crlf.at:1'
    at_desc='CRLF line normalization'
    $at_quiet $ECHO_N " 79: CRLF line normalization                      $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "79. t_crlf.at:1: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_crlf.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_crlf.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_crlf.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_crlf.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_crlf.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_crlf.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_crlf.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_crlf.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_crlf.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_crlf.at:3: rm test_keys"
echo t_crlf.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_crlf.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_crlf.at:5: printf \"a\\r\\nb\\r\\nc\\r\\nd\\r\\n\""
echo t_crlf.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; printf "a\r\nb\r\nc\r\nd\r\n" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; printf "a\r\nb\r\nc\r\nd\r\n" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_crlf.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_crlf.at:6: cp stdout test.crlf"
echo t_crlf.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout test.crlf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout test.crlf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_crlf.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_crlf.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add test.crlf"
echo t_crlf.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add test.crlf" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add test.crlf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add test.crlf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_crlf.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_crlf.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_crlf.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_crlf.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_crlf.at:10: printf \"a\\r\\nb\\r\\nnew line!\\r\\nc\\r\\nd\\r\\n\""
echo t_crlf.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; printf "a\r\nb\r\nnew line!\r\nc\r\nd\r\n" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; printf "a\r\nb\r\nnew line!\r\nc\r\nd\r\n" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_crlf.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_crlf.at:11: cp stdout test.crlf"
echo t_crlf.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout test.crlf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout test.crlf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_crlf.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_crlf.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff"
echo t_crlf.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_crlf.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

LINES=`wc -l <stdout`
$at_traceoff
echo "$at_srcdir/t_crlf.at:15: test \$LINES -eq 16"
echo t_crlf.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $LINES -eq 16" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $LINES -eq 16 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $LINES -eq 16 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_crlf.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  80 ) # 80. t_netsync_diffbranch.at:1: pull a netsync branch which has a parent from another branch
    at_setup_line='t_netsync_diffbranch.at:1'
    at_desc='pull a netsync branch which has a parent from another branch'
    $at_quiet $ECHO_N " 80: pull a netsync branch which has a parent from another branch$ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "80. t_netsync_diffbranch.at:1: testing ..."
      $at_traceon






# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_netsync_diffbranch.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_netsync_diffbranch.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_diffbranch.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_diffbranch.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_netsync_diffbranch.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_diffbranch.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_diffbranch.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_netsync_diffbranch.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_diffbranch.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_diffbranch.at:5: rm test_keys"
echo t_netsync_diffbranch.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_diffbranch.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_netsync_diffbranch.at:6: cp test.db test2.db"
echo t_netsync_diffbranch.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_diffbranch.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_diffbranch.at:6: cp -r keys/ keys2"
echo t_netsync_diffbranch.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_diffbranch.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_diffbranch.at:6: cp test.db test3.db"
echo t_netsync_diffbranch.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_diffbranch.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_diffbranch.at:6: cp -r keys/ keys3"
echo t_netsync_diffbranch.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_diffbranch.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT




cat >testfile <<'_ATEOF'
blah stuff
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_diffbranch.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_netsync_diffbranch.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_diffbranch.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_diffbranch.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_netsync_diffbranch.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_diffbranch.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


VER0=`cat _MTN/revision`


cat >testfile2 <<'_ATEOF'
some more data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_diffbranch.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile2"
echo t_netsync_diffbranch.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_diffbranch.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_diffbranch.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah"
echo t_netsync_diffbranch.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_diffbranch.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


VER1=`cat _MTN/revision`




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve otherbranch &
sleep 4



$at_traceoff
echo "$at_srcdir/t_netsync_diffbranch.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT otherbranch"
echo t_netsync_diffbranch.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT otherbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT otherbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT otherbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_diffbranch.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null





$at_traceoff
echo "$at_srcdir/t_netsync_diffbranch.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls certs \$VER1"
echo t_netsync_diffbranch.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $VER1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $VER1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $VER1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_diffbranch.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_diffbranch.at:20: mv stdout expout"
echo t_netsync_diffbranch.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_diffbranch.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_diffbranch.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs \$VER1"
echo t_netsync_diffbranch.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_diffbranch.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  81 ) # 81. t_netsync_nocerts.at:1: (normal) netsync revision with no certs
    at_setup_line='t_netsync_nocerts.at:1'
    at_desc='(normal) netsync revision with no certs'
    $at_quiet $ECHO_N " 81: (normal) netsync revision with no certs      $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "81. t_netsync_nocerts.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_netsync_nocerts.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_netsync_nocerts.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_nocerts.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_nocerts.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_netsync_nocerts.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_nocerts.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_nocerts.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_netsync_nocerts.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_nocerts.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_nocerts.at:2: rm test_keys"
echo t_netsync_nocerts.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_nocerts.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_netsync_nocerts.at:3: cp test.db test2.db"
echo t_netsync_nocerts.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_nocerts.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_nocerts.at:3: cp -r keys/ keys2"
echo t_netsync_nocerts.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_nocerts.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_nocerts.at:3: cp test.db test3.db"
echo t_netsync_nocerts.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_nocerts.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_nocerts.at:3: cp -r keys/ keys3"
echo t_netsync_nocerts.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_nocerts.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT




cat >testfile <<'_ATEOF'
blah stuff
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_nocerts.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_netsync_nocerts.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_nocerts.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_nocerts.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_netsync_nocerts.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_nocerts.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


VER0=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_netsync_nocerts.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db execute 'delete from revision_certs'"
echo t_netsync_nocerts.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute 'delete from revision_certs'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute 'delete from revision_certs' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute 'delete from revision_certs' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_nocerts.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
other stuff
_ATEOF



$at_traceoff
echo "$at_srcdir/t_netsync_nocerts.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_netsync_nocerts.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_nocerts.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


VER1=`cat _MTN/revision`




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4



$at_traceoff
echo "$at_srcdir/t_netsync_nocerts.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_netsync_nocerts.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_nocerts.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null





$at_traceoff
echo "$at_srcdir/t_netsync_nocerts.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision \$VER0"
echo t_netsync_nocerts.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $VER0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $VER0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $VER0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_nocerts.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_nocerts.at:19: mv stdout expout"
echo t_netsync_nocerts.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_nocerts.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_nocerts.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$VER0"
echo t_netsync_nocerts.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $VER0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $VER0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $VER0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_nocerts.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_nocerts.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls certs \$VER0"
echo t_netsync_nocerts.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $VER0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $VER0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $VER0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_nocerts.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_nocerts.at:20: mv stdout expout"
echo t_netsync_nocerts.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_nocerts.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_nocerts.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs \$VER0"
echo t_netsync_nocerts.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_nocerts.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_nocerts.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision \$VER1"
echo t_netsync_nocerts.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $VER1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $VER1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $VER1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_nocerts.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_nocerts.at:21: mv stdout expout"
echo t_netsync_nocerts.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_nocerts.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_nocerts.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$VER1"
echo t_netsync_nocerts.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $VER1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $VER1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $VER1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_nocerts.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_nocerts.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls certs \$VER1"
echo t_netsync_nocerts.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $VER1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $VER1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $VER1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_nocerts.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_nocerts.at:22: mv stdout expout"
echo t_netsync_nocerts.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_nocerts.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_nocerts.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs \$VER1"
echo t_netsync_nocerts.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $VER1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_nocerts.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  82 ) # 82. t_check_same_db_contents.at:1: check_same_db_contents macro
    at_setup_line='t_check_same_db_contents.at:1'
    at_desc='check_same_db_contents macro'
    $at_quiet $ECHO_N " 82: check_same_db_contents macro                 $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "82. t_check_same_db_contents.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_check_same_db_contents.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_check_same_db_contents.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_check_same_db_contents.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:2: rm test_keys"
echo t_check_same_db_contents.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# this test just tests that the testsuite macro CHECK_SAME_DB_CONTENTS works,
# because other tests depend on that.


cat >testfile <<'_ATEOF'
blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_check_same_db_contents.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch1 commit --message blah-blah"
echo t_check_same_db_contents.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch1 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile2 <<'_ATEOF'
foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile2"
echo t_check_same_db_contents.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch2 commit --message blah-blah"
echo t_check_same_db_contents.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch2 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:15: cp test.db test2.db"
echo t_check_same_db_contents.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db ls keys"
echo t_check_same_db_contents.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:16: mv stdout expout"
echo t_check_same_db_contents.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db ls keys"
echo t_check_same_db_contents.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



REVS=`$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete revision ""`
for R in $REVS; do

$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate certs \$R"
echo t_check_same_db_contents.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate certs $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate certs $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate certs $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:16: mv stdout expout"
echo t_check_same_db_contents.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate certs \$R"
echo t_check_same_db_contents.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate certs $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate certs $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate certs $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_revision \$R"
echo t_check_same_db_contents.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_revision $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_revision $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_revision $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:16: mv stdout expout"
echo t_check_same_db_contents.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_revision \$R"
echo t_check_same_db_contents.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_revision $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_revision $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_revision $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_manifest_of \$R"
echo t_check_same_db_contents.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_manifest_of $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:16: mv stdout expout"
echo t_check_same_db_contents.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_manifest_of \$R"
echo t_check_same_db_contents.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_manifest_of $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


done


$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete file \"\""
echo t_check_same_db_contents.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete file \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete file "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete file "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:16: mv stdout expout"
echo t_check_same_db_contents.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db complete file \"\""
echo t_check_same_db_contents.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db complete file \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db complete file "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db complete file "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


FILES=`$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete file ""`
for F in $FILES; do

$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_file \$F"
echo t_check_same_db_contents.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_file $F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_file $F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_file $F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:16: mv stdout expout"
echo t_check_same_db_contents.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_check_same_db_contents.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_file \$F"
echo t_check_same_db_contents.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_file $F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_file $F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_file $F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_same_db_contents.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


done


# Really really should have a test that after modifying one of the dbs, the
# macro detects the difference, but I can't figure out how to write that in
# autotest.

      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  83 ) # 83. t_merge_ancestor.at:1: merge rev with ancestor
    at_setup_line='t_merge_ancestor.at:1'
    at_desc='merge rev with ancestor'
    $at_quiet $ECHO_N " 83: merge rev with ancestor                      $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "83. t_merge_ancestor.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge_ancestor.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_merge_ancestor.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_ancestor.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_ancestor.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_merge_ancestor.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_ancestor.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_ancestor.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_merge_ancestor.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_ancestor.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_ancestor.at:2: rm test_keys"
echo t_merge_ancestor.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_ancestor.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# The idea here is that if we have, say, A -> B -> C, then merging A
# and C should not be possible, because it creates a weird graph with
# no clear meaning.


cat >testfile <<'_ATEOF'
0
_ATEOF

$at_traceoff
echo "$at_srcdir/t_merge_ancestor.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_merge_ancestor.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_ancestor.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_ancestor.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge_ancestor.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_ancestor.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV0=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
1
_ATEOF



$at_traceoff
echo "$at_srcdir/t_merge_ancestor.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge_ancestor.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_ancestor.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV1=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
2
_ATEOF



$at_traceoff
echo "$at_srcdir/t_merge_ancestor.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge_ancestor.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_ancestor.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV2=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_merge_ancestor.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net explicit_merge \$REV0 \$REV1 testbranch"
echo t_merge_ancestor.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV0 $REV1 testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV0 $REV1 testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV0 $REV1 testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_merge_ancestor.at:23: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_ancestor.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net explicit_merge \$REV1 \$REV0 testbranch"
echo t_merge_ancestor.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV1 $REV0 testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV1 $REV0 testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV1 $REV0 testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_merge_ancestor.at:24: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  84 ) # 84. t_propagate_desc.at:1: propagate a descendent
    at_setup_line='t_propagate_desc.at:1'
    at_desc='propagate a descendent'
    $at_quiet $ECHO_N " 84: propagate a descendent                       $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "84. t_propagate_desc.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_propagate_desc.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_propagate_desc.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_desc.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_desc.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_propagate_desc.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_desc.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_desc.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_propagate_desc.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_desc.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_desc.at:2: rm test_keys"
echo t_propagate_desc.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_desc.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This tests the case where we have something like A1 -> A2 -> B1 ->
# B2, where A and B are different branches, and the user propagates B
# to A.  The result should be B2 being certed into branch A, with no
# merge performed.


cat >testfile <<'_ATEOF'
foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_propagate_desc.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_propagate_desc.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_desc.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_propagate_desc.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message blah-blah"
echo t_propagate_desc.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_desc.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
bar
_ATEOF



$at_traceoff
echo "$at_srcdir/t_propagate_desc.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message blah-blah"
echo t_propagate_desc.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_desc.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


A_HEAD_REV=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
baz
_ATEOF



$at_traceoff
echo "$at_srcdir/t_propagate_desc.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=b commit --message blah-blah"
echo t_propagate_desc.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=b commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=b commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=b commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_desc.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
quux
_ATEOF



$at_traceoff
echo "$at_srcdir/t_propagate_desc.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=b commit --message blah-blah"
echo t_propagate_desc.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=b commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=b commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=b commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_desc.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


B_HEAD_REV=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_propagate_desc.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net propagate b a"
echo t_propagate_desc.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate b a" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate b a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate b a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_desc.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_desc.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net heads --branch=b"
echo t_propagate_desc.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net heads --branch=b" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net heads --branch=b ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net heads --branch=b ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_desc.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_desc.at:29: grep \$B_HEAD_REV stdout >/dev/null"
echo t_propagate_desc.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $B_HEAD_REV stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $B_HEAD_REV stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $B_HEAD_REV stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_desc.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_desc.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net heads --branch=a"
echo t_propagate_desc.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net heads --branch=a" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net heads --branch=a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net heads --branch=a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_desc.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_desc.at:31: grep \$B_HEAD_REV stdout >/dev/null"
echo t_propagate_desc.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $B_HEAD_REV stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $B_HEAD_REV stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $B_HEAD_REV stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_desc.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  85 ) # 85. t_propagate_anc.at:1: propagate an ancestor
    at_setup_line='t_propagate_anc.at:1'
    at_desc='propagate an ancestor'
    $at_quiet $ECHO_N " 85: propagate an ancestor                        $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "85. t_propagate_anc.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_propagate_anc.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_propagate_anc.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_propagate_anc.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:2: rm test_keys"
echo t_propagate_anc.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This tests the case where we have something like A1 -> A2 -> B1 ->
# B2, where A and B are different branches, and the user propagates A
# to B.  This should be a no-op; no merge should be performed.

# The same applies when the heads of A and B are actually equal.


cat >testfile <<'_ATEOF'
foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_propagate_anc.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message blah-blah"
echo t_propagate_anc.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
bar
_ATEOF



$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message blah-blah"
echo t_propagate_anc.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


A_HEAD_REV=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
baz
_ATEOF



$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=b commit --message blah-blah"
echo t_propagate_anc.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=b commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=b commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=b commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
quux
_ATEOF



$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=b commit --message blah-blah"
echo t_propagate_anc.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=b commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=b commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=b commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


B_HEAD_REV=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:28: cp test.db test2.db"
echo t_propagate_anc.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net propagate a b"
echo t_propagate_anc.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate a b" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate a b ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate a b ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db ls keys"
echo t_propagate_anc.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:31: mv stdout expout"
echo t_propagate_anc.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db ls keys"
echo t_propagate_anc.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



REVS=`$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete revision ""`
for R in $REVS; do

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate certs \$R"
echo t_propagate_anc.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate certs $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate certs $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate certs $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:31: mv stdout expout"
echo t_propagate_anc.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate certs \$R"
echo t_propagate_anc.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate certs $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate certs $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate certs $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_revision \$R"
echo t_propagate_anc.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_revision $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_revision $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_revision $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:31: mv stdout expout"
echo t_propagate_anc.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_revision \$R"
echo t_propagate_anc.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_revision $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_revision $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_revision $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_manifest_of \$R"
echo t_propagate_anc.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_manifest_of $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:31: mv stdout expout"
echo t_propagate_anc.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_manifest_of \$R"
echo t_propagate_anc.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_manifest_of $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


done


$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete file \"\""
echo t_propagate_anc.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete file \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete file "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete file "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:31: mv stdout expout"
echo t_propagate_anc.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db complete file \"\""
echo t_propagate_anc.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db complete file \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db complete file "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db complete file "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


FILES=`$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete file ""`
for F in $FILES; do

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_file \$F"
echo t_propagate_anc.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_file $F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_file $F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_file $F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:31: mv stdout expout"
echo t_propagate_anc.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_file \$F"
echo t_propagate_anc.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_file $F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_file $F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_file $F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


done


$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net cert \$B_HEAD_REV branch c"
echo t_propagate_anc.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $B_HEAD_REV branch c" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $B_HEAD_REV branch c ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $B_HEAD_REV branch c ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:34: cp test.db test3.db"
echo t_propagate_anc.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net propagate b c"
echo t_propagate_anc.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate b c" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate b c ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate b c ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db ls keys"
echo t_propagate_anc.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:37: mv stdout expout"
echo t_propagate_anc.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db ls keys"
echo t_propagate_anc.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



REVS=`$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete revision ""`
for R in $REVS; do

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate certs \$R"
echo t_propagate_anc.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate certs $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate certs $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate certs $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:37: mv stdout expout"
echo t_propagate_anc.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db automate certs \$R"
echo t_propagate_anc.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db automate certs $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db automate certs $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db automate certs $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_revision \$R"
echo t_propagate_anc.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_revision $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_revision $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_revision $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:37: mv stdout expout"
echo t_propagate_anc.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db automate get_revision \$R"
echo t_propagate_anc.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db automate get_revision $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db automate get_revision $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db automate get_revision $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_manifest_of \$R"
echo t_propagate_anc.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_manifest_of $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:37: mv stdout expout"
echo t_propagate_anc.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db automate get_manifest_of \$R"
echo t_propagate_anc.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db automate get_manifest_of $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


done


$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete file \"\""
echo t_propagate_anc.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete file \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete file "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete file "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:37: mv stdout expout"
echo t_propagate_anc.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db complete file \"\""
echo t_propagate_anc.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db complete file \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db complete file "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db complete file "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


FILES=`$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete file ""`
for F in $FILES; do

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_file \$F"
echo t_propagate_anc.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_file $F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_file $F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_file $F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:37: mv stdout expout"
echo t_propagate_anc.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_propagate_anc.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db automate get_file \$F"
echo t_propagate_anc.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db automate get_file $F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db automate get_file $F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db automate get_file $F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_propagate_anc.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


done


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  86 ) # 86. t_status_missing.at:1: status with missing files
    at_setup_line='t_status_missing.at:1'
    at_desc='status with missing files'
    $at_quiet $ECHO_N " 86: status with missing files                    $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "86. t_status_missing.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_status_missing.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_status_missing.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status_missing.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status_missing.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_status_missing.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status_missing.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status_missing.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_status_missing.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status_missing.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status_missing.at:2: rm test_keys"
echo t_status_missing.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status_missing.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile1 <<'_ATEOF'
foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_status_missing.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile1"
echo t_status_missing.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status_missing.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile2 <<'_ATEOF'
bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_status_missing.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile2"
echo t_status_missing.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status_missing.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_status_missing.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_status_missing.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status_missing.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_status_missing.at:10: rm -f testfile1"
echo t_status_missing.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f testfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f testfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status_missing.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status_missing.at:11: rm -f testfile2"
echo t_status_missing.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status_missing.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# status should successfully report on the status of things regardless
# of the status of those things -- i.e. it should report missing files
# as such rather than failing on them.

# status should list all missing files before failing
# if/when there are missing files

$at_traceoff
echo "$at_srcdir/t_status_missing.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_status_missing.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_status_missing.at:20: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status_missing.at:21: grep testfile1 stderr"
echo t_status_missing.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile1 stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile1 stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status_missing.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status_missing.at:22: grep testfile2 stderr"
echo t_status_missing.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile2 stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile2 stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status_missing.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  87 ) # 87. t_persistent_server_keys_2.at:1: (imp) persistent netsync server - keys 2
    at_setup_line='t_persistent_server_keys_2.at:1'
    at_desc='(imp) persistent netsync server - keys 2'
    $at_quiet $ECHO_N " 87: (imp) persistent netsync server - keys 2     $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "87. t_persistent_server_keys_2.at:1: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_persistent_server_keys_2.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_persistent_server_keys_2.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys_2.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_keys_2.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_persistent_server_keys_2.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys_2.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_keys_2.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_persistent_server_keys_2.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys_2.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_keys_2.at:3: rm test_keys"
echo t_persistent_server_keys_2.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys_2.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_persistent_server_keys_2.at:4: cp test.db test2.db"
echo t_persistent_server_keys_2.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys_2.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_keys_2.at:4: cp -r keys/ keys2"
echo t_persistent_server_keys_2.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys_2.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_keys_2.at:4: cp test.db test3.db"
echo t_persistent_server_keys_2.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys_2.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_keys_2.at:4: cp -r keys/ keys3"
echo t_persistent_server_keys_2.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys_2.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT



# This tests a somewhat subtle version of how public keys are handled
# with netsync.  The rule is, we serve a key if we're serving any cert
# signed by that key.  The question is, if when we boot up the server
# we already have the key in question, but it isn't signing any such
# certs, but _then we get pushed such a cert_, do we push out the key
# on further netsyncs?

# We create a key in database 2, read the public key into database 1,
# then start database 1 serving.  Then we push a cert into database 1
# signed by the key, and we pull into database 3.

$at_traceoff
echo "$at_srcdir/t_persistent_server_keys_2.at:17: (echo foo@bar; echo foo@bar) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 genkey foo@bar"
echo t_persistent_server_keys_2.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo foo@bar; echo foo@bar) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 genkey foo@bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo foo@bar; echo foo@bar) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 genkey foo@bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo foo@bar; echo foo@bar) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 genkey foo@bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys_2.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_keys_2.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pubkey foo@bar | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read"
echo t_persistent_server_keys_2.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pubkey foo@bar | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pubkey foo@bar | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pubkey foo@bar | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys_2.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo <<'_ATEOF'
data data blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_persistent_server_keys_2.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_persistent_server_keys_2.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys_2.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_persistent_server_keys_2.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 status"
echo t_persistent_server_keys_2.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys_2.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_keys_2.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --key=foo@bar --branch=testbranch -m 'commit foo'"
echo t_persistent_server_keys_2.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --key=foo@bar --branch=testbranch -m 'commit foo'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --key=foo@bar --branch=testbranch -m 'commit foo' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --key=foo@bar --branch=testbranch -m 'commit foo' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys_2.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4


$at_traceoff
echo "$at_srcdir/t_persistent_server_keys_2.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:\$_PORT testbranch"
echo t_persistent_server_keys_2.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys_2.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_persistent_server_keys_2.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_persistent_server_keys_2.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys_2.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



$at_traceoff
echo "$at_srcdir/t_persistent_server_keys_2.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls keys"
echo t_persistent_server_keys_2.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys_2.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_persistent_server_keys_2.at:31: grep foo@bar stdout >/dev/null"
echo t_persistent_server_keys_2.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foo@bar stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foo@bar stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_persistent_server_keys_2.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  88 ) # 88. t_update_1.at:1: update 1
    at_setup_line='t_update_1.at:1'
    at_desc='update 1'
    $at_quiet $ECHO_N " 88: update 1                                     $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "88. t_update_1.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_update_1.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_update_1.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_1.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_1.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_update_1.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_1.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_1.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_update_1.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_1.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_1.at:2: rm test_keys"
echo t_update_1.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_1.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# We have A1 -> B1, A and B different branches.  Update from A1
# shouldn't take us to B1.  Then propagate B -> A, and update from A1;
# now this should take us to B1.


cat >testfile <<'_ATEOF'
stuff stuff
_ATEOF

$at_traceoff
echo "$at_srcdir/t_update_1.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_update_1.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_1.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_update_1.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message blah-blah"
echo t_update_1.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_1.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


A1_SHA=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
nonsense nonsense
_ATEOF



$at_traceoff
echo "$at_srcdir/t_update_1.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=b commit --message blah-blah"
echo t_update_1.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=b commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=b commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=b commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_1.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


B1_SHA=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_update_1.at:18: rm -rf _MTN.old"
echo t_update_1.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_1.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_1.at:18: mv  _MTN _MTN.old"
echo t_update_1.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_1.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_1.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$A1_SHA ."
echo t_update_1.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A1_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A1_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A1_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_1.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_update_1.at:18: test \$PROBE_R_SHA = \$A1_SHA"
echo t_update_1.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $A1_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $A1_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $A1_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_1.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Put in an explicit --branch, because REVERT_TO is not smart about
# such things.
$at_traceoff
echo "$at_srcdir/t_update_1.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=a update"
echo t_update_1.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_1.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_1.at:22: test \$A1_SHA = \`cat _MTN/revision\`"
echo t_update_1.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $A1_SHA = `cat _MTN/revision` ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $A1_SHA = `cat _MTN/revision` ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_1.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_update_1.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net propagate b a"
echo t_update_1.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate b a" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate b a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate b a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_1.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_update_1.at:26: rm -rf _MTN.old"
echo t_update_1.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_1.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_1.at:26: mv  _MTN _MTN.old"
echo t_update_1.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_1.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_1.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$A1_SHA ."
echo t_update_1.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A1_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A1_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A1_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_1.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_update_1.at:26: test \$PROBE_R_SHA = \$A1_SHA"
echo t_update_1.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $A1_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $A1_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $A1_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_1.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Put in an explicit --branch, because REVERT_TO is not smart about
# such things.
$at_traceoff
echo "$at_srcdir/t_update_1.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=a update"
echo t_update_1.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=a update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_1.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_1.at:30: test \$B1_SHA = \`cat _MTN/revision\`"
echo t_update_1.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $B1_SHA = `cat _MTN/revision` ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $B1_SHA = `cat _MTN/revision` ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_1.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  89 ) # 89. t_vcheck.at:1: (todo) vcheck
    at_setup_line='t_vcheck.at:1'
    at_desc='(todo) vcheck'
    $at_quiet $ECHO_N " 89: (todo) vcheck                                $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "89. t_vcheck.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_vcheck.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_vcheck.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_vcheck.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_vcheck.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_vcheck.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_vcheck.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_vcheck.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_vcheck.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_vcheck.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_vcheck.at:2: rm test_keys"
echo t_vcheck.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_vcheck.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This test is a bug report.


# There used to be a command 'vcheck', that defended against the
# chance of (accidental or malicious) SHA1 collision.  The way it did
# this was by putting certs named "vcheck" on manifests, and these
# certs contained a re-hash of that manifest with a nonce attached.
# (So a MAC, basically.)  The idea being that even if two manifests
# had the same SHA1, they wouldn't have the same salted SHA1.

# This functionality is mostly useful for reassuring people's
# irrational fears, but hey, that's a useful thing to do.  (This does,
# though, probably mean that any replacement should have 0 overhead
# for people who _aren't_ worried about SHA1 collision.)

# The original 'vcheck' was ripped out when manifest and file certs
# were removed, and never quite did the right thing anyway.  (It only
# applied to manifests, in particular.)  It may be useful to reference
# the code, though: see t:monotone-0.16.  In particular, mac.hh should
# be useful.  Note also the section "Accidental collision" in
# monotone.texi.

# There are a few ways to re-add this.  The simplest is probably to
# have a cert on revisions that contains
#   - a salt/nonce
#   - a MAC of the revision
#   - a MAC of the revision's manifest
#   - a MAC of each file within that revision.
# possibly the last should just be "a MAC of every file mentioned in
# that revision's list of diff's", so people creating multiple vcheck
# certs aren't checking the same unchanging files over and over again.
# This reduces space overhead, too, since certs's space usage adds up,
# and does so for project members who aren't worried about SHA1
# collisions too...
#
# an alternative approach would be to contain:
#   - a salt/nonce
#   - a MAC of (length-prefixed revision) + (length prefixed manifest)
#     + (length prefixed versions of each file in the manifest, in manifest order)
# this is small, and just as safe.  it is rather expensive to create
# or check, though, since you have to load all that data, so maybe the
# optimization above where you only hash mentioned files would be
# good.  OTOH, if you hash everything, then you can use them
# sparingly, and be sure that the versions so certed really are safe;
# if you only hash some pieces, you have to cert your entire history
# in order to "trust" any one snapshot at all.

$at_traceoff
echo "$at_srcdir/t_vcheck.at:51: false"
echo t_vcheck.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; false ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; false ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_vcheck.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  90 ) # 90. t_db_with_dots.at:1: --db with ..
    at_setup_line='t_db_with_dots.at:1'
    at_desc='--db with ..'
    $at_quiet $ECHO_N " 90: --db with ..                                 $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "90. t_db_with_dots.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_db_with_dots.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_db_with_dots.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_with_dots.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_with_dots.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_db_with_dots.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_with_dots.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_with_dots.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_db_with_dots.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_with_dots.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_with_dots.at:2: rm test_keys"
echo t_db_with_dots.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_with_dots.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_db_with_dots.at:4: mkdir foo"
echo t_db_with_dots.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_with_dots.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_with_dots.at:5: (cd foo && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=../new.db db init)"
echo t_db_with_dots.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd foo && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=../new.db db init)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd foo && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=../new.db db init) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd foo && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=../new.db db init) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_with_dots.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_with_dots.at:6: (cd foo && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=../new.db ls branches)"
echo t_db_with_dots.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd foo && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=../new.db ls branches)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd foo && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=../new.db ls branches) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd foo && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=../new.db ls branches) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_with_dots.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# paths in _MTN/options should be absolute and not contain ..

$at_traceoff
echo "$at_srcdir/t_db_with_dots.at:10: mkdir bar"
echo t_db_with_dots.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_with_dots.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_with_dots.at:11: (cd bar && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=../new.db --branch=testbranch setup .)"
echo t_db_with_dots.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd bar && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=../new.db --branch=testbranch setup .)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd bar && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=../new.db --branch=testbranch setup .) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd bar && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=../new.db --branch=testbranch setup .) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_with_dots.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_with_dots.at:12: grep new.db bar/_MTN/options"
echo t_db_with_dots.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep new.db bar/_MTN/options ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep new.db bar/_MTN/options ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_with_dots.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_with_dots.at:13: grep new.db bar/_MTN/options | grep -v '\\.\\.'"
echo t_db_with_dots.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep new.db bar/_MTN/options | grep -v '\.\.' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep new.db bar/_MTN/options | grep -v '\.\.' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_with_dots.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  91 ) # 91. t_subdir_add.at:1: add in subdir
    at_setup_line='t_subdir_add.at:1'
    at_desc='add in subdir'
    $at_quiet $ECHO_N " 91: add in subdir                                $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "91. t_subdir_add.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_subdir_add.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_subdir_add.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_add.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_add.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_subdir_add.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_add.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_add.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_subdir_add.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_add.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_add.at:2: rm test_keys"
echo t_subdir_add.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_add.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_subdir_add.at:4: mkdir subdir"
echo t_subdir_add.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir subdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir subdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_add.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_add.at:5: mkdir subdir/anotherdir"
echo t_subdir_add.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir subdir/anotherdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir subdir/anotherdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_add.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >subdir/foo <<'_ATEOF'
data data
_ATEOF

cat >subdir/anotherdir/bar <<'_ATEOF'
more data
_ATEOF


# Add a file
$at_traceoff
echo "$at_srcdir/t_subdir_add.at:12: (cd subdir; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo)"
echo t_subdir_add.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd subdir; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd subdir; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd subdir; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_add.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# Add a directory
$at_traceoff
echo "$at_srcdir/t_subdir_add.at:14: (cd subdir; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add anotherdir)"
echo t_subdir_add.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd subdir; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add anotherdir)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd subdir; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add anotherdir) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd subdir; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add anotherdir) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_add.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_subdir_add.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_subdir_add.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_add.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_subdir_add.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV codir"
echo t_subdir_add.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV codir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV codir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV codir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_add.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_add.at:20: cmp subdir/foo codir/subdir/foo"
echo t_subdir_add.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp subdir/foo codir/subdir/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp subdir/foo codir/subdir/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_add.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_add.at:21: cmp subdir/anotherdir/bar codir/subdir/anotherdir/bar"
echo t_subdir_add.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp subdir/anotherdir/bar codir/subdir/anotherdir/bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp subdir/anotherdir/bar codir/subdir/anotherdir/bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_add.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  92 ) # 92. t_subdir_drop.at:1: (minor) drop in subdir
    at_setup_line='t_subdir_drop.at:1'
    at_desc='(minor) drop in subdir'
    $at_quiet $ECHO_N " 92: (minor) drop in subdir                       $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "92. t_subdir_drop.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_subdir_drop.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_subdir_drop.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_drop.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_drop.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_subdir_drop.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_drop.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_drop.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_subdir_drop.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_drop.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_drop.at:2: rm test_keys"
echo t_subdir_drop.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_drop.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_subdir_drop.at:4: mkdir subdir"
echo t_subdir_drop.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir subdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir subdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_drop.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_drop.at:5: mkdir subdir/anotherdir"
echo t_subdir_drop.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir subdir/anotherdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir subdir/anotherdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_drop.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >subdir/foo <<'_ATEOF'
data data
_ATEOF

cat >subdir/anotherdir/bar <<'_ATEOF'
more data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_subdir_drop.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add ."
echo t_subdir_drop.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_drop.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_subdir_drop.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_subdir_drop.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_drop.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV=`cat _MTN/revision`

# Create a checkout we can update
$at_traceoff
echo "$at_srcdir/t_subdir_drop.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV codir"
echo t_subdir_drop.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV codir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV codir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV codir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_drop.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_subdir_drop.at:17: (cd subdir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop foo)"
echo t_subdir_drop.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop foo)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop foo) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop foo) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_drop.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_drop.at:18: (cd subdir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop --recursive anotherdir)"
echo t_subdir_drop.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop --recursive anotherdir)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop --recursive anotherdir) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop --recursive anotherdir) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_drop.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_subdir_drop.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_subdir_drop.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_drop.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_subdir_drop.at:21: (cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update)"
echo t_subdir_drop.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_drop.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_drop.at:22: test -f codir/subdir/foo"
echo t_subdir_drop.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f codir/subdir/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f codir/subdir/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_subdir_drop.at:22: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_drop.at:23: test -f codir/subdir/anotherdir/bar"
echo t_subdir_drop.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f codir/subdir/anotherdir/bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f codir/subdir/anotherdir/bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_subdir_drop.at:23: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  93 ) # 93. t_subdir_revert.at:1: revert in subdirs
    at_setup_line='t_subdir_revert.at:1'
    at_desc='revert in subdirs'
    $at_quiet $ECHO_N " 93: revert in subdirs                            $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "93. t_subdir_revert.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_subdir_revert.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_subdir_revert.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_revert.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_revert.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_subdir_revert.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_revert.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_revert.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_subdir_revert.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_revert.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_revert.at:2: rm test_keys"
echo t_subdir_revert.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_revert.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_subdir_revert.at:4: mkdir subdir"
echo t_subdir_revert.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir subdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir subdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_revert.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_revert.at:5: mkdir subdir/anotherdir"
echo t_subdir_revert.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir subdir/anotherdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir subdir/anotherdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_revert.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >subdir/foo <<'_ATEOF'
data data
_ATEOF

cat >subdir/anotherdir/bar <<'_ATEOF'
more data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_subdir_revert.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add ."
echo t_subdir_revert.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_revert.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_subdir_revert.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_subdir_revert.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_revert.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV=`cat _MTN/revision`

# Create a checkout we can play with
$at_traceoff
echo "$at_srcdir/t_subdir_revert.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV codir"
echo t_subdir_revert.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV codir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV codir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV codir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_revert.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Write to the checked out files
cat >codir/subdir/foo <<'_ATEOF'
other data
_ATEOF

cat >codir/subdir/anotherdir/bar <<'_ATEOF'
more other data
_ATEOF


# Revert them
$at_traceoff
echo "$at_srcdir/t_subdir_revert.at:24: (cd codir/subdir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert foo)"
echo t_subdir_revert.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd codir/subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert foo)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd codir/subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert foo) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd codir/subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert foo) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_revert.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_revert.at:25: (cd codir/subdir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert anotherdir)"
echo t_subdir_revert.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd codir/subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert anotherdir)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd codir/subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert anotherdir) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd codir/subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert anotherdir) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_revert.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Check them
$at_traceoff
echo "$at_srcdir/t_subdir_revert.at:28: cmp subdir/foo codir/subdir/foo"
echo t_subdir_revert.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp subdir/foo codir/subdir/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp subdir/foo codir/subdir/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_revert.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_revert.at:29: cmp subdir/anotherdir/bar codir/subdir/anotherdir/bar"
echo t_subdir_revert.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp subdir/anotherdir/bar codir/subdir/anotherdir/bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp subdir/anotherdir/bar codir/subdir/anotherdir/bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_revert.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  94 ) # 94. t_subdir_rename.at:1: rename in subdir
    at_setup_line='t_subdir_rename.at:1'
    at_desc='rename in subdir'
    $at_quiet $ECHO_N " 94: rename in subdir                             $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "94. t_subdir_rename.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_subdir_rename.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_subdir_rename.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_rename.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_rename.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_subdir_rename.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_rename.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_rename.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_subdir_rename.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_rename.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_rename.at:2: rm test_keys"
echo t_subdir_rename.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_rename.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_subdir_rename.at:4: mkdir subdir"
echo t_subdir_rename.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir subdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir subdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_rename.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_rename.at:5: mkdir subdir/anotherdir"
echo t_subdir_rename.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir subdir/anotherdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir subdir/anotherdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_rename.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >subdir/foo <<'_ATEOF'
data data
_ATEOF

cat >subdir/anotherdir/bar <<'_ATEOF'
more data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_subdir_rename.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add ."
echo t_subdir_rename.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_rename.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_subdir_rename.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_subdir_rename.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_rename.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_subdir_rename.at:14: mv subdir/foo subdir/foo-renamed"
echo t_subdir_rename.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv subdir/foo subdir/foo-renamed ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv subdir/foo subdir/foo-renamed ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_rename.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_rename.at:15: (cd subdir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename foo foo-renamed)"
echo t_subdir_rename.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo foo-renamed)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo foo-renamed) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo foo-renamed) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_rename.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_rename.at:16: mv subdir/anotherdir anotherdir-renamed"
echo t_subdir_rename.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv subdir/anotherdir anotherdir-renamed ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv subdir/anotherdir anotherdir-renamed ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_rename.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_rename.at:17: (cd subdir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename anotherdir ../anotherdir-renamed)"
echo t_subdir_rename.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename anotherdir ../anotherdir-renamed)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename anotherdir ../anotherdir-renamed) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename anotherdir ../anotherdir-renamed) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_rename.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_subdir_rename.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_subdir_rename.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_rename.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_subdir_rename.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV codir"
echo t_subdir_rename.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV codir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV codir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV codir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_rename.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_rename.at:21: (cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update --branch=testbranch)"
echo t_subdir_rename.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --branch=testbranch)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --branch=testbranch) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --branch=testbranch) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_rename.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_rename.at:22: test -f codir/subdir/foo"
echo t_subdir_rename.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f codir/subdir/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f codir/subdir/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_subdir_rename.at:22: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_rename.at:23: test -f codir/subdir/anotherdir/bar"
echo t_subdir_rename.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f codir/subdir/anotherdir/bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f codir/subdir/anotherdir/bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_subdir_rename.at:23: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_rename.at:24: cmp subdir/foo-renamed codir/subdir/foo-renamed"
echo t_subdir_rename.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp subdir/foo-renamed codir/subdir/foo-renamed ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp subdir/foo-renamed codir/subdir/foo-renamed ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_rename.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_rename.at:25: cmp anotherdir-renamed/bar codir/anotherdir-renamed/bar"
echo t_subdir_rename.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp anotherdir-renamed/bar codir/anotherdir-renamed/bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp anotherdir-renamed/bar codir/anotherdir-renamed/bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_rename.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  95 ) # 95. t_subdir_attr.at:3: attr command in subdirs
    at_setup_line='t_subdir_attr.at:3'
    at_desc='attr command in subdirs'
    $at_quiet $ECHO_N " 95: attr command in subdirs                      $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "95. t_subdir_attr.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_subdir_attr.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_subdir_attr.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_attr.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_attr.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_subdir_attr.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_attr.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_attr.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_subdir_attr.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_attr.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_attr.at:5: rm test_keys"
echo t_subdir_attr.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_attr.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_subdir_attr.at:7: mkdir -p foo/bar"
echo t_subdir_attr.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir -p foo/bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir -p foo/bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_attr.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >top <<'_ATEOF'
top data
_ATEOF

cat >foo/foodata <<'_ATEOF'
foo data
_ATEOF

cat >foo/bar/bardata <<'_ATEOF'
foobar data
_ATEOF


$at_traceoff
echo "$at_srcdir/t_subdir_attr.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add top foo"
echo t_subdir_attr.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add top foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add top foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add top foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_attr.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# set attributes in directories

$at_traceoff
echo "$at_srcdir/t_subdir_attr.at:19: (cd foo; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr set foodata test:test_attr true)"
echo t_subdir_attr.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd foo; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set foodata test:test_attr true)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd foo; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set foodata test:test_attr true) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd foo; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set foodata test:test_attr true) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_attr.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_attr.at:20: (cd foo/bar; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr set bardata test:test_attr false)"
echo t_subdir_attr.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd foo/bar; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set bardata test:test_attr false)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd foo/bar; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set bardata test:test_attr false) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd foo/bar; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set bardata test:test_attr false) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_attr.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_attr.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah"
echo t_subdir_attr.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_attr.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REV=`cat _MTN/revision`

# see if they're right

$at_traceoff
echo "$at_srcdir/t_subdir_attr.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV co-dir"
echo t_subdir_attr.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV co-dir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV co-dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV co-dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_attr.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_attr.at:27: grep \"test:test_attr:foo/foodata:true\" stdout"
echo t_subdir_attr.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "test:test_attr:foo/foodata:true" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "test:test_attr:foo/foodata:true" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_attr.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_subdir_attr.at:28: grep \"test:test_attr:foo/bar/bardata:false\" stdout"
echo t_subdir_attr.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "test:test_attr:foo/bar/bardata:false" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "test:test_attr:foo/bar/bardata:false" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_subdir_attr.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  96 ) # 96. t_lca_1.at:1: (minor) an lca
    at_setup_line='t_lca_1.at:1'
    at_desc='(minor) an lca'
    $at_quiet $ECHO_N " 96: (minor) an lca                               $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "96. t_lca_1.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_lca_1.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_lca_1.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lca_1.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lca_1.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_lca_1.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lca_1.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lca_1.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_lca_1.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lca_1.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lca_1.at:2: rm test_keys"
echo t_lca_1.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lca_1.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This test is a bug report.


# Actually, we don't have a reduced test case for this, but this test
# can serve as a marker until someone tracks this down and makes one.

# The bug is that if, on the main monotone repo, you run
#   $ mtn lca e3623ca77d2a8b45817ecaa5b67018c453652830 7d5918d0181f7bb9adba2ee63234146d23bcf83e
# (note that one is in branch net.venge.monotone, one in
# net.venge.monotone.cvssync, for finding them in monotone-viz) the
# output is ce860bae312c4bb8483d5b3b2a8cd3bebe2323d5, even though the
# real lca is 0b17415d7aa112060e8ead9ae7a486510dc61a9d.

$at_traceoff
echo "$at_srcdir/t_lca_1.at:17: false"
echo t_lca_1.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; false ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; false ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lca_1.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  97 ) # 97. t_update_2.at:1: (normal) update 2
    at_setup_line='t_update_2.at:1'
    at_desc='(normal) update 2'
    $at_quiet $ECHO_N " 97: (normal) update 2                            $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "97. t_update_2.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_update_2.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_update_2.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_2.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_2.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_update_2.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_2.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_2.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_update_2.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_2.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_2.at:2: rm test_keys"
echo t_update_2.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_2.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# testing that update is able to jump over discontinuities in
# branches.  If we have A1 -> B1 -> A2, then updating branch A from A1
# should get to A2.


cat >testfile <<'_ATEOF'
main branch data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_update_2.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_update_2.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_2.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_update_2.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=mainbranch commit --message blah-blah"
echo t_update_2.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=mainbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=mainbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=mainbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_2.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


A1_R=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
first branch data 1
_ATEOF



$at_traceoff
echo "$at_srcdir/t_update_2.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=firstbranch commit --message blah-blah"
echo t_update_2.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=firstbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=firstbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=firstbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_2.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


B1_R=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
first branch data 2
_ATEOF



$at_traceoff
echo "$at_srcdir/t_update_2.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=mainbranch commit --message blah-blah"
echo t_update_2.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=mainbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=mainbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=mainbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_2.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


A2_R=`cat _MTN/revision`



$at_traceoff
echo "$at_srcdir/t_update_2.at:24: rm -rf _MTN.old"
echo t_update_2.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_2.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_2.at:24: mv  _MTN _MTN.old"
echo t_update_2.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_2.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_2.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$A1_R ."
echo t_update_2.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A1_R ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A1_R . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A1_R . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_2.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_update_2.at:24: test \$PROBE_R_SHA = \$A1_R"
echo t_update_2.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $A1_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $A1_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $A1_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_2.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_update_2.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update --branch=mainbranch"
echo t_update_2.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --branch=mainbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --branch=mainbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --branch=mainbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_2.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

GOT_R=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_update_2.at:29: test \$GOT_R != \$A1_R"
echo t_update_2.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $GOT_R != $A1_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $GOT_R != $A1_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $GOT_R != $A1_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_2.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_2.at:30: test \$GOT_R = \$A2_R"
echo t_update_2.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $GOT_R = $A2_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $GOT_R = $A2_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $GOT_R = $A2_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_2.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  98 ) # 98. t_rename_dir_cross_level.at:1: rename_dir to non-sibling
    at_setup_line='t_rename_dir_cross_level.at:1'
    at_desc='rename_dir to non-sibling'
    $at_quiet $ECHO_N " 98: rename_dir to non-sibling                    $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "98. t_rename_dir_cross_level.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_rename_dir_cross_level.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_rename_dir_cross_level.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_rename_dir_cross_level.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:2: rm test_keys"
echo t_rename_dir_cross_level.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# Pretty rigorous test of rename_dir, in particular when the target
# and source of the rename are not sibling directories.

OLD_DIR=subdir1/the_dir
NEW_DIR=subdir2/target_dir/the_dir

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:10: mkdir subdir1"
echo t_rename_dir_cross_level.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir subdir1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir subdir1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:11: mkdir \$OLD_DIR"
echo t_rename_dir_cross_level.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "mkdir $OLD_DIR" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir $OLD_DIR ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir $OLD_DIR ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:12: mkdir subdir2"
echo t_rename_dir_cross_level.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir subdir2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir subdir2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:13: mkdir subdir2/target_dir"
echo t_rename_dir_cross_level.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir subdir2/target_dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir subdir2/target_dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >$OLD_DIR/preexisting <<'_ATEOF'
foo bar blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add \$OLD_DIR/preexisting"
echo t_rename_dir_cross_level.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add $OLD_DIR/preexisting" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add $OLD_DIR/preexisting ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add $OLD_DIR/preexisting ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >$OLD_DIR/rename-out-file <<'_ATEOF'
asdfasdf
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add \$OLD_DIR/rename-out-file"
echo t_rename_dir_cross_level.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add $OLD_DIR/rename-out-file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add $OLD_DIR/rename-out-file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add $OLD_DIR/rename-out-file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:19: mkdir \$OLD_DIR/rename-out-dir"
echo t_rename_dir_cross_level.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "mkdir $OLD_DIR/rename-out-dir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir $OLD_DIR/rename-out-dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir $OLD_DIR/rename-out-dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >$OLD_DIR/rename-out-dir/subfile <<'_ATEOF'
9
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add \$OLD_DIR/rename-out-dir/subfile"
echo t_rename_dir_cross_level.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add $OLD_DIR/rename-out-dir/subfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add $OLD_DIR/rename-out-dir/subfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add $OLD_DIR/rename-out-dir/subfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >rename-in-file <<'_ATEOF'
badlsakl
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add rename-in-file"
echo t_rename_dir_cross_level.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add rename-in-file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add rename-in-file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add rename-in-file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:24: mkdir rename-in-dir"
echo t_rename_dir_cross_level.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir rename-in-dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir rename-in-dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >rename-in-dir/subfile <<'_ATEOF'
10
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add rename-in-dir/subfile"
echo t_rename_dir_cross_level.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add rename-in-dir/subfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add rename-in-dir/subfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add rename-in-dir/subfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >$OLD_DIR/doomed <<'_ATEOF'
badfsda
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add \$OLD_DIR/doomed"
echo t_rename_dir_cross_level.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add $OLD_DIR/doomed" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add $OLD_DIR/doomed ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add $OLD_DIR/doomed ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >subdir1/bystander1 <<'_ATEOF'
stuff stuff
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add subdir1/bystander1"
echo t_rename_dir_cross_level.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add subdir1/bystander1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add subdir1/bystander1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add subdir1/bystander1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_rename_dir_cross_level.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


BASE_R=`cat _MTN/revision`


cat >subdir1/bystander2 <<'_ATEOF'
asdfasknb
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add subdir1/bystander2"
echo t_rename_dir_cross_level.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add subdir1/bystander2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add subdir1/bystander2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add subdir1/bystander2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >$OLD_DIR/new-file <<'_ATEOF'
foo ping
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add \$OLD_DIR/new-file"
echo t_rename_dir_cross_level.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add $OLD_DIR/new-file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add $OLD_DIR/new-file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add $OLD_DIR/new-file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename \$OLD_DIR/rename-out-file rename-out-file"
echo t_rename_dir_cross_level.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename $OLD_DIR/rename-out-file rename-out-file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename $OLD_DIR/rename-out-file rename-out-file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename $OLD_DIR/rename-out-file rename-out-file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:39: mv \$OLD_DIR/rename-out-file rename-out-file"
echo t_rename_dir_cross_level.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "mv $OLD_DIR/rename-out-file rename-out-file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv $OLD_DIR/rename-out-file rename-out-file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv $OLD_DIR/rename-out-file rename-out-file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename \$OLD_DIR/rename-out-dir rename-out-dir"
echo t_rename_dir_cross_level.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename $OLD_DIR/rename-out-dir rename-out-dir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename $OLD_DIR/rename-out-dir rename-out-dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename $OLD_DIR/rename-out-dir rename-out-dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:41: mv \$OLD_DIR/rename-out-dir rename-out-dir"
echo t_rename_dir_cross_level.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "mv $OLD_DIR/rename-out-dir rename-out-dir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv $OLD_DIR/rename-out-dir rename-out-dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv $OLD_DIR/rename-out-dir rename-out-dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename rename-in-dir \$OLD_DIR/rename-in-dir"
echo t_rename_dir_cross_level.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename rename-in-dir $OLD_DIR/rename-in-dir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename rename-in-dir $OLD_DIR/rename-in-dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename rename-in-dir $OLD_DIR/rename-in-dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:43: mv rename-in-dir \$OLD_DIR/rename-in-dir"
echo t_rename_dir_cross_level.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "mv rename-in-dir $OLD_DIR/rename-in-dir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv rename-in-dir $OLD_DIR/rename-in-dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv rename-in-dir $OLD_DIR/rename-in-dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:44: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename rename-in-file \$OLD_DIR/rename-in-file"
echo t_rename_dir_cross_level.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename rename-in-file $OLD_DIR/rename-in-file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename rename-in-file $OLD_DIR/rename-in-file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename rename-in-file $OLD_DIR/rename-in-file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:45: mv rename-in-file \$OLD_DIR/rename-in-file"
echo t_rename_dir_cross_level.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "mv rename-in-file $OLD_DIR/rename-in-file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv rename-in-file $OLD_DIR/rename-in-file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv rename-in-file $OLD_DIR/rename-in-file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:46: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop \$OLD_DIR/doomed"
echo t_rename_dir_cross_level.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop $OLD_DIR/doomed" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop $OLD_DIR/doomed ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop $OLD_DIR/doomed ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:47: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_rename_dir_cross_level.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


LEFT_R=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:50: rm -rf _MTN.old"
echo t_rename_dir_cross_level.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:50: mv  _MTN _MTN.old"
echo t_rename_dir_cross_level.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:50: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE_R ."
echo t_rename_dir_cross_level.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:50: test \$PROBE_R_SHA = \$BASE_R"
echo t_rename_dir_cross_level.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename \$OLD_DIR/ \$NEW_DIR/"
echo t_rename_dir_cross_level.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename $OLD_DIR/ $NEW_DIR/" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename $OLD_DIR/ $NEW_DIR/ ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename $OLD_DIR/ $NEW_DIR/ ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:53: mv \$OLD_DIR \$NEW_DIR"
echo t_rename_dir_cross_level.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "mv $OLD_DIR $NEW_DIR" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv $OLD_DIR $NEW_DIR ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv $OLD_DIR $NEW_DIR ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:54: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_rename_dir_cross_level.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


RIGHT_R=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:57: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge --branch=testbranch"
echo t_rename_dir_cross_level.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge --branch=testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge --branch=testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge --branch=testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:59: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE_R test_dir"
echo t_rename_dir_cross_level.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R test_dir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R test_dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R test_dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:60: (cd test_dir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch update)"
echo t_rename_dir_cross_level.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd test_dir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch update)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd test_dir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch update) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd test_dir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch update) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

MERGED_R=`cd test_dir && cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:62: test \$BASE_R != \$MERGED_R"
echo t_rename_dir_cross_level.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $BASE_R != $MERGED_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $BASE_R != $MERGED_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $BASE_R != $MERGED_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:63: test \$LEFT_R != \$MERGED_R"
echo t_rename_dir_cross_level.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $LEFT_R != $MERGED_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $LEFT_R != $MERGED_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $LEFT_R != $MERGED_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:64: test \$RIGHT_R != \$MERGED_R"
echo t_rename_dir_cross_level.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $RIGHT_R != $MERGED_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $RIGHT_R != $MERGED_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $RIGHT_R != $MERGED_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:64: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


T_NEW_DIR=test_dir/$NEW_DIR
$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:67: cmp \$NEW_DIR/preexisting \$T_NEW_DIR/preexisting"
echo t_rename_dir_cross_level.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cmp $NEW_DIR/preexisting $T_NEW_DIR/preexisting" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp $NEW_DIR/preexisting $T_NEW_DIR/preexisting ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp $NEW_DIR/preexisting $T_NEW_DIR/preexisting ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:67: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:68: cmp \$NEW_DIR/new-file \$T_NEW_DIR/new-file"
echo t_rename_dir_cross_level.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cmp $NEW_DIR/new-file $T_NEW_DIR/new-file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp $NEW_DIR/new-file $T_NEW_DIR/new-file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp $NEW_DIR/new-file $T_NEW_DIR/new-file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:69: cmp rename-out-file test_dir/rename-out-file"
echo t_rename_dir_cross_level.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp rename-out-file test_dir/rename-out-file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp rename-out-file test_dir/rename-out-file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:70: test ! -f \$T_NEW_DIR/rename-out-file"
echo t_rename_dir_cross_level.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test ! -f $T_NEW_DIR/rename-out-file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -f $T_NEW_DIR/rename-out-file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -f $T_NEW_DIR/rename-out-file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:71: cmp rename-out-dir/subfile test_dir/rename-out-dir/subfile"
echo t_rename_dir_cross_level.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp rename-out-dir/subfile test_dir/rename-out-dir/subfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp rename-out-dir/subfile test_dir/rename-out-dir/subfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:72: test ! -f \$T_NEW_DIR/rename-out-dir/subfile"
echo t_rename_dir_cross_level.at:72 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test ! -f $T_NEW_DIR/rename-out-dir/subfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -f $T_NEW_DIR/rename-out-dir/subfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -f $T_NEW_DIR/rename-out-dir/subfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:72: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:73: cmp \$NEW_DIR/rename-in-file \$T_NEW_DIR/rename-in-file"
echo t_rename_dir_cross_level.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cmp $NEW_DIR/rename-in-file $T_NEW_DIR/rename-in-file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp $NEW_DIR/rename-in-file $T_NEW_DIR/rename-in-file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp $NEW_DIR/rename-in-file $T_NEW_DIR/rename-in-file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:73: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:74: test ! -f test_dir/rename-in-file"
echo t_rename_dir_cross_level.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -f test_dir/rename-in-file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -f test_dir/rename-in-file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:75: cmp \$NEW_DIR/rename-in-dir/subfile \$T_NEW_DIR/rename-in-dir/subfile"
echo t_rename_dir_cross_level.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cmp $NEW_DIR/rename-in-dir/subfile $T_NEW_DIR/rename-in-dir/subfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp $NEW_DIR/rename-in-dir/subfile $T_NEW_DIR/rename-in-dir/subfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp $NEW_DIR/rename-in-dir/subfile $T_NEW_DIR/rename-in-dir/subfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:76: test ! -f test_dir/rename-in-dir/subfile"
echo t_rename_dir_cross_level.at:76 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -f test_dir/rename-in-dir/subfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -f test_dir/rename-in-dir/subfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:76: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:77: test ! -f \$T_NEW_DIR/doomed"
echo t_rename_dir_cross_level.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test ! -f $T_NEW_DIR/doomed" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -f $T_NEW_DIR/doomed ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -f $T_NEW_DIR/doomed ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:78: cmp subdir1/bystander1 test_dir/subdir1/bystander1"
echo t_rename_dir_cross_level.at:78 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp subdir1/bystander1 test_dir/subdir1/bystander1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp subdir1/bystander1 test_dir/subdir1/bystander1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:78: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_cross_level.at:79: cmp subdir1/bystander2 test_dir/subdir1/bystander2"
echo t_rename_dir_cross_level.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp subdir1/bystander2 test_dir/subdir1/bystander2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp subdir1/bystander2 test_dir/subdir1/bystander2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_cross_level.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  99 ) # 99. t_rename_added_in_rename.at:1: merge with add, rename file, and rename dir
    at_setup_line='t_rename_added_in_rename.at:1'
    at_desc='merge with add, rename file, and rename dir'
    $at_quiet $ECHO_N " 99: merge with add, rename file, and rename dir  $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "99. t_rename_added_in_rename.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_rename_added_in_rename.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_rename_added_in_rename.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_rename_added_in_rename.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:2: rm test_keys"
echo t_rename_added_in_rename.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This one's kind of complicated.
#
#    BASE_R                 - contains directory foo
#     |    \
#     |     \
#     |      RENAME_DIR_R   - rename_dir foo bar
#     |            |
#     ADDED_R      |        - add_file foo/a
#     |      \     |
#     |       \    |
#     |        \   |
#     |         merge 1
#     |             |
#     RENAME_FILE_R |       - rename_file foo/a bar/a
#               \   |
#                \  |
#                 TEST_R
#
# we want to make sure that both merges happen without tree conflicts
# being triggered

$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:25: mkdir foo"
echo t_rename_added_in_rename.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >foo/bystander <<'_ATEOF'
data data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo/bystander"
echo t_rename_added_in_rename.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/bystander" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/bystander ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/bystander ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_rename_added_in_rename.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


BASE_R=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename foo/ bar/"
echo t_rename_added_in_rename.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo/ bar/" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo/ bar/ ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo/ bar/ ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:32: mv foo bar"
echo t_rename_added_in_rename.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv foo bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv foo bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_rename_added_in_rename.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


RENAME_DIR_R=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:36: mv bar foo"
echo t_rename_added_in_rename.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv bar foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv bar foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:37: rm -rf _MTN.old"
echo t_rename_added_in_rename.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:37: mv  _MTN _MTN.old"
echo t_rename_added_in_rename.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE_R ."
echo t_rename_added_in_rename.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:37: test \$PROBE_R_SHA = \$BASE_R"
echo t_rename_added_in_rename.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >foo/a <<'_ATEOF'
more data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo/a"
echo t_rename_added_in_rename.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/a" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_rename_added_in_rename.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


ADDED_R=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:44: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge"
echo t_rename_added_in_rename.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:46: mv foo/a foo/b"
echo t_rename_added_in_rename.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv foo/a foo/b ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv foo/a foo/b ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:47: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename foo/a foo/b"
echo t_rename_added_in_rename.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo/a foo/b" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo/a foo/b ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo/a foo/b ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:48: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_rename_added_in_rename.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


RENAME_FILE_R=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:51: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge"
echo t_rename_added_in_rename.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:53: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE_R test_dir"
echo t_rename_added_in_rename.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R test_dir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R test_dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R test_dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:54: (cd test_dir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update --branch=testbranch)"
echo t_rename_added_in_rename.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd test_dir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --branch=testbranch)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd test_dir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --branch=testbranch) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd test_dir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --branch=testbranch) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

TEST_R=`cd test_dir; cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:57: test \$TEST_R != \$BASE_R"
echo t_rename_added_in_rename.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $TEST_R != $BASE_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $TEST_R != $BASE_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $TEST_R != $BASE_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:58: test \$TEST_R != \$RENAME_DIR_R"
echo t_rename_added_in_rename.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $TEST_R != $RENAME_DIR_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $TEST_R != $RENAME_DIR_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $TEST_R != $RENAME_DIR_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:59: test \$TEST_R != \$ADDED_R"
echo t_rename_added_in_rename.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $TEST_R != $ADDED_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $TEST_R != $ADDED_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $TEST_R != $ADDED_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:60: test \$TEST_R != \$RENAME_FILE_R"
echo t_rename_added_in_rename.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $TEST_R != $RENAME_FILE_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $TEST_R != $RENAME_FILE_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $TEST_R != $RENAME_FILE_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:62: test ! -f test_dir/foo/bystander"
echo t_rename_added_in_rename.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -f test_dir/foo/bystander ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -f test_dir/foo/bystander ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:63: test -f test_dir/bar/bystander"
echo t_rename_added_in_rename.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f test_dir/bar/bystander ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f test_dir/bar/bystander ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:64: test ! -f test_dir/foo/a"
echo t_rename_added_in_rename.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -f test_dir/foo/a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -f test_dir/foo/a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:64: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:65: test ! -f test_dir/bar/a"
echo t_rename_added_in_rename.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -f test_dir/bar/a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -f test_dir/bar/a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:66: test ! -f test_dir/foo/b"
echo t_rename_added_in_rename.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -f test_dir/foo/b ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -f test_dir/foo/b ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:66: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_added_in_rename.at:67: test -f test_dir/bar/b"
echo t_rename_added_in_rename.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f test_dir/bar/b ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f test_dir/bar/b ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_added_in_rename.at:67: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  100 ) # 100. t_rename_conflict.at:1: merge(<rename a b>, <rename a c>)
    at_setup_line='t_rename_conflict.at:1'
    at_desc='merge(<rename a b>, <rename a c>)'
    $at_quiet $ECHO_N "100: merge(<rename a b>, <rename a c>)            $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "100. t_rename_conflict.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_rename_conflict.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_rename_conflict.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_conflict.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_conflict.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_rename_conflict.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_conflict.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_conflict.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_rename_conflict.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_conflict.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_conflict.at:2: rm test_keys"
echo t_rename_conflict.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_conflict.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# Should cause a merge conflict.


cat >a <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_conflict.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add a"
echo t_rename_conflict.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add a" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_conflict.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rename_conflict.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_rename_conflict.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_conflict.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


BASE_R=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_rename_conflict.at:11: mv a b"
echo t_rename_conflict.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv a b ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv a b ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_conflict.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_conflict.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename a b"
echo t_rename_conflict.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename a b" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename a b ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename a b ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_conflict.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_conflict.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_rename_conflict.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_conflict.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rename_conflict.at:15: mv b a"
echo t_rename_conflict.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv b a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv b a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_conflict.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_conflict.at:16: rm -rf _MTN.old"
echo t_rename_conflict.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_conflict.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_conflict.at:16: mv  _MTN _MTN.old"
echo t_rename_conflict.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_conflict.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_conflict.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE_R ."
echo t_rename_conflict.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_conflict.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_rename_conflict.at:16: test \$PROBE_R_SHA = \$BASE_R"
echo t_rename_conflict.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_conflict.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rename_conflict.at:18: mv a c"
echo t_rename_conflict.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv a c ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv a c ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_conflict.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_conflict.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename a c"
echo t_rename_conflict.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename a c" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename a c ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename a c ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_conflict.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_conflict.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_rename_conflict.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_conflict.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rename_conflict.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge --branch=testbranch"
echo t_rename_conflict.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge --branch=testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge --branch=testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge --branch=testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_rename_conflict.at:22: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  101 ) # 101. t_rename_dir_patch.at:1: merge(<patch foo/a>, <rename foo/ bar/>)
    at_setup_line='t_rename_dir_patch.at:1'
    at_desc='merge(<patch foo/a>, <rename foo/ bar/>)'
    $at_quiet $ECHO_N "101: merge(<patch foo/a>, <rename foo/ bar/>)     $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "101. t_rename_dir_patch.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_rename_dir_patch.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_rename_dir_patch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_patch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_patch.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_rename_dir_patch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_patch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_patch.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_rename_dir_patch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_patch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_patch.at:2: rm test_keys"
echo t_rename_dir_patch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_patch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rename_dir_patch.at:4: mkdir foo"
echo t_rename_dir_patch.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_patch.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >foo/a <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_dir_patch.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo/a"
echo t_rename_dir_patch.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/a" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_patch.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rename_dir_patch.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_rename_dir_patch.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_patch.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


BASE_R=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_rename_dir_patch.at:10: mv foo bar"
echo t_rename_dir_patch.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv foo bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv foo bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_patch.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_patch.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename foo bar"
echo t_rename_dir_patch.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_patch.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_dir_patch.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_rename_dir_patch.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_patch.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rename_dir_patch.at:14: mv bar foo"
echo t_rename_dir_patch.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv bar foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv bar foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_patch.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_dir_patch.at:15: rm -rf _MTN.old"
echo t_rename_dir_patch.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_patch.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_patch.at:15: mv  _MTN _MTN.old"
echo t_rename_dir_patch.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_patch.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_patch.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE_R ."
echo t_rename_dir_patch.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_patch.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_rename_dir_patch.at:15: test \$PROBE_R_SHA = \$BASE_R"
echo t_rename_dir_patch.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_patch.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >foo/a <<'_ATEOF'
some other stuff
_ATEOF



$at_traceoff
echo "$at_srcdir/t_rename_dir_patch.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_rename_dir_patch.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_patch.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rename_dir_patch.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge"
echo t_rename_dir_patch.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_patch.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_dir_patch.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE_R test_dir"
echo t_rename_dir_patch.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R test_dir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R test_dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R test_dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_patch.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_patch.at:24: (cd test_dir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update --branch=testbranch)"
echo t_rename_dir_patch.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd test_dir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --branch=testbranch)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd test_dir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --branch=testbranch) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd test_dir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --branch=testbranch) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_patch.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_dir_patch.at:26: test ! -f test_dir/foo/a"
echo t_rename_dir_patch.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -f test_dir/foo/a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -f test_dir/foo/a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_patch.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_patch.at:27: test -f test_dir/bar/a"
echo t_rename_dir_patch.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f test_dir/bar/a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f test_dir/bar/a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_patch.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_patch.at:28: cmp foo/a test_dir/bar/a"
echo t_rename_dir_patch.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp foo/a test_dir/bar/a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp foo/a test_dir/bar/a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_patch.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  102 ) # 102. t_delete_dir_patch.at:1: (imp) merge(<patch foo/a>, <delete foo/>)
    at_setup_line='t_delete_dir_patch.at:1'
    at_desc='(imp) merge(<patch foo/a>, <delete foo/>)'
    $at_quiet $ECHO_N "102: (imp) merge(<patch foo/a>, <delete foo/>)    $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "102. t_delete_dir_patch.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_delete_dir_patch.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_delete_dir_patch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir_patch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir_patch.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_delete_dir_patch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir_patch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir_patch.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_delete_dir_patch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir_patch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir_patch.at:2: rm test_keys"
echo t_delete_dir_patch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir_patch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_delete_dir_patch.at:4: mkdir foo"
echo t_delete_dir_patch.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir_patch.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >foo/a <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_delete_dir_patch.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo/a"
echo t_delete_dir_patch.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/a" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir_patch.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_delete_dir_patch.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_delete_dir_patch.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir_patch.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


BASE_R=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_delete_dir_patch.at:10: mv foo bar"
echo t_delete_dir_patch.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv foo bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv foo bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir_patch.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir_patch.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop --recursive foo"
echo t_delete_dir_patch.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop --recursive foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop --recursive foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop --recursive foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir_patch.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_delete_dir_patch.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_delete_dir_patch.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir_patch.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_delete_dir_patch.at:14: mv bar foo"
echo t_delete_dir_patch.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv bar foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv bar foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir_patch.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_delete_dir_patch.at:15: rm -rf _MTN.old"
echo t_delete_dir_patch.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir_patch.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir_patch.at:15: mv  _MTN _MTN.old"
echo t_delete_dir_patch.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir_patch.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir_patch.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE_R ."
echo t_delete_dir_patch.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir_patch.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_delete_dir_patch.at:15: test \$PROBE_R_SHA = \$BASE_R"
echo t_delete_dir_patch.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir_patch.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >foo/a <<'_ATEOF'
some other stuff
_ATEOF



$at_traceoff
echo "$at_srcdir/t_delete_dir_patch.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_delete_dir_patch.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir_patch.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_delete_dir_patch.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge"
echo t_delete_dir_patch.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir_patch.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_delete_dir_patch.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE_R test_dir"
echo t_delete_dir_patch.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R test_dir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R test_dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R test_dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir_patch.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir_patch.at:24: (cd test_dir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update --branch=testbranch)"
echo t_delete_dir_patch.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd test_dir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --branch=testbranch)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd test_dir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --branch=testbranch) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd test_dir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --branch=testbranch) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir_patch.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_delete_dir_patch.at:26: test ! -f test_dir/foo/a"
echo t_delete_dir_patch.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -f test_dir/foo/a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -f test_dir/foo/a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir_patch.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_delete_dir_patch.at:27: test ! -f test_dir/bar/a"
echo t_delete_dir_patch.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -f test_dir/bar/a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -f test_dir/bar/a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_delete_dir_patch.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  103 ) # 103. t_revert_dirs.at:1: revert directories
    at_setup_line='t_revert_dirs.at:1'
    at_desc='revert directories'
    $at_quiet $ECHO_N "103: revert directories                           $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "103. t_revert_dirs.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_revert_dirs.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_revert_dirs.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_dirs.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_dirs.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_revert_dirs.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_dirs.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_dirs.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_revert_dirs.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_dirs.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_dirs.at:2: rm test_keys"
echo t_revert_dirs.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_dirs.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# reverting files deeper in the directory tree with only some leading
# components of their relative path specified

$at_traceoff
echo "$at_srcdir/t_revert_dirs.at:7: mkdir -p abc/def/ghi"
echo t_revert_dirs.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir -p abc/def/ghi ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir -p abc/def/ghi ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_dirs.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >abc/def/ghi/file <<'_ATEOF'
deep deep snow
_ATEOF

$at_traceoff
echo "$at_srcdir/t_revert_dirs.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add abc/def/ghi/file"
echo t_revert_dirs.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add abc/def/ghi/file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add abc/def/ghi/file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add abc/def/ghi/file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_dirs.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_dirs.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message='deep file' --branch=test"
echo t_revert_dirs.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message='deep file' --branch=test" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message='deep file' --branch=test ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message='deep file' --branch=test ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_dirs.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >abc/def/ghi/file <<'_ATEOF'
deep deep mud
_ATEOF

$at_traceoff
echo "$at_srcdir/t_revert_dirs.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert_dirs.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_dirs.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_dirs.at:15: grep abc/def/ghi/file stdout"
echo t_revert_dirs.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep abc/def/ghi/file stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep abc/def/ghi/file stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_dirs.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_dirs.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert abc/def"
echo t_revert_dirs.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert abc/def" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert abc/def ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert abc/def ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_dirs.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_dirs.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert_dirs.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_dirs.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_dirs.at:18: grep abc/def/ghi/file stdout"
echo t_revert_dirs.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep abc/def/ghi/file stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep abc/def/ghi/file stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_revert_dirs.at:18: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  104 ) # 104. t_revert_rename.at:1: revert renames
    at_setup_line='t_revert_rename.at:1'
    at_desc='revert renames'
    $at_quiet $ECHO_N "104: revert renames                               $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "104. t_revert_rename.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_revert_rename.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_revert_rename.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_rename.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_rename.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_revert_rename.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_rename.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_rename.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_revert_rename.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_rename.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_rename.at:2: rm test_keys"
echo t_revert_rename.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_rename.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile0 <<'_ATEOF'
version 0 of first test file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_revert_rename.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile0"
echo t_revert_rename.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_rename.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

V1=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile0`
$at_traceoff
echo "$at_srcdir/t_revert_rename.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah'"
echo t_revert_rename.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_rename.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >foofile0 <<'_ATEOF'
squirrils monkeys dingos
_ATEOF

$at_traceoff
echo "$at_srcdir/t_revert_rename.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename testfile0 foofile0"
echo t_revert_rename.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename testfile0 foofile0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename testfile0 foofile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename testfile0 foofile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_rename.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_rename.at:14: grep testfile0 _MTN/work"
echo t_revert_rename.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile0 _MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile0 _MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_rename.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_rename.at:15: grep foofile0 _MTN/work"
echo t_revert_rename.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foofile0 _MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foofile0 _MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_rename.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_rename.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert_rename.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_rename.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_rename.at:17: grep testfile0 stdout"
echo t_revert_rename.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile0 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile0 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_rename.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_rename.at:18: grep foofile0 stdout"
echo t_revert_rename.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foofile0 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foofile0 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_rename.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_rename.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert foofile0"
echo t_revert_rename.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert foofile0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert foofile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert foofile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_rename.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_rename.at:20: test ! -e _MTN/work"
echo t_revert_rename.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e _MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e _MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_rename.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_rename.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert_rename.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_rename.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_rename.at:22: grep testfile0 stdout"
echo t_revert_rename.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile0 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile0 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_revert_rename.at:22: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_rename.at:23: grep foofile0 stdout"
echo t_revert_rename.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foofile0 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foofile0 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_revert_rename.at:23: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >foofile0 <<'_ATEOF'
squirrils monkeys dingos
_ATEOF

$at_traceoff
echo "$at_srcdir/t_revert_rename.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename testfile0 foofile0"
echo t_revert_rename.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename testfile0 foofile0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename testfile0 foofile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename testfile0 foofile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_rename.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_rename.at:28: grep testfile0 _MTN/work"
echo t_revert_rename.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile0 _MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile0 _MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_rename.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_rename.at:29: grep foofile0 _MTN/work"
echo t_revert_rename.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foofile0 _MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foofile0 _MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_rename.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_rename.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert_rename.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_rename.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_rename.at:31: grep testfile0 stdout"
echo t_revert_rename.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile0 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile0 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_rename.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_rename.at:32: grep foofile0 stdout"
echo t_revert_rename.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foofile0 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foofile0 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_rename.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_rename.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert testfile0"
echo t_revert_rename.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert testfile0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert testfile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert testfile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_rename.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_rename.at:34: test ! -e _MTN/work"
echo t_revert_rename.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e _MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e _MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_rename.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_rename.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert_rename.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_rename.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_rename.at:36: grep testfile0 stdout"
echo t_revert_rename.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile0 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile0 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_revert_rename.at:36: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_rename.at:37: grep foofile0 stdout"
echo t_revert_rename.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foofile0 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foofile0 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_revert_rename.at:37: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  105 ) # 105. t_revert_unchanged.at:3: revert unchanged file preserves mtime
    at_setup_line='t_revert_unchanged.at:3'
    at_desc='revert unchanged file preserves mtime'
    $at_quiet $ECHO_N "105: revert unchanged file preserves mtime        $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "105. t_revert_unchanged.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_revert_unchanged.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_revert_unchanged.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_unchanged.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_unchanged.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_revert_unchanged.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_unchanged.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_unchanged.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_revert_unchanged.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_unchanged.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_unchanged.at:5: rm test_keys"
echo t_revert_unchanged.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_unchanged.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >file1 <<'_ATEOF'
file 1 version 1
_ATEOF

cat >time1 <<'_ATEOF'
time point 1
_ATEOF


$at_traceoff
echo "$at_srcdir/t_revert_unchanged.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file1"
echo t_revert_unchanged.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_unchanged.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_unchanged.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah'"
echo t_revert_unchanged.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_unchanged.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# ensure file modification time changes are detected

$at_traceoff
echo "$at_srcdir/t_revert_unchanged.at:17: sleep 2"
echo t_revert_unchanged.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sleep 2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sleep 2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_unchanged.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >file1 <<'_ATEOF'
file 1 version 2
_ATEOF


$at_traceoff
echo "$at_srcdir/t_revert_unchanged.at:21: ls -l"
echo t_revert_unchanged.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; ls -l ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; ls -l ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_unchanged.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_unchanged.at:22: find . -newer time1"
echo t_revert_unchanged.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; find . -newer time1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; find . -newer time1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_unchanged.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_unchanged.at:23: grep file1 stdout"
echo t_revert_unchanged.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file1 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file1 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_unchanged.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# revert the file and ensure that its modification time changes

cat >time2 <<'_ATEOF'
time point 2
_ATEOF


$at_traceoff
echo "$at_srcdir/t_revert_unchanged.at:30: sleep 2"
echo t_revert_unchanged.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sleep 2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sleep 2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_unchanged.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_unchanged.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert file1"
echo t_revert_unchanged.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert file1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_unchanged.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_revert_unchanged.at:33: ls -l"
echo t_revert_unchanged.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; ls -l ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; ls -l ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_unchanged.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_unchanged.at:34: find . -newer time2"
echo t_revert_unchanged.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; find . -newer time2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; find . -newer time2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_unchanged.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_unchanged.at:35: grep file1 stdout"
echo t_revert_unchanged.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file1 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file1 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_unchanged.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# revert the file again and ensure that its modification time does NOT change

cat >time3 <<'_ATEOF'
time point 3
_ATEOF


$at_traceoff
echo "$at_srcdir/t_revert_unchanged.at:42: sleep 1"
echo t_revert_unchanged.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sleep 1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sleep 1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_unchanged.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_unchanged.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert file1"
echo t_revert_unchanged.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert file1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_unchanged.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_revert_unchanged.at:45: ls -l"
echo t_revert_unchanged.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; ls -l ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; ls -l ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_unchanged.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_unchanged.at:46: find . -newer time3"
echo t_revert_unchanged.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; find . -newer time3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; find . -newer time3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_unchanged.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_unchanged.at:47: grep file1 stdout"
echo t_revert_unchanged.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file1 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file1 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_revert_unchanged.at:47: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  106 ) # 106. t_cdiff.at:1: (minor) context diff
    at_setup_line='t_cdiff.at:1'
    at_desc='(minor) context diff'
    $at_quiet $ECHO_N "106: (minor) context diff                         $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "106. t_cdiff.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_cdiff.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_cdiff.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cdiff.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cdiff.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_cdiff.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cdiff.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cdiff.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_cdiff.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cdiff.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cdiff.at:2: rm test_keys"
echo t_cdiff.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cdiff.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This test is a bug report.



# There is a new cdiff command, but  not tests for it at all.  We need
# at least one test for it, probably more, to make sure it gives valid
# output in all cases.

$at_traceoff
echo "$at_srcdir/t_cdiff.at:12: false"
echo t_cdiff.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; false ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; false ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cdiff.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  107 ) # 107. t_no_rename_overwrite.at:1: rename cannot overwrite files
    at_setup_line='t_no_rename_overwrite.at:1'
    at_desc='rename cannot overwrite files'
    $at_quiet $ECHO_N "107: rename cannot overwrite files                $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "107. t_no_rename_overwrite.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_no_rename_overwrite.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_no_rename_overwrite.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_rename_overwrite.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_rename_overwrite.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_no_rename_overwrite.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_rename_overwrite.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_rename_overwrite.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_no_rename_overwrite.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_rename_overwrite.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_rename_overwrite.at:2: rm test_keys"
echo t_no_rename_overwrite.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_rename_overwrite.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# "rename" needs to check that it isn't overwriting existing
# files/directories.


cat >"target_file" <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_no_rename_overwrite.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add \"target_file\""
echo t_no_rename_overwrite.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add \"target_file\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add "target_file" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add "target_file" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_rename_overwrite.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_no_rename_overwrite.at:9: mkdir target_dir"
echo t_no_rename_overwrite.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir target_dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir target_dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_rename_overwrite.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >"target_dir/subfile" <<'_ATEOF'
stuff stuff
_ATEOF

$at_traceoff
echo "$at_srcdir/t_no_rename_overwrite.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add \"target_dir/subfile\""
echo t_no_rename_overwrite.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add \"target_dir/subfile\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add "target_dir/subfile" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add "target_dir/subfile" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_rename_overwrite.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >"rename_file" <<'_ATEOF'
foo foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_no_rename_overwrite.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add \"rename_file\""
echo t_no_rename_overwrite.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add \"rename_file\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add "rename_file" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add "rename_file" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_rename_overwrite.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_no_rename_overwrite.at:15: mkdir rename_dir"
echo t_no_rename_overwrite.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir rename_dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir rename_dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_rename_overwrite.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >"rename_dir/file" <<'_ATEOF'
bar bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_no_rename_overwrite.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add \"rename_dir/file\""
echo t_no_rename_overwrite.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add \"rename_dir/file\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add "rename_dir/file" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add "rename_dir/file" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_rename_overwrite.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_no_rename_overwrite.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename unknown_file other_file"
echo t_no_rename_overwrite.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename unknown_file other_file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename unknown_file other_file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename unknown_file other_file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_no_rename_overwrite.at:19: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_rename_overwrite.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename rename_file target_file"
echo t_no_rename_overwrite.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename rename_file target_file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename rename_file target_file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename rename_file target_file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_no_rename_overwrite.at:20: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_rename_overwrite.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename rename_dir target_file"
echo t_no_rename_overwrite.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename rename_dir target_file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename rename_dir target_file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename rename_dir target_file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_no_rename_overwrite.at:21: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_no_rename_overwrite.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_no_rename_overwrite.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_rename_overwrite.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_no_rename_overwrite.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename unknown_file other_file"
echo t_no_rename_overwrite.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename unknown_file other_file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename unknown_file other_file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename unknown_file other_file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_no_rename_overwrite.at:25: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_rename_overwrite.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename rename_file target_file"
echo t_no_rename_overwrite.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename rename_file target_file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename rename_file target_file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename rename_file target_file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_no_rename_overwrite.at:26: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_rename_overwrite.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename rename_dir target_file"
echo t_no_rename_overwrite.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename rename_dir target_file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename rename_dir target_file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename rename_dir target_file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_no_rename_overwrite.at:27: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  108 ) # 108. t_checkout_noop_on_fail.at:1: failed checkout is a no-op
    at_setup_line='t_checkout_noop_on_fail.at:1'
    at_desc='failed checkout is a no-op'
    $at_quiet $ECHO_N "108: failed checkout is a no-op                   $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "108. t_checkout_noop_on_fail.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_checkout_noop_on_fail.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_checkout_noop_on_fail.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_noop_on_fail.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_noop_on_fail.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_checkout_noop_on_fail.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_noop_on_fail.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_noop_on_fail.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_checkout_noop_on_fail.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_noop_on_fail.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_noop_on_fail.at:2: rm test_keys"
echo t_checkout_noop_on_fail.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_noop_on_fail.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# If a checkout fails, no target directory should be created, and if
# the checkout directory already exists, no _MTN/ directory should be
# created.

$at_traceoff
echo "$at_srcdir/t_checkout_noop_on_fail.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=bogus-id outdir"
echo t_checkout_noop_on_fail.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=bogus-id outdir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=bogus-id outdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=bogus-id outdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_checkout_noop_on_fail.at:8: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_noop_on_fail.at:9: test ! -e outdir"
echo t_checkout_noop_on_fail.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e outdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e outdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_noop_on_fail.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_noop_on_fail.at:10: mkdir outdir"
echo t_checkout_noop_on_fail.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir outdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir outdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_noop_on_fail.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_noop_on_fail.at:11: (cd outdir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=bogus-id .)"
echo t_checkout_noop_on_fail.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd outdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=bogus-id .)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd outdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=bogus-id .) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd outdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=bogus-id .) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_checkout_noop_on_fail.at:11: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_noop_on_fail.at:12: test ! -e outdir/_MTN"
echo t_checkout_noop_on_fail.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e outdir/_MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e outdir/_MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_noop_on_fail.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  109 ) # 109. t_monotone_agent.at:1: (todo) write monotone-agent
    at_setup_line='t_monotone_agent.at:1'
    at_desc='(todo) write monotone-agent'
    $at_quiet $ECHO_N "109: (todo) write monotone-agent                  $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "109. t_monotone_agent.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_monotone_agent.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_monotone_agent.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_monotone_agent.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_monotone_agent.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_monotone_agent.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_monotone_agent.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_monotone_agent.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_monotone_agent.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_monotone_agent.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_monotone_agent.at:2: rm test_keys"
echo t_monotone_agent.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_monotone_agent.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This test is a bug report.


# Todo:
# 1) Write monotone-agent
# 2) Write tests for it here
#
# Desired user experience:
#   - start the agent at login time
#     (it would be nice if we could spawn it automatically the first
#     time monotone is run, but then how would we communicate the
#     agent's address to independent processes?  and cause it to exit
#     when the session ends?)
#   - first time monotone needs to sign something, it prompts for a
#     passphrase
#   - second and later times monotone needs to sign something, no
#     passphrase is necessary (even if the second time is in a
#     different monotone process entirely)
#   - probably have some command that does nothing except prompt for a
#     passphrase, so people who want to type it once at the beginning
#     of a session can do that.
#
# Internal design:
#   - agent opens an access controlled unix-domain socket (what's the
#     windows equivalent?  cf. pageant below)
#   - an environment variable saves the socket (and pid, I suppose,
#     for cleanup), like ssh-agent (again, what's the windows
#     equivalent?)
#   - when monotone wants to sign something, it checks to see if the
#     agent has the private key.
#     - if it does, then monotone sends the agent the data to be
#       signed, and waits for the response
#     - if it doesn't, then monotone requests the passphrase, decrypts
#       the key, sends the key to the agent, and then either goes to
#       the above step (maybe simpler) or just signs the data itself
#       (maybe faster)
#   - so the agent needs protocol packets:
#     - do you have key <hash>?
#       - response
#     - sign data <data> (or just hash of data <hash>) with key <hash>
#       - response
#     - add key <hash> <key pieces>
#       - response
#     - for debugging, might want 'list keys' and 'remove key'; 'list
#       keys' probably means agent should store key ids too?  depends
#       on how debuggish it is, I guess.
#   - note that this design assumes that monotone will have
#     independent access to the list of keys, and so doesn't need to
#     get the ids and hashes from the agent.  this seems reasonable,
#     at least for a first pass; it should be simpler to code, and the
#     cases where it fails (e.g., agent forwarding) don't seem very
#     compelling to me.
#
# Other similar projects to steal ideas from:
#   - ssh-agent in openssh
#     their protocol is documented in
#     draft-ylonen-ssh-protocol-00.txt.  It's simple enough that this
#     isn't that useful, though.  (Unfortunately, ssh-agent provides
#     challenge-responses, not signatures, so we can't use it
#     directly.  Using it directly would have been much nicer.  I
#     suppose in the long run we could try and convince the ssh-agent
#     people that providing signing services for some keys might be
#     generally useful...)
#     It's not clear that signing services are something you
#     want to forward to other machines, though, even if
#     challenge-response services are...
#   - "pageant" in putty is a ssh-agent that works on Windows
#     - how does this work in windows, with no SSH_AUTH_SOCK and no
#       unix-domain sockets?
#   - codeville has an agent implementation too

$at_traceoff
echo "$at_srcdir/t_monotone_agent.at:75: false"
echo t_monotone_agent.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; false ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; false ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_monotone_agent.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  110 ) # 110. t_approval_semantics.at:1: (todo) design approval semantics
    at_setup_line='t_approval_semantics.at:1'
    at_desc='(todo) design approval semantics'
    $at_quiet $ECHO_N "110: (todo) design approval semantics             $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "110. t_approval_semantics.at:1: testing ..."
      $at_traceon


# This test is a bug report.


# There's a somewhat subtle issue about approval, branch membership,
# etc.  The way I (njs) had been thinking about things originally, a
# revision R is in a branch B iff there's a valid trusted cert cert(R,
# "branch", B).  So, currently e.g. 'propagate' will skip performing a
# merge in some cases and instead just stick a new branch cert on the
# head that's being propagated, and 'update' will skip past non-branch
# nodes to reach branch nodes.
#
# graydon points out, though, that 'update's original semantics, of
# _not_ skipping past non-branch revisions, was intentional.  because
# branch certs show approval, and in real life people always look at
# and approve diffs, not tree-states.  so update should only follow
# continuous paths of approval.
#
# currently, 'update' still will skip past non-branch revisions, since
# other parts of the code assume that this is how branches work, and I
# (njs again) figured it would be better to let things be consistent
# while we figure out what should really happen.  but, that approval
# inherently happens on edges is a critical point, and we should
# address it somehow.
#
# there are some subtleties to it, though.  some things came up on IRC:

# #monotone, Jan 23:
# <njs>     graydon: here's a question about branch-as-approval
# <njs>     graydon: should 'heads' be changed to be 'greatest descendent of a privileged root'?
# <njs>     (s/descendent/descendent with a continuous chain of branch certs from that root/)
# <graydon> possibly.
# <graydon> possibly once we know what "priviledged" means :)
# <graydon> or privileged, depending on whether I learn to spell
# <njs>     one could do it with the lookaside trust branch model, have a table for each branch specifying which revision is considered the root

# <njs> if we have A -> B -> C, B -> D -> E, where everything except D has appropriate approval, should "monotone merge" cherrypick D -> E onto C? :-)
# <njs> (on the theory that merge is supposed to gather up all approved revisions into one head)
# <njs> hmm, and if someone does say "disapprove D", they have to also say "approve D" for it to work!
# <graydon> heh
# <graydon> both interesting issues
# <graydon> don't know. I'm not sure about either.


# TODO: figure out how all this should work.
# solution should support projects with different sorts of
# workflows/approval requirements...

$at_traceoff
echo "$at_srcdir/t_approval_semantics.at:50: false"
echo t_approval_semantics.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; false ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; false ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_approval_semantics.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  111 ) # 111. t_i18n_changelog.at:3: committing with a non-english message
    at_setup_line='t_i18n_changelog.at:3'
    at_desc='committing with a non-english message'
    $at_quiet $ECHO_N "111: committing with a non-english message        $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "111. t_i18n_changelog.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_i18n_changelog.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_i18n_changelog.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_changelog.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_changelog.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_i18n_changelog.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_changelog.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_changelog.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_i18n_changelog.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_changelog.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_changelog.at:5: rm test_keys"
echo t_i18n_changelog.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_changelog.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



EUROPEAN_UTF8=`printf "\xC3\xB6\xC3\xA4\xC3\xBc\xC3\x9F"`
EUROPEAN_8859_1=`printf "\xF6\xE4\xFC\xDF"`
JAPANESE_UTF8=`printf "\xE3\x81\xA6\xE3\x81\x99\xE3\x81\xA8"`
JAPANESE_EUC_JP=`printf "\xA4\xC6\xA4\xB9\xA4\xC8"`

export CHARSET=UTF-8

cat >a <<'_ATEOF'
hello there
_ATEOF

$at_traceoff
echo "$at_srcdir/t_i18n_changelog.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add a"
echo t_i18n_changelog.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add a" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_changelog.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_i18n_changelog.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --debug --branch=testbranch commit --message \$EUROPEAN_UTF8"
echo t_i18n_changelog.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --debug --branch=testbranch commit --message $EUROPEAN_UTF8" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --debug --branch=testbranch commit --message $EUROPEAN_UTF8 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --debug --branch=testbranch commit --message $EUROPEAN_UTF8 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_changelog.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



export CHARSET=iso-8859-1

cat >b <<'_ATEOF'
hello there
_ATEOF

$at_traceoff
echo "$at_srcdir/t_i18n_changelog.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add b"
echo t_i18n_changelog.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add b" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add b ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add b ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_changelog.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_i18n_changelog.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --debug --branch=testbranch commit --message \$EUROPEAN_8859_1"
echo t_i18n_changelog.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --debug --branch=testbranch commit --message $EUROPEAN_8859_1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --debug --branch=testbranch commit --message $EUROPEAN_8859_1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --debug --branch=testbranch commit --message $EUROPEAN_8859_1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_changelog.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



export CHARSET=UTF-8

cat >c <<'_ATEOF'
hello there
_ATEOF

$at_traceoff
echo "$at_srcdir/t_i18n_changelog.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add c"
echo t_i18n_changelog.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add c" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add c ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add c ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_changelog.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_i18n_changelog.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --debug --branch=testbranch commit --message \$JAPANESE_UTF8"
echo t_i18n_changelog.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --debug --branch=testbranch commit --message $JAPANESE_UTF8" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --debug --branch=testbranch commit --message $JAPANESE_UTF8 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --debug --branch=testbranch commit --message $JAPANESE_UTF8 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_changelog.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



export CHARSET=euc-jp

cat >d <<'_ATEOF'
hello there
_ATEOF

$at_traceoff
echo "$at_srcdir/t_i18n_changelog.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add d"
echo t_i18n_changelog.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add d" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add d ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add d ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_changelog.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_i18n_changelog.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --debug --branch=testbranch commit --message \$JAPANESE_EUC_JP"
echo t_i18n_changelog.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --debug --branch=testbranch commit --message $JAPANESE_EUC_JP" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --debug --branch=testbranch commit --message $JAPANESE_EUC_JP ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --debug --branch=testbranch commit --message $JAPANESE_EUC_JP ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_changelog.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  112 ) # 112. t_restrictions_warn_on_unknown.at:1: warn on bad restriction
    at_setup_line='t_restrictions_warn_on_unknown.at:1'
    at_desc='warn on bad restriction'
    $at_quiet $ECHO_N "112: warn on bad restriction                      $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "112. t_restrictions_warn_on_unknown.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_restrictions_warn_on_unknown.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_restrictions_warn_on_unknown.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions_warn_on_unknown.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions_warn_on_unknown.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_restrictions_warn_on_unknown.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions_warn_on_unknown.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions_warn_on_unknown.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_restrictions_warn_on_unknown.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions_warn_on_unknown.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restrictions_warn_on_unknown.at:2: rm test_keys"
echo t_restrictions_warn_on_unknown.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restrictions_warn_on_unknown.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restrictions_warn_on_unknown.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff bogusdir1 bogusdir2"
echo t_restrictions_warn_on_unknown.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff bogusdir1 bogusdir2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff bogusdir1 bogusdir2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff bogusdir1 bogusdir2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restrictions_warn_on_unknown.at:4: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  113 ) # 113. t_need_mt_revision.at:1: _MTN/revision is required
    at_setup_line='t_need_mt_revision.at:1'
    at_desc='_MTN/revision is required'
    $at_quiet $ECHO_N "113: _MTN/revision is required                    $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "113. t_need_mt_revision.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_need_mt_revision.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_need_mt_revision.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_need_mt_revision.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_need_mt_revision.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_need_mt_revision.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_need_mt_revision.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_need_mt_revision.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_need_mt_revision.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_need_mt_revision.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_need_mt_revision.at:2: rm test_keys"
echo t_need_mt_revision.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_need_mt_revision.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >foo <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_need_mt_revision.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_need_mt_revision.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_need_mt_revision.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >bar <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_need_mt_revision.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add bar"
echo t_need_mt_revision.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_need_mt_revision.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_need_mt_revision.at:8: rm -f foo"
echo t_need_mt_revision.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_need_mt_revision.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_need_mt_revision.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls missing"
echo t_need_mt_revision.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_need_mt_revision.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_need_mt_revision.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop foo"
echo t_need_mt_revision.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_need_mt_revision.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_need_mt_revision.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls missing"
echo t_need_mt_revision.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_need_mt_revision.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_need_mt_revision.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_need_mt_revision.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_need_mt_revision.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_need_mt_revision.at:14: rm -f bar"
echo t_need_mt_revision.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_need_mt_revision.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_need_mt_revision.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls missing"
echo t_need_mt_revision.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_need_mt_revision.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_need_mt_revision.at:17: rm -f _MTN/revision"
echo t_need_mt_revision.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f _MTN/revision ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f _MTN/revision ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_need_mt_revision.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_need_mt_revision.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls missing"
echo t_need_mt_revision.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_need_mt_revision.at:18: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  114 ) # 114. t_update_null_revision.at:1: update no-ops when no parent revision
    at_setup_line='t_update_null_revision.at:1'
    at_desc='update no-ops when no parent revision'
    $at_quiet $ECHO_N "114: update no-ops when no parent revision        $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "114. t_update_null_revision.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_update_null_revision.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_update_null_revision.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_null_revision.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_null_revision.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_update_null_revision.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_null_revision.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_null_revision.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_update_null_revision.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_null_revision.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_null_revision.at:2: rm test_keys"
echo t_update_null_revision.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_null_revision.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >foo <<'_ATEOF'
blah balh
_ATEOF

$at_traceoff
echo "$at_srcdir/t_update_null_revision.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_update_null_revision.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_null_revision.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_update_null_revision.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update --branch=testbranch"
echo t_update_null_revision.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --branch=testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --branch=testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --branch=testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_update_null_revision.at:7: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  115 ) # 115. t_branch_checkout.at:1: branch-based checkout
    at_setup_line='t_branch_checkout.at:1'
    at_desc='branch-based checkout'
    $at_quiet $ECHO_N "115: branch-based checkout                        $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "115. t_branch_checkout.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_branch_checkout.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_branch_checkout.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_branch_checkout.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_branch_checkout.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_branch_checkout.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_branch_checkout.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_branch_checkout.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_branch_checkout.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_branch_checkout.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_branch_checkout.at:2: rm test_keys"
echo t_branch_checkout.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_branch_checkout.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo.testbranch <<'_ATEOF'
this is the testbranch version
_ATEOF

cat >foo.otherbranch <<'_ATEOF'
this version goes in otherbranch
_ATEOF


$at_traceoff
echo "$at_srcdir/t_branch_checkout.at:9: cp foo.testbranch foo"
echo t_branch_checkout.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foo.testbranch foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foo.testbranch foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_branch_checkout.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_branch_checkout.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_branch_checkout.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_branch_checkout.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_branch_checkout.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_branch_checkout.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_branch_checkout.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_branch_checkout.at:13: cp -f foo.otherbranch foo"
echo t_branch_checkout.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f foo.otherbranch foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f foo.otherbranch foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_branch_checkout.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_branch_checkout.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah"
echo t_branch_checkout.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_branch_checkout.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_branch_checkout.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout"
echo t_branch_checkout.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_branch_checkout.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_branch_checkout.at:17: cmp testbranch/foo foo.testbranch"
echo t_branch_checkout.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testbranch/foo foo.testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testbranch/foo foo.testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_branch_checkout.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  116 ) # 116. t_load_into_existing.at:1: db load must create a new db
    at_setup_line='t_load_into_existing.at:1'
    at_desc='db load must create a new db'
    $at_quiet $ECHO_N "116: db load must create a new db                 $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "116. t_load_into_existing.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_load_into_existing.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_load_into_existing.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_load_into_existing.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_load_into_existing.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_load_into_existing.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_load_into_existing.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_load_into_existing.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_load_into_existing.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_load_into_existing.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_load_into_existing.at:2: rm test_keys"
echo t_load_into_existing.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_load_into_existing.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >foo <<'_ATEOF'
stuff
_ATEOF

$at_traceoff
echo "$at_srcdir/t_load_into_existing.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_load_into_existing.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_load_into_existing.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_load_into_existing.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_load_into_existing.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_load_into_existing.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_load_into_existing.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db dump"
echo t_load_into_existing.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db dump" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db dump ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db dump ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_load_into_existing.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_load_into_existing.at:9:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_load_into_existing.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_load_into_existing.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_load_into_existing.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db db load <stdout"
echo t_load_into_existing.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db db load <stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db db load <stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db db load <stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_load_into_existing.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_load_into_existing.at:11: mkdir test3.db"
echo t_load_into_existing.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_load_into_existing.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_load_into_existing.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db db load <stdout"
echo t_load_into_existing.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db db load <stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db db load <stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db db load <stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_load_into_existing.at:12: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_load_into_existing.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test4.db db init"
echo t_load_into_existing.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test4.db db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test4.db db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test4.db db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_load_into_existing.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_load_into_existing.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test4.db db load <stdout"
echo t_load_into_existing.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test4.db db load <stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test4.db db load <stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test4.db db load <stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_load_into_existing.at:14: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  117 ) # 117. t_automate_version.at:1: automate automate_version
    at_setup_line='t_automate_version.at:1'
    at_desc='automate automate_version'
    $at_quiet $ECHO_N "117: automate automate_version                    $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "117. t_automate_version.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_automate_version.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_automate_version.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_version.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_version.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_automate_version.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_version.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_version.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_automate_version.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_version.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_version.at:2: rm test_keys"
echo t_automate_version.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_version.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_version.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate interface_version"
echo t_automate_version.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate interface_version" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate interface_version ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate interface_version ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_version.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_version.at:5: mv stdout a_v"
echo t_automate_version.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout a_v ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout a_v ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_version.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# MinGW's wc produces "      1" as output.  Arithmetic comparison works, string comparison doesn't
$at_traceoff
echo "$at_srcdir/t_automate_version.at:8: test 1 -eq \"\`wc -l <a_v\`\""
echo t_automate_version.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test 1 -eq "`wc -l <a_v`" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test 1 -eq "`wc -l <a_v`" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_version.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# This is really ^[0-9]+\.[0-9]+$, but m4 is obfuscatory.
$at_traceoff
echo "$at_srcdir/t_automate_version.at:10: egrep '^[0-9]+\\.[0-9]+\$' a_v >/dev/null"
echo t_automate_version.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "egrep '^[0-9]+\\.[0-9]+$' a_v >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; egrep '^[0-9]+\.[0-9]+$' a_v >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; egrep '^[0-9]+\.[0-9]+$' a_v >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_version.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  118 ) # 118. t_automate_heads.at:1: automate heads
    at_setup_line='t_automate_heads.at:1'
    at_desc='automate heads'
    $at_quiet $ECHO_N "118: automate heads                               $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "118. t_automate_heads.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_automate_heads.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_automate_heads.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_heads.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_automate_heads.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_heads.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_automate_heads.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_heads.at:2: rm test_keys"
echo t_automate_heads.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >foo <<'_ATEOF'
blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_heads.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_automate_heads.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_heads.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_heads.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


BASE_R=`cat _MTN/revision`


cat >1 <<'_ATEOF'
1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_heads.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add 1"
echo t_automate_heads.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add 1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add 1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add 1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_heads.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_heads.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


ONE_R=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_automate_heads.at:14: rm -rf _MTN.old"
echo t_automate_heads.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_heads.at:14: mv  _MTN _MTN.old"
echo t_automate_heads.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_heads.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE_R ."
echo t_automate_heads.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_automate_heads.at:14: test \$PROBE_R_SHA = \$BASE_R"
echo t_automate_heads.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >2 <<'_ATEOF'
2
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_heads.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add 2"
echo t_automate_heads.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add 2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add 2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add 2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_heads.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_heads.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


TWO_R=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_automate_heads.at:20: rm -rf _MTN.old"
echo t_automate_heads.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_heads.at:20: mv  _MTN _MTN.old"
echo t_automate_heads.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_heads.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE_R ."
echo t_automate_heads.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_automate_heads.at:20: test \$PROBE_R_SHA = \$BASE_R"
echo t_automate_heads.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >3 <<'_ATEOF'
3
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_heads.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add 3"
echo t_automate_heads.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add 3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add 3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add 3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_heads.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_heads.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


THREE_R=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_automate_heads.at:26: rm -rf _MTN.old"
echo t_automate_heads.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_heads.at:26: mv  _MTN _MTN.old"
echo t_automate_heads.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_heads.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE_R ."
echo t_automate_heads.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_automate_heads.at:26: test \$PROBE_R_SHA = \$BASE_R"
echo t_automate_heads.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >4 <<'_ATEOF'
4
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_heads.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add 4"
echo t_automate_heads.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add 4" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add 4 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add 4 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_heads.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_heads.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


FOUR_R=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_automate_heads.at:32: echo \$ONE_R >wanted_heads_unsorted"
echo t_automate_heads.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $ONE_R >wanted_heads_unsorted" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $ONE_R >wanted_heads_unsorted ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $ONE_R >wanted_heads_unsorted ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_heads.at:33: echo \$TWO_R >>wanted_heads_unsorted"
echo t_automate_heads.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $TWO_R >>wanted_heads_unsorted" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $TWO_R >>wanted_heads_unsorted ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $TWO_R >>wanted_heads_unsorted ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_heads.at:34: echo \$THREE_R >>wanted_heads_unsorted"
echo t_automate_heads.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $THREE_R >>wanted_heads_unsorted" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $THREE_R >>wanted_heads_unsorted ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $THREE_R >>wanted_heads_unsorted ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_heads.at:35: echo \$FOUR_R >>wanted_heads_unsorted"
echo t_automate_heads.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $FOUR_R >>wanted_heads_unsorted" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $FOUR_R >>wanted_heads_unsorted ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $FOUR_R >>wanted_heads_unsorted ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_heads.at:37: sort wanted_heads_unsorted >wanted_heads"
echo t_automate_heads.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sort wanted_heads_unsorted >wanted_heads ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sort wanted_heads_unsorted >wanted_heads ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_heads.at:39: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate heads testbranch"
echo t_automate_heads.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate heads testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate heads testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate heads testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_heads.at:40:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_heads.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_heads.at:41: cmp wanted_heads stdout"
echo t_automate_heads.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp wanted_heads stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp wanted_heads stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_heads.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate heads nosuchbranch"
echo t_automate_heads.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate heads nosuchbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate heads nosuchbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate heads nosuchbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >empty <<'_ATEOF'
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_heads.at:45: cmp empty stdout"
echo t_automate_heads.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp empty stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp empty stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_heads.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  119 ) # 119. t_merge_normalization_edge_case.at:1: merge normalization edge case
    at_setup_line='t_merge_normalization_edge_case.at:1'
    at_desc='merge normalization edge case'
    $at_quiet $ECHO_N "119: merge normalization edge case                $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "119. t_merge_normalization_edge_case.at:1: testing ..."
      $at_traceon


DIFF3=`which diff3 2>/dev/null`
if test -z "$DIFF3" ; then
  exit 77
fi



if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_merge_normalization_edge_case.at:8: echo \$UNB64_COMMAND"
echo t_merge_normalization_edge_case.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_normalization_edge_case.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test -n "`command -v gunzip`" 2>/dev/null; then
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  UNGZ_COMMAND="gunzip -c"
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_merge_normalization_edge_case.at:8: echo \$UNGZ_COMMAND"
echo t_merge_normalization_edge_case.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNGZ_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_normalization_edge_case.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon






# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge_normalization_edge_case.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_merge_normalization_edge_case.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_normalization_edge_case.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_normalization_edge_case.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_merge_normalization_edge_case.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_normalization_edge_case.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_normalization_edge_case.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_merge_normalization_edge_case.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_normalization_edge_case.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_normalization_edge_case.at:10: rm test_keys"
echo t_merge_normalization_edge_case.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_normalization_edge_case.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >parent.gz.b64 <<'_ATEOF'
H4sICK2WEUIAA3AA3Vr/b9u4Ff85/it4wgWVGttNk1vXtQi2ItcbCvS6oe26DWlq0BZt8yKR
GknZDg7r3773SEqi5C9x3Ba7zU1tieT79uHje4+UeoMBMXOuCfyZOSPaUJFSlRLNDJFTkpWU
zKW80WQqFcmlkEYK9rwHZKVmalAoueApS8mUZ0yTCRVELphS0EY4cFCEpikxEm6Gvd60FBPD
pSCG5cUISeKkRwjJ5IRmxKRc4R3+kgsi9XDGDBOLOHr/819/fPU2smP51A+4IIJnqLTYTBEl
hIn0HiQv96SJHpm8iKqBiplSCZLfaDQq1kZxMRsCWjk1cXSsH+Vm+A/7ifqWQ5L0kLQBg63Y
pDQsLqiZ98lwOEyAbQNLwVMQWkjNV8j2JoQMhEPf4LHX2A69IKdWXWyDjyNEGV5AKQo6uYmp
miWWE8s082OBXb8lb0m5iaHBDWwZDD/Ojh46AzVg9xis0IQqRgqmNAdAhCE5MzSlhhI6lqXx
fhLrcjInVFe2I4sxB+EvLl/rPllQxWWpiS7YhIOZ04zOdEKWcw5US0aWFBiDU83pgllPBadF
FooN3N0tMTxn1qOdQFQqlymfcpYObXugMdzmmmULpq0pCpeBVODUXBBqGZBhbgZIAcpBI9Iv
YSpgpslEFrck9grkVPAp0yYZEkZB13jav+kvEgKiCuCC/ODPC3acEUxYfgLMocgCpjVD21Da
qPIRfXVzDbyAE7CANQlrCaY7bo/xvprUs9/tJr/+209Zh3nkpyG6hkFIWXXFqKKgOcM5yUqW
EO8pKN22oNDIqJJFSeh1teNN5gB7wCYqT1ZuITce5XSq1wOfCUDfhQckqpZ9vba4SGPP7XhI
v48SJ7ryTNQmWMabybQ8jO5AsuxANbMD5dFydRjhmN4cCIzis8MoFfvlIMLPh1A9moBvHUL4
6fLDu0eHCDyQ7hP46EIcJPFgyk/vLi8PM/JOQt80pZBtnvc6K56l3IwmMs8hYcRjCjGcrUyQ
5iA8Yd5d8KhpW3Bdwk8rhX949e5vL17XdULsx3wO4qLn5Xu8cl4KaCE7RcHLH1+9/0tTecR+
zAaOvsda1pQ0eQFJH0GCEZ2iB9lBfytqVzBhyeF1q+BAAH5+/4xEUCEQPwUzXY5rvGAaPorI
fttxCQ7EJltT5cWzpeJQZbTg5XI4yaRmqEjSq430BQn8eu0TtPi0FeEBJMVyKPZiUwfpZp7B
gDqyO/GgP0iTBROOABRV0XYguuyfb4CmqoEwtUWBa2RcWLzBZsVo6uCG4gGQt13V7KUyTGdQ
2pLQtXEorgkAs3LsJrk5ofgNIFumAdhNZkOVNilTraYW/FtArest3V02QorRGEzGOmSk4L/0
xWGw/ro0vjIbFXMFjrCdAvcFqtSGMEzz1NLajUCYqIUBbsxVCrQ/DlasvoBao1kG/g73EFAP
YRFTUK50TO0k6KsFFh6PK1jWho3tMJgkO/JzWJLTccaGXMBexMQGCyTg0Yk5plNvw9oeKQYR
AG5GEyAcWUtjDYUHsxVe2id10bMZnhazqur7KswwQHwxIzqZsAI4gFLgN2UGqs2pmLFYZunI
tQBHwZbVTVLhjiR99Osa/IDEjkpls2jsMrhwgR5K4JDjFXKyk2X1cyTdRdTkhPWKcItX5kzN
mCK6LAqpTGCz7Tgb5Qz0neSwfhHJPlH4E8LVqm87YauKfBFygVi6xgO1aENtxZ6viaVfT/oa
q1qJNeNZTifaqmGv2gb0CWzAaiY+52VcY2iOMLNNpwPLZ+D2TB9h9/oxqn5wybnLJLqnPV6X
aCDkgAtuLH/MVAMMLnDROzqydO3Ns9Vtmwm7Z2MbDvRwOAZLbuYDKiYMN4cdcLZg5JiCGqNp
bhP4sSYtEIhFwOV0K/suZO8BKdkXUro/smej1QqBcZ7OppBH7JkC1P7z6toOTP3Ndv+7z3pw
QgNHiQYDw03GHuMqqdXo9p5FLc2q7rZOAZHTfFBtVqO2wludbTMk4Cl3gdNEwvXPnQ7738Ov
6j6P2vZ08KU7YY4OQB4uG/BtNTsycoRltVRU3braGs+aEl9z9knFcc/ye62IJV7+83YRXQtZ
q+CqnObldjwGK0DY6Ag8GdMjOXX6VIMrtYNSOTg42VEtb6296xhkT+CCKjR6SKOdBiBBR/lC
yZmi+YitoIDUIy7stMe+OSSuHc+e2MFsVmPs6eTGwLJfNIExvjsI2tbfyEVlt98VbGr0TtVt
9uC02mw+d5ZClytRepVzQ8s290MVHRR3DGysaLTaNjaK6s2Zk+9LYFrvMtTm5oq177D+Ffh5
nZ8a652ULVPtCpPuXqgNVVDtOfdyK6ZzLv5R/P3F2zev3vz5GXmA9A/IkmoygR2Gxqpe4j4F
x4IrwR5DgJZngyW9de4whH0WZkwIIEdH0T9lSfRcllnqegkeoLpyVyOnh69f/vT+oTtsTaFO
haaM59y4PY2sjXVMLU8MSlTNSjyP0CANupKkMcoBtrPerBDGw/UdePrA3EW0JeCeGXdXUiFh
fN6QU+5W2NYdu/Vtai8/elcVsAdE9xO52k+mP5dw3o68PocroC1qmw+7KIfPADY5KcHzLFiJ
674D+ecIxYbrpi0RPj4mbU4YWWgLaT3C2YO6g4WHw6rkLYSc41Kce5oEfS5qHAW8Ea2j4Jyj
rUONWSTkTnhg01k6kDbuANuHIo3dTZva0FZbuDuhufotbiq1fdZXtQPYlo3opgzz20xR9I6B
lam/nXxG/+/T3PnBae7y5Zv3L99+q0S3xwkH+Qrp7hvtprwf3LWnutuCO5PR+Y789yWC706D
57vS4G7R9UL6FjnxfM+c2PD+ktRI/0dT4waUvklqpBvaQqs3Zkw8d2WrggrtI4l99K/xFSD7
koRmGZvgqRhoXmQM403r/RagTEfVIHQZF/6Bq+ZIgKIYAUdHMLTPDOGzGLjGRzGP/3Ccwr8B
fteogNgNQ89Ou0PXN8pxlD6rHqfVBw2VYjJnZo6O7N46yexLUBm/wYNuAqsLE1CaKqa363t1
vDwejK5P/lRdbFeEHqQIGSsIjHP7WGC3Ftcnx0N/sV2J8VYlKEzxv0oG9QDOvpBOoXFpyJyt
SMpn3OyYtuPVyffbpfKtUqNbKD+YSuktvjqFb6fJUjkVMPlh7sOXzQLJ9m2Uhqoj0j+Mck94
8QWhGH7R9eIH3z00D+qQ5FWrOsFLjn9CDciAPH3yw+lp+AivUvXywztQ4DZjEZBnkHIXzqs1
qV51is7JkjGYOzqTwemwgSm07+ZUwTfnAl8OuiBPTp9XbZD38cH0+ZPTpg0MhCarUN2GAizl
D0+D1hzC3Byaz578/mk4+pZRy/Xx75DxqW0OntoVEg/OmegT+DO3Beq0PrvxcXqSkPjKqT2X
CPzy5vok0X+0ltYv7aGdV8jmOkgsX3d2YkEehoKSlkcFx2PY9B/DHYp5+ygAAA==
_ATEOF


cat >left.gz.b64 <<'_ATEOF'
H4sICLiWEUIAA2wA3Rptb9u4+bt/BSdcUKmx3TS5dV2LYCtyvaFArxvartuQpgZt0TYvEqmR
lO3gcP3tex6SerVkO752u12axhb1vL+T0mA0ImbJNYFfs2REGypiqmKimSFyTpKckqWUt5rM
pSKpFNJIwZ4PAC3XTI0yJVc8ZjGZ84RpMqOCyBVTCtYIBwqK0DgmRsLFeDCY52JmuBTEsDSb
IEoYDQghiZzRhJiYK7zCT3JJpB4vmGFiFQbvf/jbd6/eBhaWzz3AJRE8QaFFN0YQESbie6C8
PBAneGTSLCgAFTO5EiS91ahUqI3iYjEGa6XUhMGJfpSa8T/tTzC0FKJogKiVMdiGzXLDwoya
5ZCMx+MIyFZmyXgMTDOp+QbJ3tZNBszh3uixl9iCXpIzKy6uwY9DRB6eQS4yOrsNqVpElhJL
NPOwQG7Y4Lem3ISw4AAbCsOH02OAwUAN6D0FLTShipGMKc3BIMKQlBkaU0MJncrc+DgJdT5b
EqoL3ZHElAPzF1ev9ZCsqOIy10RnbMZBzXlCFzoi6yUHrDUjawqEIaiWdMVspELQIgnFRu7q
jhieMhvRjiEKlcqYzzmLx3a9JjFcppolK6atKgrTQCoIai4ItQTIODUjxADhYBHx1+AK8DSZ
yeyOhF6AlAo+Z9pEY8IoyBrOh7fDVUSAVQZUkB78esaOMhoT0k+AOhRJgFsT1A25TYoY0de3
N0ALKAEJyEnIJXB32ITxsRqV3m/fJj/97F3WIh54NwQ3AISYxa0QRRQ0ZeiTJGcR8ZGC3O0K
Mg2MylkQ1aOuDLzZEsxeIxPkpxuXyFVEOZnKfOALAdZ35QGRirQvc4uLOPTUTsb0myByrIvI
RGlqadyNpuVxeEeiJUeKmRzJj+ab4xCn9PZIwyi+OA5TsR+PQvx8DNajGcTWMYifrj68e3QM
wyPxPkGMrsRRHI/G/PTu6uo4Jfci+qU5hW7zfNDKeBZzM5nJNIWGEU4p1HC2MbU2B+UJ++6K
B9XaiuscPhot/MOrd39/8bqcE0IP87lWFz0tf8cL57mAFLI1FLz87tX7v1aTR+hhOij6O1az
aqRJM2j6aCSAaA09SA7uN6p2YSYcObxshTnQAD+8f0YCmBCId8FC59PSXuCGjyKwfy1chIC4
ZGeqNHu2VhymjIZ5uRzPEqkZChINSiX9QAKfXvoINT5rVHgwkmIpDHuhKYt05WdQoKzsjj3I
D9xkxoRDAEFV0G+INvnnHaYpZiBsbUEtNBIurL1BZ8Vo7MwNwwNY3t4qvBfLejuD0ZbUQxtB
MSfAmEVgV83NMcW/YGRLtGbsqrOhSF3CFNnUMH+PUct5S7fTRkgxmYLKOIdMFPyXfjis5V8b
x09mk2ypIBD6MXBfoHJtCMM2Ty2u3QjUG7UwQI25SYEOp7WM1Zcwa1Rp4K9wDwHzEA4xGeVK
h9Q6QV+vcPB4XJhlC2xqwcBJFvJzfSSn04SNuYC9iAkNDkhAo1VzTGvehtyeKAYVAC4mM0Cc
WE1DDYMHsxNePCTl0NNtngaxYur7IsSwQPxiQnQ2YxlQAKEgbvIERFtSsWChTOKJWwGKgq2L
i6iwO6IMMa5L49dQLFQsq6SxaXDpCj2MwHWK10jJOsvK51DaSVT1hO2JsCcqU6YWTBGdZ5lU
pqazvXE+SRnIO0shf9GSQ6Lwo26uxnzbKltF5QuQCtTSLRooRdPUlu3FFlv65bhvkSqF2FKe
pXSmrRj2W1OBIYENWEnE97yEayzNAXa2+Xxk6Yzcnukj7F4/BsUHppz7GgX31MfLEoyEHHHB
jaWPnWqExQW+VCFR/2lupa2kfQrt9k2fVejxxhmtuVmOqJgx3Cq2TNVjMUcUxJjMU9vOTzRp
mIRYe7gOb3nvs/OxBj7AsvRwA59PNhu0jwt/NofmYg8aYEOwLL5bwNhf9AflfZLEMe2NnmA0
Mtwk7DEmUinUbtjzoCF1N3BT+l6CTuNRsfMNmor2xmq3KSHQ9hm1W5CGyP3x/v9g9wL4Imhq
vtNL9B7O2qXSYd6Er5VD7bg9MXKCc79UVN254R8PwyI/FA9JQfHA/cHWlE08/+fNKb9ksjVi
Fk3X821FIY6osBMTeHSnJ3Lu5CmAC7Frs3ztZGfHON+7OSBFWbRHhLUxOXhIg50KIEJL+EzJ
haLphG1gwtUTLmyAhH65jlwGsz1SBG8WMPb4tLPIHVbZAMbfrvURG4vkstDbb1u6Fn1QtZe9
cRprduBwmsItN0MNisCHlb7wQxGdKfYAVlpUUvXBBkG5e3T8/YxOy22Q6l4uSPsbNr5qcV62
zEp7x6XH1W5yam/WmqaqjaMuvFzGtA7uP4p/vHj75tWbvzwjDxD/AVlTTWawBdK47ZC4kUJY
CCXYBAmQ8ny0pncuHMawEcQmvqsmu8ryL5kTvZR5EjtMgqe/blbXyOXh65ffv3/oTopjGLJh
KeEpN25DJktDOIZ7+SFLqhY5HrRokBLQoqjCcobeOUgXOuFTgx1+8E2i7YkGg3tODfuV658r
9gtsR6jd8lZjpIfeNckcYKL7sdwcxtMfuBCbJUjrcz1zmqz6Yt9VR3y40RXcBA/qIIO3Yyes
XQL3eto1GcOPL2nd/Sapq0Qaj6gOwG6ZhNRPY5xkXl/oXK5RuodmFUi9BDUYVpZsUG3KV5o1
EHKnBWHDnTs7du5+mwdClU2qNdWxVmq/u1e6cTOsBstDUrDY7/Q1OtrVvH6d3Y/uASxU/fW0
Svqb76AXX6WDXr188/7l2/9FDz3gVIh8gU76lTaN7mfv1nG/Bnv73MWO1vpLGO/vsBe7Ouxu
1mUCfo12e/Ffbbf0N9huOyz4Vdot7VirW6SzC+M5NttkVGhfgeyrFBpfqbIvnWiWsBmeK4Lk
WcKwTjXeFwLMeFIAYTi5lgJUNUcEZMUIJAEaQw8aXrDPtuA7Ptp6/MeTGP6N8G9pFWDbAXp+
1gbd3teHQfyseDxZnosUgsmUmSUGuXuLJ7EvlSX8Fh8cEMg8bGpxrJjul/f6ZH0ymtyc/rn4
0i8IPUoQMlVQNJf2MctuKW5OT8b+S78Q014hKLj43zmDGQO9L6QTaJobsmQbEvMFNzvcdrI5
/aafK+/lGtzBSMNUTO/wVTR820/myomATRN7Jr68V+Ns3+6psFos/cM998QcX7gK4RNDL3zw
u4fmQVmuvGjFTYiSk+9RAjIiT598e3ZWfyRaiHr14R0IcJewANATaNUrF9WaFK+OBRdkzRj4
ji5k7XzdgAvtu05FRUm5wJetLsmTs+fFGswL+KD/4slZtQYKwpIVqFxDBhbz26e11RRK4BKW
z5/84Wkd+o5RS/Xx75Gwq3C1p6CZxEcPTAwJ/Jq7DGXa9m54Ep9GJLx2Yi8lGn59e3Ma6T9Z
TcuXIFHPayRzU2s6X9Y7oSAP64yiRkTVTvNw6T9jvncoSyoAAA==
_ATEOF


cat >right.gz.b64 <<'_ATEOF'
H4sICLyWEUIAA3IA3Vr/b9u4Ff89fwUnnFGpsd00uXVdi2ArcrmhQK8b2q7bkKYGbdE2F0nU
SMp2MKx/+94jKYmSJdt12604N7Usiu8rHx8/j+LJaET0kisCf3rJiNI0i6mMiWKaiDlJCkqW
QtwpMheSpCITWmTs+QmQFYrJUS7FiscsJnOeMEVmNCNixaSENsKBgyQ0jokWcDM+OZkX2Uxz
kRHN0nyCJGF0QghJxIwmRMdc4h1eySURarxgmmWrMHj3y19+evkmMH353HW4JBlPUOmsmyKI
CMvizyC5PpAmeKTTPCg7SqYLmZH0TqFRodKSZ4sxeCulOgwG6lGqx383n2BoOETRCZLWzmAb
Nis0C3Oql0MyHo8jYFu7JecxCM2F4htke+e7DITDs9Fjp7HpeknOjLrYBh9LiDKcgCLL6ewu
pHIRGU4sUcz1BXbDhrw15TqEBtuxYTBcrB0nGAxUg91TsEIRKhnJmVQcHJJpkjJNY6opoVNR
aBcnoSpmS0JVaTuymHIQ/uLqlRqSFZVcFIqonM04mDlP6EJFZL3kQLVmZE2BMQTVkq6YiVQI
WmQh2cje3RPNU2Yi2gpEpVIR8zln8di0exrDbapYsmLKmCJxGggJQc0zQg0DMk71CClAOWhE
+jUMBYw0mYn8noROgZRmfM6UjsaEUdA1nA/vhquIgKgcuCA/+HOCLWd0Jky/DMyhyAKGNUHb
UNqkjBF1c3cLvIATsIA5CXMJhjts9nGxGlWj335M/v0fN2Qt5oEbhuAWOiFl+ShEFTOaMhyT
pGARcZGC0k0LCg20LFgQ+VFXBd5sCW732ATF6cZO5DqirE7VfOCLDLxv0wMSldO+mls8i0PH
bTCmPwSRFV1GJmrjTeNuMiWOozuSLDlSzeRIebTYHEc4pXdHOkbyxXGUkv3zKMJPx1A9mkFs
HUP48er920fHCDyS7iPE6Co7SuLRlB/fXl0dZ+ReQtc0p7DaPD9pzXgWcz2ZiTSFBSOcUsjh
bKO9ZQ7SE667Kx7UbSuuCrg0lvD3L9/+9cWrCieErs8nLy86Xu6JU85JAS1ECxRc//Ty3Z9r
5BG6Ph0c3RNjWQ1p0hwWfXQS9GiBHmQHzxtZu3QTQg6nW+kOdMAv756RABACcUOwUMW08hcM
w4csMN+mX4QdsclgqjR/tpYcUEbDvVyMZ4lQDBWJTiojHSCBq9M+QovPGhkenCRZCmAv1FWS
rscZDKgyuxUP+oM0kbPMEoCiMuh3RJv98w7XlBgIl7bAC42EZ8bfYLNkNLbuBvAAnjePytGL
hb+cAbQlfmhjV5wT4MwysOvFzQrFb3CyYeo5u17ZUKUuZcrZ1HB/j1MrvKXa0yYT2WQKJiMO
mUj4Lxw49OZfm8Yhs0m+lBAI/RRYF8hCacJwmaeG1hQC/kKdaeDGLFKgw6k3Y9UlYI16Grg7
rCEADyGIySmXKqRmENTNCoHH49ItW92mphsMkun5yYfkdJqwMc+gFtGhRoAEPFo5R7fwNszt
iWSQAeBmMgPCibE0VAA8mEF48ZBUoKfbPQ1mJer7KswwQXwxIzqbsRw4gFIQN0UCqi1ptmCh
SOKJbQGOGVuXN1HpdyQZYlxXzvdITK9Y1JPGTINLm+gBAvscb5CTGSyjnyVpT6J6TdhGhD1R
mTK5YJKoIs+F1J7N5sH5JGWg7yyF+YueHBKJF99dDXzbSltl5guQC+TSLR6oRdPVRuzFllj6
9aRvsaqU2DJ+xVOjBFybyg8JFF8tXQ5RxTAKRnNcV0ax+Z7Bd6vKNYXMQAW1lGE9yv7ncH92
WUK/W4P6h6g9QiylM2UsM792jZJDJQlXuHgGiD3m85HhM7JV7YdgoD4E5QWTov0ZBZ8ZcU6X
YJSJEc+4NvyNczD9w49u65teM5r2GbR7tPu80j/ie50zWnO9HNFsxrCYb7mqx2OWKagxmacG
cA0UabiEGH9YDGZk7/PzsQ4+wLP0cAefTzYb9I9NUGwOy7/ZCoKSbVn+Nh1jd7MvdRyWxqzQ
3ugJRiPNdcIeY6qrlNrd9zxoaL0/y+wQbi0elXsTQdPQ3ljtdiUE2j6ndivSUHlfhvu+/V52
vgialh+cOvcN1i6TDhtN+FkPqCmIJlpMsDITksp7W57hdmXkypYhKTkeWMFt1UHEyX/erMMq
IVtFQAmLnNxWFGIRAbVyhpuraiLmVp+yc6m2V215e287Cq7e8o2UadFs4nqFTPCQBjsNQIKW
8rkUC0nTCdtADaImPDMBErpmn7gKZrPpC6NZ9jEb3J1J7rDMBn3cY28dMbFILku7XWHZ1eiC
qt3snNNoM5DQWgqPLMo9KQMfWvrCD1W0rtjTsbai1qqvbxBU9b2V76ooWhWqsru5ZO0emPjy
4rxaMmvrrZSeobbYtl1ON13lFQw2vOyMaWG0D9nfXrx5/fL1n56RB0j/gKypIjMoUhUWhgJL
XewLoQRlagZano/W9N6GwxhKdVzEd+Vkm1n+IQqilqJIYktJcH/eVlMKpTx8df3zu4d2Lz+G
MgiaEp5ybUtmUTnCCtwrD0VSuShwK0yBlkAWRTWVdfTOUqe0Cd/r7BgHt0i0R6Ih4DNRw37j
+nHFfoUNhNqtbw0jXe9dSOYAF32eyM3XkLmAAmW3xLIysl2/TNrhwg6R5Tb7iJn/yOaTnxOa
Uvpmtc37+GKta9oS3CSG3LQ9K0LvFqT7CaUpGD4uWXevpIlvEmm8Hj2AuuUS4u8EWs2cvbAm
WwhgX9jWXfzk2hBYe7LBtalf5dYgEzs9SOaisH7s3Hkxi0q1GVn7pG6THW2V9btRgAXSYQ2Z
D0kuZSXXt4TTrmX5+1zX6Z6OpanfDwigv3pscPFNsMHV9et312/+H+jggB1J8hUwwjcqh+1n
b1G834K9K/jFDtDwJYL3Y4eLXdjhS0TvgxAXfRDiS4QeLvMzRFaJ5lvAiov/Kaygv0JY0eHB
bwIraEeb75FOtIHvitgmp5lymdYcV1J4bNEc7FIsYTPcGQbN84RhPm6cyQPKeFJ2wnCySydw
VRwJUBQjEPzoDHXSGAXz/hh+4+vjx78fxPBvhN+VV0BsR9fzs3bX7Z2ZMIiflUcAqp2tUjGR
Mr3EILcn5RJzcDPhd/hyjkCGwcU7jiVT/freDNaD0eT29I/lj35F6FGKkKmExWFpXmXu1uL2
dDB2P/qVmPYqQWGI/1UwwFI4+pmwCk0LTZZsQ2K+4HrHsA02pz/0S+W9UoN7gG5MxvQej3vi
iVpRSKsCggPEBnhA1pNsTtDVVC2R7gW6PZWChxpDuGLohQ9+81A/qNKVU618CFEy+Bk1ICPy
9MmPZ2f+sYNS1av3b0GB+4QFQJ4AJFnZqFakPJ4ZXJA1YzB2dCG8NyQahtCcJywzSsozPNB4
SZ6cPS/bABfhYZqLJ2d1GxgITUahqg0FGMofn3qtKaTAJTSfP/ndU7/3PaOG6+PfImOb4byT
BrnAl0csGxL40/c56rQ9uuEgPo1IeGPVXgp0/Pru9jRSfzCWVgeN0c4bZHPrLTpfd3TCjDz0
BUWNiPL2Y7Hpv1y7w1GvLQAA
_ATEOF



$at_traceoff
echo "$at_srcdir/t_merge_normalization_edge_case.at:164: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o parent.gz parent.gz.b64
else
  \$UNB64_COMMAND <parent.gz.b64 >parent.gz
fi
"
echo t_merge_normalization_edge_case.at:164 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o parent.gz parent.gz.b64
else
  $UNB64_COMMAND <parent.gz.b64 >parent.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o parent.gz parent.gz.b64
else
  $UNB64_COMMAND <parent.gz.b64 >parent.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_normalization_edge_case.at:164: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_normalization_edge_case.at:164: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"parent.gz\" != \"parent.gz\"; then
    mv parent.gz parent.gz
  fi
  gunzip parent.gz
else
  \$UNGZ_COMMAND <parent.gz >parent
fi
"
echo t_merge_normalization_edge_case.at:164 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "parent.gz" != "parent.gz"; then
    mv parent.gz parent.gz
  fi
  gunzip parent.gz
else
  $UNGZ_COMMAND <parent.gz >parent
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "parent.gz" != "parent.gz"; then
    mv parent.gz parent.gz
  fi
  gunzip parent.gz
else
  $UNGZ_COMMAND <parent.gz >parent
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_normalization_edge_case.at:164: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_normalization_edge_case.at:165: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o left.gz left.gz.b64
else
  \$UNB64_COMMAND <left.gz.b64 >left.gz
fi
"
echo t_merge_normalization_edge_case.at:165 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o left.gz left.gz.b64
else
  $UNB64_COMMAND <left.gz.b64 >left.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o left.gz left.gz.b64
else
  $UNB64_COMMAND <left.gz.b64 >left.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_normalization_edge_case.at:165: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_normalization_edge_case.at:165: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"left.gz\" != \"left.gz\"; then
    mv left.gz left.gz
  fi
  gunzip left.gz
else
  \$UNGZ_COMMAND <left.gz >left
fi
"
echo t_merge_normalization_edge_case.at:165 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "left.gz" != "left.gz"; then
    mv left.gz left.gz
  fi
  gunzip left.gz
else
  $UNGZ_COMMAND <left.gz >left
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "left.gz" != "left.gz"; then
    mv left.gz left.gz
  fi
  gunzip left.gz
else
  $UNGZ_COMMAND <left.gz >left
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_normalization_edge_case.at:165: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_normalization_edge_case.at:166: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o right.gz right.gz.b64
else
  \$UNB64_COMMAND <right.gz.b64 >right.gz
fi
"
echo t_merge_normalization_edge_case.at:166 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o right.gz right.gz.b64
else
  $UNB64_COMMAND <right.gz.b64 >right.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o right.gz right.gz.b64
else
  $UNB64_COMMAND <right.gz.b64 >right.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_normalization_edge_case.at:166: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_normalization_edge_case.at:166: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"right.gz\" != \"right.gz\"; then
    mv right.gz right.gz
  fi
  gunzip right.gz
else
  \$UNGZ_COMMAND <right.gz >right
fi
"
echo t_merge_normalization_edge_case.at:166 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "right.gz" != "right.gz"; then
    mv right.gz right.gz
  fi
  gunzip right.gz
else
  $UNGZ_COMMAND <right.gz >right
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "right.gz" != "right.gz"; then
    mv right.gz right.gz
  fi
  gunzip right.gz
else
  $UNGZ_COMMAND <right.gz >right
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_normalization_edge_case.at:166: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



PARENT=fe24df7edf04cb06161defc10b252c5fa32bf1f7
LEFT=f4657ce998dd0e39465a3f345f3540b689fd60ad
RIGHT=1836ed24710f5b8943bed224cf296689c6a106c2

PVER=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify parent`
LVER=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify left`
RVER=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify right`

$at_traceoff
echo "$at_srcdir/t_merge_normalization_edge_case.at:176: test \$PVER = \$PARENT"
echo t_merge_normalization_edge_case.at:176 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PVER = $PARENT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PVER = $PARENT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PVER = $PARENT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_normalization_edge_case.at:176: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_normalization_edge_case.at:177: test \$LVER = \$LEFT"
echo t_merge_normalization_edge_case.at:177 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $LVER = $LEFT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $LVER = $LEFT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $LVER = $LEFT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_normalization_edge_case.at:177: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_normalization_edge_case.at:178: test \$RVER = \$RIGHT"
echo t_merge_normalization_edge_case.at:178 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $RVER = $RIGHT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $RVER = $RIGHT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $RVER = $RIGHT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_normalization_edge_case.at:178: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_normalization_edge_case.at:180: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net fload <parent"
echo t_merge_normalization_edge_case.at:180 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <parent" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <parent ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <parent ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_normalization_edge_case.at:180: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_normalization_edge_case.at:181: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net fload <left"
echo t_merge_normalization_edge_case.at:181 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <left" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <left ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <left ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_normalization_edge_case.at:181: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_normalization_edge_case.at:182: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net fload <right"
echo t_merge_normalization_edge_case.at:182 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <right" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <right ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <right ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_normalization_edge_case.at:182: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_normalization_edge_case.at:184: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net fmerge \$PARENT \$LEFT \$RIGHT"
echo t_merge_normalization_edge_case.at:184 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fmerge $PARENT $LEFT $RIGHT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fmerge $PARENT $LEFT $RIGHT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fmerge $PARENT $LEFT $RIGHT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_normalization_edge_case.at:184: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_normalization_edge_case.at:185:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_merge_normalization_edge_case.at:185 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_normalization_edge_case.at:185: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_normalization_edge_case.at:186: mv stdout merge.monotone"
echo t_merge_normalization_edge_case.at:186 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout merge.monotone ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout merge.monotone ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_normalization_edge_case.at:186: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# in this case the output should be the same as right.
$at_traceoff
echo "$at_srcdir/t_merge_normalization_edge_case.at:189: cmp merge.monotone right"
echo t_merge_normalization_edge_case.at:189 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp merge.monotone right ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp merge.monotone right ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_normalization_edge_case.at:189: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  120 ) # 120. t_undo_update.at:1: (todo) undo_update command
    at_setup_line='t_undo_update.at:1'
    at_desc='(todo) undo_update command'
    $at_quiet $ECHO_N "120: (todo) undo_update command                   $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "120. t_undo_update.at:1: testing ..."
      $at_traceon


# This test is a bug report.


# "update" is the only command that modifies the workspace, i.e.,
# it is the only command that may destroy data that cannot be easily
# recovered from the database.  So it should be undo-able.
#
# This wouldn't be that hard to do -- before starting an update, make
# a note of all file modifications being applied, and save copies of
# them somewhere under _MTN/.  The only tricky part is making sure we
# can undo tree rearrangements.
#
# For bonus points, use this to implement "workspace rollback" --
# right now, we can't modify the workspace atomically.  But if we
# always saved this information before touching any files, then we
# could also save a marker file when we start munging the filesystem,
# that we delete when finished.  When monotone starts up, it can check
# for this marker file, and either rollback automatically or demand
# the user do so or whatever.
#
# Making this work requires some careful thought, of course -- one has
# to make sure that rollback is idempotent, it'd be nice if rollback
# information didn't immediately overwrite undo information (so an
# interrupted update didn't kill undo information after a rollback),
# etc.
#
# It'd also be nice if there was a "redo_update" to un-undo an update,
# I suppose...

# Are there any other operations that mutate the workspace?  They
# should all be reversible somehow...

$at_traceoff
echo "$at_srcdir/t_undo_update.at:35: false"
echo t_undo_update.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; false ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; false ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_undo_update.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  121 ) # 121. t_change_empty_file.at:3: modification of an empty file
    at_setup_line='t_change_empty_file.at:3'
    at_desc='modification of an empty file'
    $at_quiet $ECHO_N "121: modification of an empty file                $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "121. t_change_empty_file.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_change_empty_file.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_change_empty_file.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_change_empty_file.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_change_empty_file.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_change_empty_file.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_change_empty_file.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_change_empty_file.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_change_empty_file.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_change_empty_file.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_change_empty_file.at:5: rm test_keys"
echo t_change_empty_file.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_change_empty_file.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# First of all, add an empty file.
cat >foo1 <<'_ATEOF'
_ATEOF

$at_traceoff
echo "$at_srcdir/t_change_empty_file.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo1"
echo t_change_empty_file.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_change_empty_file.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_change_empty_file.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah"
echo t_change_empty_file.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_change_empty_file.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Add some contents to the previously added file.
cat >foo1 <<'_ATEOF'
Some contents.
_ATEOF

$at_traceoff
echo "$at_srcdir/t_change_empty_file.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah"
echo t_change_empty_file.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_change_empty_file.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV=`cat _MTN/revision`

# Verify that the latest revision contains a patch, rather than a delete/add
# sequence (as reported in bug #9964).

$at_traceoff
echo "$at_srcdir/t_change_empty_file.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision \$REV"
echo t_change_empty_file.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $REV" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $REV ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $REV ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_change_empty_file.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_change_empty_file.at:27: grep '^patch \"foo1\"\$' stdout"
echo t_change_empty_file.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^patch \"foo1\"$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^patch "foo1"$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^patch "foo1"$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_change_empty_file.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_change_empty_file.at:28: grep 'add' stdout"
echo t_change_empty_file.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'add' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'add' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_change_empty_file.at:28: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_change_empty_file.at:29: grep 'delete' stdout"
echo t_change_empty_file.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'delete' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'delete' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_change_empty_file.at:29: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  122 ) # 122. t_largish_file.at:1: largish file
    at_setup_line='t_largish_file.at:1'
    at_desc='largish file'
    $at_quiet $ECHO_N "122: largish file                                 $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "122. t_largish_file.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_largish_file.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_largish_file.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_largish_file.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_largish_file.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_largish_file.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_largish_file.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_largish_file.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_largish_file.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_largish_file.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_largish_file.at:2: rm test_keys"
echo t_largish_file.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_largish_file.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_largish_file.at:3: echo \$UNB64_COMMAND"
echo t_largish_file.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_largish_file.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test -n "`command -v gunzip`" 2>/dev/null; then
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  UNGZ_COMMAND="gunzip -c"
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_largish_file.at:3: echo \$UNGZ_COMMAND"
echo t_largish_file.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNGZ_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_largish_file.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# Check that we can handle a 15 meg file in the database

# This is only 'largish" -- we should check for >4 gigabytes too, for
# a real "large file", but that would be kind of rude from the test
# suite.

# We used to use dd here to generate the file, but MinGW has no dd

cat >largish.gz.enc <<'_ATEOF'
H4sICOSeIUICA2xhcmdpc2gA7MEBAQAAAICQ/q/uCAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAACA24NDAgAAAABB/197wwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
wEXMQfjCwOHkAA==
_ATEOF



$at_traceoff
echo "$at_srcdir/t_largish_file.at:286: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o largish.gz largish.gz.enc
else
  \$UNB64_COMMAND <largish.gz.enc >largish.gz
fi
"
echo t_largish_file.at:286 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o largish.gz largish.gz.enc
else
  $UNB64_COMMAND <largish.gz.enc >largish.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o largish.gz largish.gz.enc
else
  $UNB64_COMMAND <largish.gz.enc >largish.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_largish_file.at:286: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_largish_file.at:286: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"largish.gz\" != \"largish.gz\"; then
    mv largish.gz largish.gz
  fi
  gunzip largish.gz
else
  \$UNGZ_COMMAND <largish.gz >largish
fi
"
echo t_largish_file.at:286 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "largish.gz" != "largish.gz"; then
    mv largish.gz largish.gz
  fi
  gunzip largish.gz
else
  $UNGZ_COMMAND <largish.gz >largish
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "largish.gz" != "largish.gz"; then
    mv largish.gz largish.gz
  fi
  gunzip largish.gz
else
  $UNGZ_COMMAND <largish.gz >largish
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_largish_file.at:286: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_largish_file.at:288: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add largish"
echo t_largish_file.at:288 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add largish" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add largish ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add largish ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_largish_file.at:288: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_largish_file.at:289: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_largish_file.at:289 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_largish_file.at:289: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


BASE_R=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_largish_file.at:292: mv largish largish.orig"
echo t_largish_file.at:292 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv largish largish.orig ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv largish largish.orig ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_largish_file.at:292: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_largish_file.at:294: echo foo > largish"
echo t_largish_file.at:294 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo foo > largish ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo foo > largish ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_largish_file.at:294: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_largish_file.at:295: cat largish.orig >>largish"
echo t_largish_file.at:295 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat largish.orig >>largish ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat largish.orig >>largish ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_largish_file.at:295: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_largish_file.at:296: echo bar >>largish"
echo t_largish_file.at:296 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo bar >>largish ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo bar >>largish ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_largish_file.at:296: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_largish_file.at:297: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_largish_file.at:297 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_largish_file.at:297: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


MOD_R=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_largish_file.at:300: mv largish largish.modified"
echo t_largish_file.at:300 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv largish largish.modified ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv largish largish.modified ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_largish_file.at:300: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_largish_file.at:302: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE_R base"
echo t_largish_file.at:302 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R base" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R base ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R base ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_largish_file.at:302: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_largish_file.at:303: cmp largish.orig base/largish"
echo t_largish_file.at:303 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp largish.orig base/largish ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp largish.orig base/largish ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_largish_file.at:303: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_largish_file.at:304: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$MOD_R modified"
echo t_largish_file.at:304 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$MOD_R modified" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$MOD_R modified ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$MOD_R modified ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_largish_file.at:304: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_largish_file.at:305: cmp largish.modified modified/largish"
echo t_largish_file.at:305 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp largish.modified modified/largish ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp largish.modified modified/largish ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_largish_file.at:305: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  123 ) # 123. t_add_intermediate__MTN_path.at:3: files with intermediate _MTN path elements
    at_setup_line='t_add_intermediate__MTN_path.at:3'
    at_desc='files with intermediate _MTN path elements'
    $at_quiet $ECHO_N "123: files with intermediate _MTN path elements   $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "123. t_add_intermediate__MTN_path.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_add_intermediate__MTN_path.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_add_intermediate__MTN_path.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_add_intermediate__MTN_path.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:5: rm test_keys"
echo t_add_intermediate__MTN_path.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:7: mkdir -p dir1/_MTN"
echo t_add_intermediate__MTN_path.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir -p dir1/_MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir -p dir1/_MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:8: mkdir -p dir2"
echo t_add_intermediate__MTN_path.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir -p dir2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir -p dir2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:9: mkdir -p dir3"
echo t_add_intermediate__MTN_path.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir -p dir3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir -p dir3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Check both implicit recursive add...
cat >dir1/_MTN/testfile1 <<'_ATEOF'
testfile 1
_ATEOF

cat >dir2/_MTN <<'_ATEOF'
_MTN file 1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add dir1"
echo t_add_intermediate__MTN_path.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add dir2"
echo t_add_intermediate__MTN_path.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_add_intermediate__MTN_path.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# ...and explicit add.
cat >dir1/_MTN/testfile2 <<'_ATEOF'
testfile 2
_ATEOF

cat >dir3/_MTN <<'_ATEOF'
_MTN file 2
_ATEOF

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add dir1/_MTN/testfile2"
echo t_add_intermediate__MTN_path.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir1/_MTN/testfile2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir1/_MTN/testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir1/_MTN/testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add dir3/_MTN"
echo t_add_intermediate__MTN_path.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir3/_MTN" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir3/_MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir3/_MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_add_intermediate__MTN_path.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout outdir1"
echo t_add_intermediate__MTN_path.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout outdir1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout outdir1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout outdir1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:30: cmp dir1/_MTN/testfile1 outdir1/dir1/_MTN/testfile1"
echo t_add_intermediate__MTN_path.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp dir1/_MTN/testfile1 outdir1/dir1/_MTN/testfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp dir1/_MTN/testfile1 outdir1/dir1/_MTN/testfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:31: cmp dir1/_MTN/testfile2 outdir1/dir1/_MTN/testfile2"
echo t_add_intermediate__MTN_path.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp dir1/_MTN/testfile2 outdir1/dir1/_MTN/testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp dir1/_MTN/testfile2 outdir1/dir1/_MTN/testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:32: cmp dir2/_MTN outdir1/dir2/_MTN"
echo t_add_intermediate__MTN_path.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp dir2/_MTN outdir1/dir2/_MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp dir2/_MTN outdir1/dir2/_MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:33: cmp dir3/_MTN outdir1/dir3/_MTN"
echo t_add_intermediate__MTN_path.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp dir3/_MTN outdir1/dir3/_MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp dir3/_MTN outdir1/dir3/_MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# renames

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:37: mv dir1/_MTN/testfile1 dir1/_MTN/testfile1x"
echo t_add_intermediate__MTN_path.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv dir1/_MTN/testfile1 dir1/_MTN/testfile1x ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv dir1/_MTN/testfile1 dir1/_MTN/testfile1x ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:38: mv dir2/_MTN dir2/TM"
echo t_add_intermediate__MTN_path.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv dir2/_MTN dir2/TM ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv dir2/_MTN dir2/TM ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:39: mv dir3 dir3x"
echo t_add_intermediate__MTN_path.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv dir3 dir3x ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv dir3 dir3x ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename dir1/_MTN/testfile1 dir1/_MTN/testfile1x"
echo t_add_intermediate__MTN_path.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename dir1/_MTN/testfile1 dir1/_MTN/testfile1x" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename dir1/_MTN/testfile1 dir1/_MTN/testfile1x ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename dir1/_MTN/testfile1 dir1/_MTN/testfile1x ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename dir2/_MTN dir2/TM"
echo t_add_intermediate__MTN_path.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename dir2/_MTN dir2/TM" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename dir2/_MTN dir2/TM ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename dir2/_MTN dir2/TM ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename dir3 dir3x"
echo t_add_intermediate__MTN_path.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename dir3 dir3x" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename dir3 dir3x ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename dir3 dir3x ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:44: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_add_intermediate__MTN_path.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:46: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout outdir2"
echo t_add_intermediate__MTN_path.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout outdir2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout outdir2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout outdir2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:47: cmp dir1/_MTN/testfile1x outdir2/dir1/_MTN/testfile1x"
echo t_add_intermediate__MTN_path.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp dir1/_MTN/testfile1x outdir2/dir1/_MTN/testfile1x ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp dir1/_MTN/testfile1x outdir2/dir1/_MTN/testfile1x ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:48: cmp dir1/_MTN/testfile2 outdir2/dir1/_MTN/testfile2"
echo t_add_intermediate__MTN_path.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp dir1/_MTN/testfile2 outdir2/dir1/_MTN/testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp dir1/_MTN/testfile2 outdir2/dir1/_MTN/testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:49: cmp dir2/TM outdir2/dir2/TM"
echo t_add_intermediate__MTN_path.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp dir2/TM outdir2/dir2/TM ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp dir2/TM outdir2/dir2/TM ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:50: cmp dir3x/_MTN outdir2/dir3x/_MTN"
echo t_add_intermediate__MTN_path.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp dir3x/_MTN outdir2/dir3x/_MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp dir3x/_MTN outdir2/dir3x/_MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# explicit drop

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:54: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop dir1/_MTN/testfile2"
echo t_add_intermediate__MTN_path.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop dir1/_MTN/testfile2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop dir1/_MTN/testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop dir1/_MTN/testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:55: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_add_intermediate__MTN_path.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:57: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout outdir3"
echo t_add_intermediate__MTN_path.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout outdir3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout outdir3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout outdir3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:58: cmp dir1/_MTN/testfile1x outdir2/dir1/_MTN/testfile1x"
echo t_add_intermediate__MTN_path.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp dir1/_MTN/testfile1x outdir2/dir1/_MTN/testfile1x ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp dir1/_MTN/testfile1x outdir2/dir1/_MTN/testfile1x ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:59: test ! -e outdir3/dir1/_MTN/testfile2"
echo t_add_intermediate__MTN_path.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e outdir3/dir1/_MTN/testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e outdir3/dir1/_MTN/testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# recursive drop

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:63: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop --recursive dir1"
echo t_add_intermediate__MTN_path.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop --recursive dir1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop --recursive dir1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop --recursive dir1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:64: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_add_intermediate__MTN_path.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:64: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:66: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout outdir4"
echo t_add_intermediate__MTN_path.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout outdir4" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout outdir4 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout outdir4 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:66: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:67: test ! -e outdir4/dir1/_MTN/testfile1x"
echo t_add_intermediate__MTN_path.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e outdir4/dir1/_MTN/testfile1x ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e outdir4/dir1/_MTN/testfile1x ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:67: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:68: test ! -e outdir4/dir1/_MTN/testfile2"
echo t_add_intermediate__MTN_path.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e outdir4/dir1/_MTN/testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e outdir4/dir1/_MTN/testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:69: test ! -e outdir4/dir1/_MTN"
echo t_add_intermediate__MTN_path.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e outdir4/dir1/_MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e outdir4/dir1/_MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_intermediate__MTN_path.at:70: test ! -e outdir4/dir1"
echo t_add_intermediate__MTN_path.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e outdir4/dir1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e outdir4/dir1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_intermediate__MTN_path.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  124 ) # 124. t_merge_3.at:1: (minor) test a merge 3
    at_setup_line='t_merge_3.at:1'
    at_desc='(minor) test a merge 3'
    $at_quiet $ECHO_N "124: (minor) test a merge 3                       $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "124. t_merge_3.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge_3.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_merge_3.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_3.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_3.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_merge_3.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_3.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_3.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_merge_3.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_3.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_3.at:2: rm test_keys"
echo t_merge_3.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_3.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_merge_3.at:3: echo \$UNB64_COMMAND"
echo t_merge_3.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_3.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test -n "`command -v gunzip`" 2>/dev/null; then
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  UNGZ_COMMAND="gunzip -c"
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_merge_3.at:3: echo \$UNGZ_COMMAND"
echo t_merge_3.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNGZ_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_3.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# This test is a bug report.


# This is a real merge error -- it should be a clean merge, but it
# produces a conflict.

cat >ancestor.gz.b64 <<'_ATEOF'
H4sICLwJGEICA3AA7b1rcxtHkij6Hb+ihAnJgAxCJv0UafEc22PPKs6sZmKtuXtOeB2IfkFs
CejGdDdI0V6d334rM+v96G6AlOS7dxkSCXTXIysrKysrMyvzyROW1bvbpnx11bHZD3N29tln
X7BXTXKb1xW7qpOmYN+Kr/9zV6f122VWby8nT56wZLNhWK9lTdEWzXWRL+H5psyKqi1y1tWs
uyrYbp/yR2xf5UWDD7qi2basXuOXv7z4B/vL3//KZpfP2Nkc6rdFgW/W5aZgP/zt7//n+Yu/
sHXdsLzoknLTTqBQd1W2jP+7qm/Ybb1n06R9A4WmWPWHp0/5sKq2S6qOPjT7rONNbJOsqdsl
Y4+TKn8MDUHlq+S6AGjzmrU1SwveTsGS6pbVvLEGAWlZkmVlXlQdH/YtK6tss88LBLfLy6pb
Xi1ZclO09bZYTv6UF+uyKthq9fPLP/+w+uFvL35++d2Ll6t//e6Hf/vbz5PJn0R19m2yeVU3
ZXfFMaoflhxBCYfWelbzMRSJVW5Ttp35/brInFrF2+7JVdJerbbJ7tLsN615e09wYLdtV2yf
7JLuanm12116hdorTgP5atc14feb4m2ZJZtVlrQdldBFpmnSltmqrJdXV1PjcXaVVK+KVVt0
7gsxaa3zPC/X6xWHMbtyXsAQ/Pb5hBRNVTTO42q/LRoOz3WdJanzrk2qsrvFhzCr9b7hFJBs
bls+9WVF9IYUeZXsdkXFavhXIBXf1GydbMtNWQBVQ+2m2CQdXwFEd3u+PM5ZwgDHK2qUN8ap
MWF52eCk3cIMwerBheWUzOqGt7Crq7xlxdsk6zgBcmpNWFU322RT/sZ7gnpYixNJ0wB2t5xW
L2A13DJYxADlTXKL6+6Gk1xZvYKXSMHJtuBjXENrXVlXAgxcuxYgLYeUjxGawhd8qrqCr6Yi
ya6MJ7AuE77Udmzd1FtsikPUlhwghkuoXJdF07JZV+btHIbCKX4r24HPHIE74CmcEHhLbbHl
JFFm0FKxwYHBKBKm6ZfdXJW8Lqd1/ri73RVshpMFXEOieL4AlPGxLhDJVY6IbqC1TVm9YbOk
ovXOwZov4Tcf8VW93+ScJXD2Vf5zz7kC8A/eicK3RM5yMoF++cpnBacz9jvbwfeV6n4hHiBc
7+jLhaqz/+oL6PFiAhjk3JJ/Zk1ddyv48Ix9djGZEDFN+INVy8kzKya/TxgWzLrmgj6KN7M5
O4enM9XEp+x0zn5/JypUnDHwMr+z5zNeij14xv7x/MXLr75Y/TD77O3a+ZnPL/h8cCquoMlP
P71g7ybvLvRw93xqX1WcBjc1pylECt8iOLkCASqw7eec3N8UDQ7AfsHgxYzz1PNzXhGIFFkC
e8TaOS8MFRjjjGfDiWxVFTcX+MBpY5dxlBEPWNKfWbsQFeZUA8keVjzLrorsDcfIDaznFl+W
azYTpfE79YqVtnsODCeHhF3zlZcjCQJjuhJF1HfWbXcr/e2ZfjNrBQy6QT5GvrVVanV/BoR7
ytSIWtl6e36uG29l09s3TrvPZ9V+s1kBsfOn7D//k3366cyos0yLV2U1m8/Zs2dmW8uiyvlT
auYd/hYzv8vgITwy52ZT12/2u5mH/jnNmpow0YiYElkrm1Obu6a85mzjnH+RjPtbu8lL8eIC
CU8skRBFAdNahV7Eqk3g7QqxpZ7N5kiYwfIMiyKBxbpaIglPpzg6MXJRi8Ov4AAinuhp8nGI
QCj0w0wFYRVt6kUGDFSxBmJwAAkyHM4bL/w1BwBcEOXIl9DITHAM/QBbXMimFl478wuruPqk
FjEyWLuUfrcjsedZbz1c+6povCx9JYKZ8Nc72JG/BcBhtOzlpdicxY7EGQFNOt9NV53qYDaf
vVQNX4tGAUm/M5OwaUpRBPqWWricXQvqNlnlavWq2q+yt2/Pz6VY9i3H6UJjY6HggReX7NLY
Vy+G28FfbgtYmQsGfFtKC1i3uiFczLukFAsOSy6MLi/tTe4CZSOgwBY3UL77c94kKZpksZyI
HYGg8o6YI8QDkLGnJMFM9X6PAgjt7qoSFx8K2rRplweRPUsqkCquuRxRUFt8aq6LCoQMzkBB
8MD9Ew8h5U6INPADNHxyydgvSPbwcYb0jMibL2Qx/TOy2HK5ZN7Prx+v415isRfugk1Yz49B
JAgIkNWit4aiQJeNXxqkUNV5MWZt4DGDbznqHPKt3cZYWMRqsGgxui3oUvwbdAQ82u73/By5
wUoe1xSfKC3WXZ5crssGWZHuDAbt9QEPj+6jLfirfOl1xUftd1Tmd+2H/mBH1zUn7Ik+0p2f
J3mOos9Myz+yvYTaez6zzilLXqOgOi0fAhdCEhRN4oW0oBIvU1Zt0XS8qSPAXChupjABdHTv
0D+f5cWmS6x64smBQ2SynniGqxYlBli6Mz4i54lm02LLmM+jmNrtNrcrbD+ALPjSw0JcRLZN
dkDpvFVINzEFfYaR1YsFAtV5iABBP9Hx8zaLrogRSx6mCqpk0UUeoAu7WGzS7VJicPkAvHyN
Hw4urzQCWiw1BCwWGoK1QYFsaCFaD9PwCKilwYVoF4uNwS4VW1PpfGBY4Sk4ZlR6XvoG1Tsv
VqGhIU1Q0rbG5CuYzs9dUdx6HZTJzQ3FImsYFRa0qZ09eoTcwqQqvyg+FSWtudNF7cdOWbtV
66koafBdXdB4iFgbhzR+HOluZ0P4WMpiAQS47xyiDr8MVbS2JXqlBjI4Di6orXQDAUKHJ4Fh
ehsmlXvwjHm75GHAmPgbD06AUyuAAuz5MJDMmVnxXWYEWFzE/+n5//7XH8+VmaOsivW6zErc
rNM9P7Vud019jd207AaVlE3xz30JhgsG2vICzv3UltJCoxXFXgUz/oSv4KtkR5pWkOp4EXGu
SnbzJfuJF6nqG2rrpvhks2FJ2+63YKVJOrYuboSF5Kbkr9JC9gDtMsIQKPp5feheMpzdtwoP
C/Xp0pNDmzV75hC30F1JXRcUeeCWoXlin37arOdKpdespfgK6xeRLtoQdMDxVBhKm3WyaYs7
TDaXK8bTYGDzUjQYGluY2fQxFhST1OJ3tgZ36dvNGkxePx5k7vZWYPBW87HmbRw+i63z76iU
ws0IyJjT/AY08FnRtnXTTiZltQEzW2eIi1oFtiLVV0BBtJuzCepvpHJtKbRk2JVolHRcgWbx
lDam0e7WbtA+YOoGtfpvoEFS0xlNwtlO62rwWKe/ekup51hqgmgCYbauNXojmzeOiDR/ig3l
++0O1MeTJ4/VORUkqAm8MBVVYUNA4LzvqbhU6YbA+uvsp9n0+x//8vyF6t0s/cnD9pP/qKZz
9pCRFl2wKqdVf9DAnTyOVOKi1UyotM0ICMtDVAY9zEWvcjroI6HO0MNjlR9f/HkM8O8COMWR
jMCmYcRTBbooBqlgGHd9lMKR1nZhrPHnvWjTXZ7jun+IylM04sFHXLQP2wXpzh62AJcaH4fP
+OwsnHLO3JceFzEWQjk3252F2INdGlibYxFk/wMM282UnZMd2wI1al0wbS4O/7B7nPfRT3Dq
QpQjVb/jlqJruKZicQoCza5PQCbJsk/ZlOHSmPLpJf1WuBAtGixlrB9v5KEu+cAfPyEuZZkF
kUmZOIFtkT+H7Y8Lm2X7ui4rcYbij7RIc2kc9SZRnWqkSirtT36Rko8MrTny5QoNY/C0rKtZ
IhfVgiW0juK60VSXTYfKYm90YCyaGQKxIFiUJRGRDVLWg1ebOk02K+FQAa4Qb4vcXsrPqQ0p
dShC5fMwJGX5z4bPnYhOkivE9CVVMZPaIvMAGjp/msXolBg4epLYaB07Q6dOs5jVlvkQClmH
zchZsx9Vag8ffYL//ycilcjyGA5bHhMs3nZNknWoHeGH3Spf2YoT8xzDAou5rHrME6El/oi4
XXtwNWJ6LU1S7KjFes5aJXpNhPdl/jy2LxO4Up8kBRlVX4BlvHekm3faPsu0gfY72szx8/eX
wSnBfvQgeY3vNd63C42m7y7JfwS56jLbcAqfaUlFdWO3FETPNoydbRQ5Mby8i9HZG36ILoQc
722k/mYSJgVqZA6mb7MPWrNVTZr8dlVXojtaC5FOd0m/gQ1+HOVzl6ChV2mci018SyMILiJv
qTH4DMZnxjw0LfRg9VuiDF53YTaARUL7N7Xgln0XQh4VATNaWbQclZ0S58o7IXAUEgEqoWrG
Tn4rnJ1w3I7Adk0MIHsAfaBrZzMQ8BRkE9r2V4Qtq7kYdho9qqGtytx0DH2DRhb/hJ5wnJOf
XBqlgQIjivqBfoITwReP2b+Bi65Vzi1qpLsEN6LgjOGmA0eYBSFRyp8hBMIxY46rYHghLySY
muaHSNeoYukg+aIqwNcDVJFJi94XWw7Sq4IcvMF1sl6TD0ZZXSdNmZDDmvLXAPdTDgJHYVHV
+1dXUI+87pKOmt0U18VmGWEBckdvm4xjSu3vLaE6uj9b4sKip5X5qGZAnhhoRWANRY0sqTiG
QRva7jZlB666DJhNkbP0VlRsl8LcY2r3wH2IE/enttJePH32zIJAPBaG5OPaAdh1OxEGaYlx
C0uIizJVp44J92AdH9lx2AxhzpsRR0jWn+NqzB4R19FnhtSZ2gDNHE2mDYvsNKhk/QjABYRg
n1NGuO/H4BSeadOAjZi/ycu0MGyzlrA6L+psIUU/Zuv5+r08AjKh2lK8/l8z5dCAFoDHpRI0
h47WZgd0xH4tzFe2e4R+L/w/ZnpfuEWTxeu5W/JBqCiYsuyi74RkKzEeH2epxxlGqgl2AIOH
I+OB9rQ1B4F+0+X4AQeKevgrtV9KT00YQmwGoKwldg06HIXG5AhuD8Y5JDlT6QjBvnAScfTd
oTnAFaHrikvm29WuAV63Ak3cLKBx3rXOaQE990RlOio8n+3EyOUNB1KwmiMZo4beGQSIhLeL
Ex2amfZNA6dkZTwxxGYcP/56Zpo/nHMajiWpspZTvHjHed+mYDM1QBoYdIWD0s9pbJrCrfk1
pjsyS/DLoV4AxOkOH/n8Ah8LmQjLusTsqcyxOxQ15BRZFJlyanxjNsLPN4VV4neHggXywx1d
hDTR4Yl/TROvh+3WFbzToCanAN+w+JBvik/4fgWLeIH3xYQdAm90JBu8SYhvncpq5SM3AuDR
suctWPsah6vgfz0XtTzgBAn6FfxhOmYLNWOOocKp+W7ifkLqhnukRFBaCa1oKeDxp/TJisAX
Bq1rvbJB3u9w6TsLxeIA7mK5iPEgus+ljkNl5R/kA1wJ4VBr2fCMBk9l39lZtP4+uJFNRY41
SCvZ5rEN0V9Fqo61Zs2ph2tKZUU+Ei4pKAbUj5Md2v48n8wIJAOO6T0/cYToO1JidoRDKQ5b
PrL5n3wq2N8upsPz+S7Zp3r2uOCWKA5I4yhVnHPUgIVGY9x9HcDvOZM2zjnoXGfdnMynM3j9
+yS6neBRoafz6M0cs086htAX6p6edLcSCvqOvO5gcCwXZQHg8DUjcS2xMQ9S+h5Vd6se0mUq
1B3LR+ijMQxk4LyFXjchOIfuOJluF3T2kbDbwEtXGyoDw9DjsN/RiOwhvQvqkukG8Cp5FRPl
ToP6w1DJs7m+DuqoznYJ2X2BRZ6KB9KRi1e8oCOkba6eIkwg6E6B7sdLhKcuDz6N8uAhGeOM
WItnEpHyxZnDZ/wN2eLJzsvXPk9Td4P4uWTc9uBWhB9BC87TaGsGHJYl92h1cGSVC17aGD4A
PYUMI1OIVEUrnDRGFKUCWFb2LXzSVGwJuLV2VWz4mm3NG579F5cmVXGzyuHjzHKeGqw4g+vK
9jNH1hnum/q1b+Y9gkbxopn02Rhsh9E1Lmbfq/LWA7xFdso/0KrolMeAfEcvjUPO75ZgAR3x
BgycSbKHamF3dj7BUNR0hVHHDNEe9W6e1+SdXRyYmOiXGP9hX9FMd7wD8JeliBug1BIunvK+
Nt6OBP1kC448W7i+XFPQgLasXm0KbYZdMvb/4E3ystrt4fr7LV0vp3InMt6B6Onmqm4L1tab
wgyGUGIvDL0pHEgYXkQm3ZkRVAGKw4Kmuzv6auVNwfYtqutUYY6H6qR4W7YdfCF1AWPfbeA+
Nie162Jzu7CApyuf2/2mKx3woZzoKEt4NxBBRpRQ8WDEQDm5USAN9GnGWDJwmuKgANgcgJcQ
IabebOobcNIBxeG1RmPLZjclRwO5K7XU0m6TZKR+5/2UjbxrnjNwduazugAQMn6Qa4v5ubhm
ecJ+mU5/Nb6s69r7voA4Jw099sGq6s5oLVDXak83ZnsdwXy2Mn4A0DjhybtgKdko2hecvVf7
IpNARCu8a24Di62nj+C2SfYMxzj+fIY7KL2ztzoVyWCn4xcMubw9LnV9vhebmlHqQlg3Ltnp
PKb8M9tAcYCJbd4A0tjpexWJZlsoDrAnR41FH6O8UBG7JZGwFZQhgzg4QqHd7PmRbMtPB03D
R/OocFRWV019o0O7XBerdVJu9k0xK5Y3V0lnu16Z4t2rolutMWgBghFyC4Wr4hPPKMyPGZOA
i0KEXDkhSjrsK9ZtdwAnKspmHaoyLZ3SCIGMnE75G3P3MYiU3tlEyrtd7vbt1SpNsjez4SNl
F9ROBdx5+aBNNxStPoEeG6U+wW9CfaK0JTvw4tkZMTx8Hcc9Tp7FMw6YKhsEEVegwyHNhbyO
npmvanDcPUHNNZE/rEry7BUOmoAFsbL5F3E0Ntghf48ICeh6AMWHuUhoAXTneK+ZE7azfdac
V7YhNvwuUM3Ux6s3wRGF7ZiPWCaVCqFxt7YxkPDYCgtgrEO98wRcLg9wdBmN9RDo5CEy8vgm
jophPy311jvRWZuf1PTPPB/x+cXw/sjqTY4sYoGyqtQI2KsJypBDHpSBT6LMyKOlPAAHtNjy
dKmK2ExNKxMABudWh3Ie90sDnMHSrw0dNB6JkGBoQzXtddEDpIQjpqx02Zk8usGoFwrbjqbS
YBB6PiTWra13FIxy9BxGx9zSC6k8ORKokhzioMoSmixioMqhwLFJlQ0CRfcm3pQ7dH/fyViN
7GHLeSw7V77w1tL17zSoWYrfZKAvofsM1CQacB6GZqFPt2xe/yAnKhiHCT3cpPFGcc8j8KDn
H705GqObH6J2jE0HbsslHjVndF7ScccALjjVdmaIHEfeZWPo+GLSYwpS5ZCV9JiDnI1LHMOD
1KvNfP0YMmCMYoh8kCBY4ciBG2g3wW/5ORGE6djw5z0WSTzDOrg5d82QTTAaQnAJBK2iVjeA
454erCk4pIt3Nkszpyo+A6+KCqJpCp+rD4vTEZEM/B12fj/YHhMZ4sjO33kOGHh5kjEVkhNU
PUL5RHIEaU3ggCdDTU13v3z265PdL6e/Plkul/xDdXIK36tfpzLAaIWBCzcY2dTVYpnxRvG+
VM2gQQwzRW1R/EyM9ohaFrg3zg87cMCYcvGNmpmiuCb1P9D7EkdhS5foHElbXyCujCVN9h8j
tepN2tXkd8vf34ifqPUOO9NhRBY5P7fkSjiE2HYBeOKKkUav+tzYHyeQFAHv3hde+Ha/Lt/6
dzy1gvARgzlbaYWQ0TccrLAB4WJKX7Se5TN8ruqDYEolcODiYIMPdvVuJR86MRBJIzJetQUH
YGvV2Dps5aZdOl7uINWru4hwVJc6hAvLRfAApZdxCnfOGTKUZsj77yg9uRQrxPsHnq7cZaXj
FPdB/beP12CIMDqzP8N2wMJl+ytKgEUpWcyB2Ai+IKItGPMlgHMjl+GniGAxiTf6buLEeegh
w8Cauw+i66Nu/vjCWXywffDHprnYBJK/Wgh7zdyN+FZU7b4hn4Fb38bD/zgHdUNHJLVDMecy
MSjeKMyG2w56GshwdqFONOPBUotJ760SERHJlOto+unIKVYERjg+RimojPyGZlC0Z/kdAQyy
sKcrnJg+YYYfGN+qyTfshsu7Wy4xlLzWBiwkHAfC/NLV9YJCUXcdBL/uat0a7OsYwhIXKj8H
FA2ZTLCmcAeB0PtlrgKZ9MrVfjCHhqK+hTkIBYq+ERGo+ZZGUaMt6RkRERaBRFUjtqny1Fpo
CgnHtHWEdGmQoxaNlW+RJx6Px7M9Mn/CUmBqyieDTA8ergKcTzIlQZRGsQcB1qfvQeuCdghH
6YwESFK4MAyTTh2TeVtGTtN5tWcyD5xIufiNeRTLUrVIYw63SCufhZ5iW6JHo7UQBbwL8zyA
rayQ1fWKEx5HDzL2ILeM8szJiItyKjSzZFx3FER2EUFk5wkiO08QEf3buwUuCbEHqInu98Pz
Qt0/3qn7bNbOK9q7GJ66SJjJjzZj/ZKpFPvdLRyPgMbZxNjKvTHPdLkFs2aha2MbPEXLPBxl
43E2FmmHY41OBhc65rgWDdSJIohPcaYxzi1QzBMU9Ov5hbfkfOzLVn3Mu1PWt0605sCAz5tB
uvGtWwO/TnSxYEFrXbFZr3ow788mOu6t4nPqzCoV7+0hOLujAv0o4CNXfYwCfb7OBow6Aqxt
m4HWzGLOWUNrmI8RlkpLTvLa0msP9P+SCTtWUD2PfvShBVbUG3JYhxaCKiC8DWnRfOpf0y0G
TTcWUWhebqmuJiOUZj6jOq6vkGLMXE0UotiL2DXriQymn8Xv5/vcr989kYoYTI3qdtudfDWR
0pbSS41cSeNUUL/HriT5pHNhyIadXYJoUs3wcCC01xSmUb4PqS5ei1CGqoyzPgGE11oPIZ4H
G8ZLM+L4ckgXRr1gZ31iMEQ8Qu21FmoGiMBl+O+TRK2YDUSise7MRpVFHEc1tobyZ3kXBWoS
VldjJi0KNMj39YTvJpQqDd3y0HUPmBKeiJsi3ZebvOVYh7Z6a9b7Dqri84VIzob+d9WtjEAK
R2vM2dSgt6HZ3IyTMOZ94iXFVkoZtlQJ1Gqj5XbJBDxQgxLFPU42kFjrMWv3WVYUeXvBIA0c
uGUB8Cyv+V9ILQUQlWuq+Qk8Qj36es37K2SmForuCjenqVXYQjjyCBmdhUQaNCFjaVNaUyjH
5JhCC5EdIKqwXktNTaBGQGKx5mMSjvEunIqo6Hj9WE8RgSQZiAENxgYmSpGdikzGlI5QLhsZ
hRGGKaVJQ+4kZAll3ERzTPPgdtCZDXXlvLB5ahPXQOHdA3rpuUIfpkJWk9ajSH5mFnO4pbXz
Tu5FrXyESnlnmDCHFcq2ZKIlInBMwUACfFlDgklchxRbGdZSuYUoBZB2RgSnxsxxZFYlqMyW
ZuWyWJIarqLcedZiBG+9NWSS5Isfcl2WFVwnANWg2UjLd//sajkZcWEVdn9zSSlFZUQ3bshP
wrvRqu1e7r2DHOyab+WyI39wXG3SBIirTuhEXYyBGnAnojPuqwxyJ4oVaU1/xG4qdyH+d2KD
0RRtvbmWUyhAgMDE5r2NUE+ffrpTHlmDhghnVXkpXahcyJEitNQMtxf7+GBvct1C8jvJr8g7
NsI+HMSAsymiOyk3ByNH9GuYOGO4Q5Ws5eAk6i4k378I82rcDyWrTlozXieR1kPdgHsSQLFh
ZfHI0T6wEeVI2YyS+kl9bBqc5dAQJkC4djjC/Jh8cT/MpS5fBiRFIdQI7TMunq51wnZdmvvD
GQQE/6MOEUqy7r+iH8g+Z9VR9+J1DZG7bmcX1JfWLwLGKnV7jTzHcsQ/0frDls3QgQyzj+o5
wb1LOB57d+AeiqDCFDFwVDxf7TXmHFbU5SsZvXge05WjN6B7FMF0YOj0aRugIOoAmVQYnLox
S2xO00w3eXLc+cruk9b0Hluw4rqo+BvL+ATWJry/omxNnDuUncHtInjQbM0YJrmoOgYbWLp/
0Hh2FFjOYgR4UFqR2g+lGsogFoo+biXbc6N/5AlIGxBhbCU8WY0nxolUeSubfuLKq9dTH4wJ
cLRGFw3HYcy1HGA+Ba+U4iNrn4+81RpVU9HzeL0wkaY9dw0Vjx5QmP7fhg2Ipp51yITo4lv2
9HZ+4UQsGoPC3EYheqC5GMwdDOqsPIDAvBeBhlLucf6e8WdwgHtG4mEJPjyvunCOD6+Yl+bD
xGkSJkrIAiLQOIRbaCWNtyKduzUzMLQjVkPPZ54KSyZxcnVVWsjSb8Izmy6S4elJQiVsgknv
OoO5PYPBFdHkzgTaS6LJe+fPWBNNfuz0OY381569ASaW0JSFotvJGUvEhAUj2iXj94BkDIrV
VvchNgEbgRYDwwxHkO2IXSXXBWa6p2AA4tryrqnTJN3c0uuE0SyD4kDLSBN5DWZbV0to7g20
l2y47JLfCh0D3j0uWtRJwd0towEueYnm7abO0fcHnYIkD6yVaLYkb1twIWr3/JdRBFO6UUPC
7+IGMjtxSTCphDiMp/EmIMYY3sUsPblE4Ynuim8Kps40UISwtJyEQ3GQcJfrSByyjKllnsos
D8bD49TSjIXPgEuXcfSV9fmDMAXrlW0f9JxBy4KgS6qyQo99IgTshE97xUmJn/Jbtm/5nG/W
7CbhE9RdQfDLcyxIpU9AQuczVaevOZTysj4/GBdvd5syK0Fhva1B0zHrrnhbHFm3/EuyKa+L
OW+5ZWlRCHLSYyhyOvDLYCr8uEBkDxMKZx1kw60ohFgbA9OWtwzwQN7duqqol13SQkgDdnLC
m77lyCrI2Q0BSgvS1tO6EK5yxrkM3dRRIcCrg3EAuoErMDhmsMJD6jHZGgyXUqAhdZa5NQJh
XJBjhgRoN3XTIgu5xRmR7eChiBZ6xR7jUnmMa6UqxMrYzg18INao0R1EpmV4hCqBdfCpBrZS
UCAD9K/PunM4Q4lh5WVefSLStcGYFjBC/oTlnEk09S0MUowbniJPxoV8k4CnYedNnQCpzJdo
UABqwzMfhMmkoA2cW7S3cIQSF41kqNULiGvHW9IE86YodoJRYZgGyYdo4lsVOgIyOxGX5SgS
zKjMAVcSQRwZ6Z6TQdFChIxbMHAsJ4JnAIGwP50iI2/F8RUQJ3szDqHUNGpzHqPbxGO8iCD5
JcKGFh1hURanW4O1QpGbBm4w0EpoMbZ8xCFDso3+bSxaW5aLiysmAs5Ewuo1jJU4P9tXJxKx
KlwGZjg/O7k8RbqgvUzE0jVYVHvAvVmxLYa9NJzbpBF9Eg0R92aBLMNfUz/pUzmFHSkowKSQ
EVAC063N/Zu9IUeNgRuauj3HEwPVup7wEILBLzUAzL04oEgZ1fJfRw8Lg+DUxBwioloocRt4
N4lt4yoP0z3s473bavIqKSu5rxq7anuF+TBTscyv6g0Yi5PNBQXtZHkNPBT5AKwEWLitDDAt
liLyb14UC+XA8NGkiyZc5BvLMZH6ZRCsCsJvbMrfxD2gAwMSQO1QbDQRacFJPhDNNADNYPwF
xbFCd+2xMzPEgv0aq4sy/uhicQnECFD06cUFvAyFKQgmxqA7XFhFhzFHXhcsP+hTY/G7Ptca
5Ahjgz6rFWsAuuQQtOFA1IZrM3gHIGx8G9uv17R1SwkCjWQQf6munKtjnDEVb+U2FDd8sFCU
FidXEGorKWNpe0gFzAsw3kOwzzmw14QR3isOMFoEo5TEXfNGhV4VQQLiroIR1z7naux4Z76e
O7C0D/ieksc68/VdeT2kL8eZj3K82g5DdLaY7U4X3elcn1NTEHcWJA/wV2dzEH5R1qLLrAtG
zkIoDvHDkChTGQdnkGOXKMejjMiF/7wF3y4dzA8P4RNbkiKBCw7B9nKjnAfmfraCkiLmJ4py
HSzE6HIZSBQYzf/V11Z6SFvuod9yOxvIJga9Bhd1GmaraXQt277bKmSmHXBlTO/gMJhEAm+S
jyAEOR8SzQI6PydA8h10f6XWPnpBPEOJwYDAopGE+e7j8mbLaTWXCVxH8eImi+RlbbL+/VDK
5QG3bNgYfck819o+dW30XcRHHs7wOuNLLDda5JJKuHg6Him9IYWiEYUUIaXmsSWMntQ6vFwo
rjgOvrQPvnQQvmQYviQC3wfIYTfBaaIvpsJtlGk2ot07QBEY0QOqFCe9nnglxvITXYSnR7/u
O1freytu5ol+AF7jBQwJt3O/1Q4XZRTzL7YKLdXfeXN/fv5vT/7643c/gWJrStMyBRfcxFln
5Rr1LboNx8sC9dPQmnLFrdvuRLG2LoHYqdRRZTe0a4oTIaqB6kO618paZiWj0cloB0aaEuHG
6CXyGK4vMCka8J3MHcIJOkLuFOWQl6NLO+qCn1nIvejnuuc5fjeiKnnfuI5rJNrODwgH8E9N
a4b7pu7EiwzwT+AsVo1AcIDf/cwb63oPF6YFT3C8M4djYohEeWZYNt8vWRQy4rJFYnxp/qCu
gBkdeDFfjHeG+1wESV50MKP2wgQx0o3cXuMlg/Fm/nBJLwOuOLnwvBmw3eSStR+oFoBuw/wa
3/SyamzYUHsCqZu6ucCpX146VHXnPQt4dFBA3dqFnxcsFh0wGAwsEPFPu33BoplfDBKS0lgU
SpATRBMloUEKikh2Q9V607UL4eWwrh8ZGhmQWdRlhtAhLRHaYZmzUH2XKaujNVPyDpAV5VdZ
z4aJT/2Wyy+Q3h0/pfNRrmrahMJXe/ZGGbHIFiOtZrDxCsmStfsdsKh8A3kt13CPphYbNni5
U2Jl3ulJvT7hj0/4eXsD4lSNlh3DLJbXvB/b6ClSoFDnaQ2xpgTJCM2soCQ08slKvIM34B0s
7FLS/pdCH8K2ckuBq+SrRFaVuGCpA8buVsrAEGvQnGzDLMpLEsf1AptLVGHUPuEIwPuNt4M9
phLbbpf0eKBPNVd9nYqWtPnKPmkhDQkCEsEtLO0ivlfctpewKdq/VRublaJ4D21Tz8QIQ2tX
LFWre+DyNgT0REpxRm/0wugQHhBDw192UunoIGVTghdGalFmUxeuYJ0IRnr7MdHmjWluDErf
h7lCy4fj7Xt7gr6927LdQrBxEcg1mH7Vx3q4297Kan4Co4zBi1foMF0Bp3ZDGCx7oZW5vg8B
0q1jTcE7kZZ8lBbQpR5njl2L2cHNevPuNSqdGxyzGh28vpsuaN+QxrdIue+nmimY5Sw7oGWk
ONYcaLAen1uCbkbzkAu3jEoRlBps6sKYLtKpWWzI78ScCKpgc71AlwRvT+obS1rQljRTSLKs
YO1YT/h+kWlkI+ldGgmJQomXrTj1npi1+JT19zKTjlQDmdcT9REoSX82O1OPe2ynycJqSthP
w2VTuyvp4BHauCRnMROQC92Z2Z0s5i2DgCRt1hs8fxlwDpYdKxizMHIl7CGjcrBCD/jO6nGX
vU1ZobWliasN5druWUSB0umo0sctiwmT1/UUK4XoANgsumPBTSV1JfmDrATbPH/IunBr/vcq
+WCrxPOpoF0b/JJ3TZ2BOx6c+Mg7wVtQbooIVxmTgK8DKd9TcIaQ16ICpPuQjo4PhZ6kVRHb
H/LVIPpRuT5S+0lcR6/QYRxF8gHFvp5VfQIRsCv8kJAhrMYJlzcJHhE7gCzK5t4HJ73DlE38
DRqYnGTo6h4Rf/3AeK+vEBWbmCsEBpzWakucBDHJeAEVWgL/zIfyvqmnkILGLfW/OlFj2jBA
hvBXJ5O8OrqS9dMJPRFs3sC2yQjU/IlBzK1RGKBDvzQ7IrxHIecJVQkPWycVQBAIGcEf+zG0
dQ6nWl4l7cq8CxcekqGzEwoUgld7ozUFuWiXwqsenOg5a35VizDbaSFDDkys3A2cf2VJk+vZ
++Vh++vJJfxGWpNxCrDBQDYHe/jgrSRG77orBR6bBBEIsxviE/EokrGQi+PcHWRLocEsjs0T
bJg3AsiYu96OEDWTreHMCaFlBDso89OTyzI/I0/c/Ay+fE7aJnzx+TE8IR3gCWkfT/CYAn+3
oqAjwcmVjY8DEN1tgBqfsV5CkFrolRfCQzbw4FmwYk9Ya1wQ671mZa1gCOfw6+QSfuMOI74E
EpsIiPynFlVJGOespyDQiSo40KCannhT1jojTXy0N9fdUHbhxOeVubjpShY68uKHS6Ti3M/G
HcXDHZdYeKxedOkgOUhvydXOTxozkv2o6gsa+HwogLhHdM7uI5QLevvJ6l0JTLhubjiz1nur
BzQFs8LsGclGOCPjNQ5NzyZHb5fsqr4Bdzi8L2I3hCxfXu9R1fjuAvddTsQ1EfyaiL2DbziY
KNNuZ1Z2qI/BC2gU+Ioz7M0tNYHdzB3z7YMx2yQO3iGc//xPFqqq7xkeWNG8EixJC6vb9Xto
5bHJA7UJy/FXNr2b7RNo7wEUWyG2VVZle8XRaWnG6AgnPSA56xt09+1xDN4WDX/+ahJ0ITPV
iNdlYmC8PdSnapwdblTlkAOiZDqrUQHwDvVmdE8vdjCHfi8gs7Sc3GN8tNhBTloHuDTTTRnf
s9g22LJHj9iQC/MxJujUskDH0+cZlug0bogORQUOR4vpy0l3Z5O24HduaGH01+j3VsH7k7jK
KMqLefnJDI8TBH+Asv17+JzLPwsuHXFn3QHE6wJGCY08iLQScM9BnYc/QP4xlFDkgNh15jo7
AHydHsVqIAL57wGWcg95U47Pn6LpKtSejn5n5xSAxdwXeMym6yAb/T3CXANu0GEP0bg7tPsz
7B4duIBxtOzZEyQvAqEf0/TdaJ8pTCQDWKJlTBl1QwEyd7bmTvP3RxRkVl/36rmy2ZpxHYE4
Spxq6/zk5sHp3T/60uOoUbXWsEJ+X8zLNiWGJhRt5iNhMMPxwhAM5JnXZMVlAMdz2S1su+rO
DRdXh/tTc4gt+4Vb08JINLnG89mDsaCE8hK9c4O3YtDCFTi/bMqsU/gWQdBiIVh96Y28N8YW
T3uLi/mSERX748DqcmoUIeU5P3GoCvzzKKr3G9arYGLCmuAf0C7CX3QCNOfIdV1R8easUqlV
KpWlJqZuJamyBUjKKZi4Wz/5dWLal6HnilI6hUqpO+W8WKBQ6hZKpQxKy/9BED+BOJAqMGZc
lJSU3n/dTSAO9iBzfnsScaZWbs/fHQUvPz2CcpmfsfNaBk4VCnil1wVjQZWBgcBYVmo8iZpv
84WBjmh4b1l2fhAG0oMxkNwfBpIQBtJ7x4AFqLy/2N3OWf91Rff64IsZX+XLzT5ZXtX1m5Vk
dLiUFLezl5OjduIo2ldJukFciPqkBJH1rYTA7Lpd4gcTZRbhBC4lDt23jIwCHInuMAgIe35/
Y1Cpol/MuATX4h0e0J+Iz6kpUkG43s2meJVsNAAI1R7jgkDXC1RQceJCgDgnNuKxQpMaool5
lKB+50Yw4h4W7NKeo49z6qYDde+D+EVL4StpVS0UT6tsU6cQQuQoHUrv5TQVhxMM+KzdFVnJ
J6mqqxPQ8yAFAfDALmSUexmLBb1qRROG2yu0ds4M51Y6o5bsnL0FgruFuaukh8F3ZpnXvMxv
UOatVeZ7o7GaLt1w/KwhQH/ZYb7Clm3KN/gNohp1wtIlR8BFpLLKCjVQaZnWtCiu8oBn6pIf
TLNi16HKBaIyQDyuTbE9Z9+zAgPpY2gbETaL5gUMbuTu+3qp0Snj8UOk/QyCfu92BUVAkuNS
4Yma4roUIWOEyx1G8Sov0AiZZBSuvynbN+CUjEH+0QTxWkdyETPBVwUUxXBaZEqFhgETha3j
Y99/t0RnWQxuhPj5DtskbJMrtOF3zemzUYjSLtdcJKgERZSszrL9DvS7uJW8nYtYXiUs9mSz
uRWzA97CNEO88bYUXApB/v4CwRcGTYqjI3CUZKCmAZsYbw+RDfEy+K8GreIIDZrIk1TakdcJ
bXTl0qCgBDMm8OIV3Mm+KT7hs6Xso+tkvwGv7qICAoco7nBffEkRbRnI1RBkvTMigUg/0YQR
f7tJcOqslAAYL00snwXFdtrhHEhahIjxtxVvCtwQZOZxAh1QzrFStC1MNGIR/KzZ9LeTy7dT
GE0iYhKVW4rTxeQW/1bYrwl4fYNd31ibmogRJoAFUj4th20h4mbJQPaJwFBaZAmYKG+gwKYs
iHjFqtDm6Fd8fSDIivsLRoZR3GwlqfQolU4eQxpTJm+9Lsyq857SWsZ2FKyoQ6ObVSndqzny
2i476N6uJd+LSxhKp2TeC0uGIhq5F8YEXsSYZOv23vnAyvSqIXDmIX5VSIOfhoAOemrEuvHn
xgaY5AwbZKuoPasScFsoAukXEPkwh9Dcc4N7G089ay5IHYj/hzZwzC2ViFIK3QF7j7vT880F
ApyttiW6zggDUHSfjx2fjzt0R+4ZpSvcLvKhKgedw+PHceEHJWNLUt6TJH+9bzsK65ecSxnh
BP1aDE6WqlfyJWdbYncFGyNdynkmfX1F+I72Tbkz6+EBTArJchATIy47Nm0LrtcE2zq5hrCW
cBdmYWzwhECviXDN1IZIwDOrJPxzdf2GbzPO4ERHY9mVVhNEIg0YBfpuIHbjIvonYo2TlkSx
NvPoqAunVuE0VNgQ0Fsl3S/6uplbRiu7dipvHkX7jTC+5zOzRzzsGN89q44FEJU2++i17uCJ
HahjRzm7MFafoAHyE5gR75qbCQVMruQpBgxI+esuel3XUEy4w02OHUBV7DvwSJAjWGuPmjuN
Y0z5KMhUvjMSPAxjJPUI4DCMcL6/S15ZvtY0nUchIz0QGekIZExcD2ViNb0xlDtv/USb6Q0o
30VXcXhKhq7zGzw9rHSWjNkF19eTL1x1vkWIiiUN7bl2+4Z6wdhEcYN0IQraU6Varndlxmxw
0oWaNrecHxwgN87C2qy+4zsPbVjiNkDIhf1eCOT+iCRkaPOI5S5I+X4IKf1GvR5nMKWUoRjE
VmgyuoVLRzS4M13i/bDdrU6bcshsWNRra/vuPAnvbLfW+oblDWk5GtADKKGfo/G6LG5kJHAd
xIUODvsG8y2izlScL2tMiGaEcU5PMMy1ETICDqE3fJ72OwrS0hSYf61VkYK/O6G5I18pobgL
39vTZxMTqf6lPfv9wkWhn61T5J/Ul/bCAjyE35oMiu15G8q1GEmZPXxDf2wor74DsH7vCpNH
Wej5BIFz9ExmJMrxeibvZPRVz7zt/FnASbqPiBEHx4pwpzBZ6dCziwPOa8fUSuQp7/BzYbSG
Q2wHHQNlYgQRDD07uUxQHYkfU4pMLmKRk7sicQeWnFwSWFBEqC7lI8yPngvVHgb4vuasdM8F
UKVlNbwqZ8lCIgXs9jIxgn6fLiQKIEfrRCdgvltAjPGREeCcjOq3moLVN5yG95ukYdkGAntz
BrpNNiegSC0Mt+FWdxCwKDi99BVN5XHLBCgxQt7LGBRmjI5YeI6laSJANSJ4m6a3uElgqH4/
KLvsi2OnVp1Bx9dlJvaGaw5ostTBHFxHTEu3pb7QphW++GVY1hNHzxi79hWIOaGrhIK42924
GjjDtN/2NZJGYF2wJNCIkYwEvbdpcwb9utiIK74nJw1/mmws7EPGN+3VIBcdGGBuyhbPMWkc
/7aOzlby9s1A1Dm2bw6iCt8xs2DD6vhOjJ8HTy3pN+POBIYwWSiL2kKkkxBxY+S6KLdC+uGC
D+ehScNZo87BYqUx4C0tnfgm4ahBVqSIxIn9c3zUoHBMF4dQA73OQ5XHh3Qxw6uMjHERDYcS
iJxxeLvDoTM0MUBCF3nfUNANu4EUJLhB0i0/sMaUDUshsPCmbonnCoauMlVwKRm3BjJuKusk
5TPBsPOUHAhHKXdgzACSZfW+6qQek28rC2kjOhel6eoGpk4h/m9SmbvpJfu3K0fODKLQvTdg
H6ktec5pUkyLCCU85MyMGlG7AV+OlYpRp5wrz5rnt3BcX+0P2OfHGpCLH2vN6juDPkzMwtlK
BbRM2GMwlIIF8DFzMi0ZCZbaGua6wXtFiGGaQbHFmwyHaE9eSJYmyza7KrYF38UnTNTnWELj
m/iSHhOAxZSApcKaGrWep/RcnyzJjEsBqKT+nc1oGLZev51bDoABxQtGNojYZWxa1JaSPvVN
rC1TnFpoebynLbW4xKjxFtA57gY0Ynl2WZAJ2wp4QuHIroqymegop3kBl7ZrYETCagsSsyW6
UaiAsnNuopNlzgoJISfLk4qrbJVQkBo1Tv2VMgJFqqWyXGpXS81qA+FigKYWSEHCnOgdu5OF
DSMNRSw7r3S6sEHrL63n1Rn5QCeqWhqpFo1VRkORAaUIVB3ewg9wYc2OUXceLZ6axVMrKMZg
WIw+WrABp8cyatZgqzFSMWFUhKNaDYXBMOBrit6SRp+qJFiHmoKMAuKhb/cVOge8IjjThnSl
ZFBm8kkkeqwsuSnW3ciiTfnqamxZkmCqiCU4JAeqS7+PiBfxzZvPDhhqF4HOytwc60AJGONA
ERxbpAxcCiBQ3HEQoJw/X5ewuQnIm3hwTTnIoCzhDNu4yqIQaVyjeOBXCDhRi6T1dBmdeLzj
N8nOLVdOJyiF3b1y7tR5BnROLILCj0cddNBV7solcoSIofTFjBC6xGsx9UoOGKQ6g3BNwnQJ
D+deTK8C0nd2JdRwCcdEifRqRVu6sJ1yYIuWz9gcRGcILO5emPcwBhCADyqAcMiN7r7B6/U9
Eg0jLyehT/BdUKYdgumvRBIbwhLRVRRXJjmP6lgZWrgoojyBJwcBwP+q0StHInfN9SifDfSr
dmJJJFwZT3D2gyJ/HRT4K+YgpKM2hX8Oay+95/akMBRvdgRyRmiiI4w9Wv6wDW3oirejwVOD
ttSNo6NMOaqrsYGmRuSdcCdDa2RcgI10FOMjnHshp1zvSDe6TNQ90l2O8juyO/lFKtqsqFLS
ngCwvyEncTjCnqsi/geTLj494Xzpl+TsV/vtL8nps2fp6a89dVKjjpHkgqwYAiaKlkExMZDR
JSJgE9+mzpaGuWNiBON4BVlLKfR0QqYQUgiWInTYJy0l0gBl+tmSXmyLpGp1I4ZXJrqSoycZ
DWkhA3u4JR5jJsTHEzO+CG9/YoIGymEjMjY5RytopPpY56Ih9+dxEb3KuauRnUTj47n0bJCL
FXNsCGIVHDsOp0WJ1qqfDIb6U2vcpWALSJyPOIxi/zsYk+4K78OnyyZcuJVsq6FW2gl0bS8K
4ZspXBoSHSIOxqLwjNcGAPEHxYp6bYaysoRuH6EqO1c6IhAUXaeo6k54WNT7pmU1RMkheVzp
XQhyN5oPyTm4++1udWS1iNA+KGEF0kE+DGWDtONfhBGjrZwuIlznxcEIPE6TtjhNGFSR6GDu
ZQAhMfeUIA+5szA7YUPEh9y2VGJVaQaGtNEG71tO4q6HGvknl3TFrBqMaheLsxVBvTdrFjY9
3yPlHkJKUmzPkzz9rhf9k26eS1gPWbf1ghUlYH+5JC2uFYlkRPZRePp6PpxM56W6OwKGCnCV
hvTkFZ92vAZ5Q4HhNYWQUYFskppY6qrwmxYkA+TDz3ovQWXZZOr+Cm+I8o4jeaHxJC2YOLYu
RNJyrBLKANS49CkbwKbFMRKh/gTi8y0nfiPAPQjHFqScxV3T4UaMWgFKRCpP1sg7ZU7gud88
okgnDU4TuDEFPuicpiZukA15WvfndQ63NmOvX8+dMDfu6T/Q3ji/Qz4AoDy4RaQjWWIGzE+S
T8Ll+QvzIFBW2WafIxpF0EoIWckb/XXBykKhlmOD/bsrS3nTvdnwLQtZCU52W4PU8wrS0Qt6
JJW4XLTavSLmPWi6+IIpPTTTI3Q4fbtCpJA/h2xESclJek5i74dj9Tlr9pLa6wNJrXxV1Y1B
bREiS+9AZLQ9iYuxgcZByM9zvEsYoyd5G1NF/wSJCChf8J9wwzS2nM04A4URCLDFfssprp0v
Y5RquOcPkul7IVIgidd9pPdu2CM/sB0HsmW/Ht6ugFKStK2bVHhgZBBCkcJWj7iccYCQd4+C
nqFji2JlXA7x8Zc4XNow46GyASlKnETYOGFrcgfONQ4vr4+iFo/P76td0XT7Ji3yQQ7/x0HR
EYydsLM4gizHLD+MNOddx/MwLyJRxpecsgDc99qL8K9QrscyV9pjT46yrICmKmEyMsqtOtCD
A560JBxU+TVV1raHyVAQzpFWiX4jYBwqKTKgtiwbW4umReHhkGomBvrqaSOisBJehGhS2S3o
9C+sF2MEvLHU6Ns0/NO2f1fVPEqIQ03HJQ4j7a3RigqebSTMpYuqILwkKCfQnRQhxciwwmu/
rZRRTFqpMHldp8vAceIB3s4UJsggJ/YxdjTXMlA4GHZvYtjrj0nqMtaqYxk4+pzzR1tCDjCC
BP3xx+eOkYz4mKwxE1tna+dsES+N+w32bQdZwLMqpe6jj5dvJna9JDLmHhbUg4jeWsPY6WXl
lv9ZzGNmfIOybChhTMzLZnzraU/rvVY+Z7+iSH9hqy4F3Zrc7zwdgsIRV3HkYvdsl30DSxf9
oaTstTfuttJhxJbccWDKPVKkdaVQR21X7BxPQZYEXQmFKQ8zDRrB2KfJdKEC4UXLCNin2r4y
UCOdLlSMtWgZ3WpqtxpLN5aYzqRxLzqzSmr6stoucvHRYqmp20V8HLK83f5z6W5HHnP6FZ4c
gqHxLewGS6SWTUpxHG8/C7/wguljKRFEvzeKvoqND0IDm5TVNT8OWlH9A1LDWVAe2CZVuS7I
OGf6TyS7YaHgLBE7+JmfBHEoiduZuYfxlkbtoGfeTmi3I5cnopWwYssL6ga12aPOwHnmWU29
sioTp1XYyNoZ3FnOEnu0oW0DHrv5ySa2nCzkX8huW1ZsmrJ2l2TFdMQ12hSMl96YvegsKYax
98sp34k0EM0/3GPi9tgTTj81AxwnHgzBqPqB7ABu/Nd0Ho0YHgswtaPgWDs7vpQTuvYsYvs3
B7SgxuzTU2/01QD0biTW/mCsbgPJfITVDK5qcNaygxsakG4bAgjmeNdmmmjyMn96kGFZ7DU2
krnAqXeWNblPJJSQjpofbOH5TEQU0sHxvWAgemGF3fASmvZDI7M7rQgRb3aXGO8OVug4SaHp
52FFAMcZsDkIaCrC8YECAPQBeIZu8WsJl/3gymoRUQkgBkKaqyAoI0L5HECmYTrHn/dM6piA
DE2BJisdSevDC793tmB2HmKGIjFt9hxhFDiYk7uEpLlH6O9z0R+UT/LM9iwJQydU7RiZ5izm
cqO6ryu+mcoo+L4aFZI5BqyAmOULQzu4b4P5ztwp1wpkFX1JZa4MrDsCAnRz2J8kh3AXgm6Y
9E8Z14VqWfUVnq6x7NPNvobNL0Tr8/mgEswIuiLknG0pw7iiJyMmBlNXVcUVUbxqShFCIZQf
raFO6Bt5e+SLWqJnx1EJTc+G0he6FBdMagpHRemnBjiCyMKFDHcKtly6ap2Qx7rYhGfg3iaj
tM4nw04RTvJOl9IHgcCQsaTaTTZ4y/GEbgBbdkn019JEIXMjBhJtCkkusiBd8AYJLZx/dXLc
dh1awccmBgzPgxF5Pnx6PEvkWSSc6ZtNAPt0lwOudnT8rJvWXVdvV/udyKXRC/GmzpKNfeOK
75a7ukk4oE1dD1QPZHvBb/21bId1WTEH927foT2eNilXgp/OCqNzIuVOLiS5zo7NeaRMlcgg
Dkp35LIFitfg5zYCvkD5eoKnEJjO7Krc5AK4cKqfi+C5xY2HaydZ64ntpgPRY9cLMb9MJwcZ
dXRx06zZq9v2CeQj2zctBjfH8AIYaKLdpyci8ILTZ38COIUou+++ZSMG6qwDOfBc3UIISz6i
mGhEBA8OotZYe8ASsLa9CRolgAHNtm+wkA0Zr9N3nHjCRC1B+JviLTiSrLKk7b6lW7sd3H6/
pHHzSVrSAwcW4+Pf0dRSY3Acy9cCJQUSHOzUrCKLRmiq+oTynvQacvaRxCkO74x3HpDm1FTD
+4UHG/IEO6GE03UwMYYSKvVCHASClz0IhqAZ0GP7GOgDKLird6u8vqnG8P27Mv4jOf9/s/7/
Zv1R1n9PfPSjckmHYwd4+h+FLYbcU03Gju6Xo7i7Vkq9ocxAfJnMvAk7gB37Hrjvn0EPoQNS
Fr0vbPTuC6OQ8e7jilD+FjRKhoo6uZAbjWUBATENO7ttiSP1RlpR0RiKMQe2wb2Q9qamONiG
pSxW7s4nAm/hfTdxlzDH+7hR0xaEjvG8QYK3aR0Nnu5quIqdyXGlZV0Mvu5YfLacPOzUm+Rm
0iNaAzIpFchBwgbrHdNkgBaP7ZQNoIXMr3hrNpPm/f16bdGwT5tCM23YXWs+H7s+f5uRxL5r
etpQvT4Cpznen0hA2Xg0PRTECH1OKNLt0oiOxiUTGoiTIt6ujk4BHFBGaSEJFF41M5tS6o0J
EesOIhvKmwCmfiRomuYPB2fWslJnAhco3Q3am3gBfY+coqfwJ+7V8ayFAdE+51hIlKts1HLC
K3vaHrxlBXeC9hUpKzu+v7SoiLPnpy07uipd8XbwnvdURmFrp6j1RCWfuOMBcU45kBtRQ4Z0
FNo8cdiQ9YdRv+IkEEZ+pDwngHD54AxxxNiXQD8iP3Zh+ZjcORR8C363IjI4hs2SHGBGWKcC
RjyFQCPBBeBNgrFyw8lcemvEgi70LkS4aY3DoEOgEZnw+ew1rkl8aVt7ORi9yuPH5VjtrlNR
KNuBCI5TD/uc4LVpzsWZWvKht4Ue6ruDJ46aCc6Q6GEw/gVyeOM86V3y5zg0yXPh7dyyBQXA
iHnmdWieD6v8ZphIoGWbSJ7P3sToh64jh+YKZGX/+RvL0jJMfC5ZhXpa3MVxIAyiSU/uzoMH
VkcsH9oEYJLCe3DA5ywLyT1WsySv8EdqC4gLLCicaDYalRskiMKTssd/MWsXMtUr3zafy0sN
6MKVmz1TFNurROYvbhkZCOnKI9ruOxVLgK5M31J48kbe6eV7cEupHG+KBgPfiiSXdVO+Au9S
hRiKi6pDoJpwUPDMCiyfhlHUiO1CgVhES7ILXJ3U2G6TZAXcjHjuxVww4y206gBwESwrzLCB
sryPn/YN3PzY1niq2chrjUbCRrBuKpvigfF+YvZYZHXpULSf3hvqBp9Ieza1sMXTvN2IkAzs
iubKFItAO/4dyPzTQzft9Ig9e6TZ3AuTYrHm3J8l9VZiIc5DPaPt3AqVxmnvn/sSvK0h8ekW
vCYzXEx5IaIM8RUDvhIiWgPb1K/YTbJ5UzQThWGPEa6Ef8VsLIfztbSyOPmYVDJeTIznHS3o
WsKtCYDsWDiqvje5NyzEBkQJGxMDYoUFvWgPNBLusI4hgYafo0pQHHACjmyER+5sfbsaSBue
4BxkqlKl/OgRi1aAEO+yfE9xyeDN4p6byjrhAySa4dhpIdsvPzE29e4J5xFPRPgM0B7XO1jx
sP+Z9pOjzxn27hOyrIRPG86u5QVMt5W/eJq3RW1TCXvgVqTFvkBAdw1wZEtyYUMJNLQ7iRvP
joI2qX4J7EG/stC9e18bGwi2ipMPsR8SchHCoDUQruQmuQ1I5EyF4Zbx123ZkcQrHXsaa3Po
VDVSCcNt0ie1VK6hcAWemLhw1DfW3m5bO7MEGWjEguSDz65mU/wznV9ESoHycDaF3/EyXT2b
dnX8vdL7TOWneFkiTVHc+DJYA0wGU/05Xl6kzqEejC+DNbAH/XkqrsLY4UbZZJfwfS+k5kyT
tsxWZQ1KxKbFa5/0YZSi01D63FwBL5lR5SWf5p3Lk8wxdBA58My+AqArApGcn8t5MU2CvzPL
RCqr2AxGPu+aWXdqvTH1fYqvQaFYQKwwZAYJ3C9wJqHdHT5OD+8FvFw6yR8HnUHe9wieeFNA
Feqnq6NVz9yRmevPGtoYqRDaOwoF9ztB94IBb27jCBgz/knAGvpuWEUsdRmccTVwCbqfcTWY
2xFNK/jpPmw0ItN4wPBymDKvGZCHSK/XDEg/yjVGDZpz9+q3hNFlNeKuy92+BWefho5ZHqta
MJCVjGOaQNeScEwtzpRt+wjNZWNLpkNjJfH1vofKW73bSO0b38NjtqX92KCdM8G9jdrgXAsm
8wYZQ49U6+qFDtz/oTHVSx32Wei+8YTU8YHRNG7pDKp6nDL3hxopEh28bJSfI4mXpkv8AWJl
2IYICjTr7C5DEcQkWdE+tEAK8bBQSkPGA0aPfErBHqS3j7bw+HuysalaNg9/N4bzivv6qniL
nk7xWsYebtQxXZCGbBZ6n0YAj7SeyVuRAO2R5g3ZBABv3aoIWdLN7T9MWCO2/aDCJ6rLicoa
sgNPbJmbyY/vom6YjNM0HL/GkeB7OR8nK7MCUKvB+1Ri8KpoZvPh6hbj1DnB3dojOcwE7jCF
ZiZPukT7Jyc9lt0ByQ+c0Iw8PiXxAf67SLasbFvoScCtkV9Wu30nFbxoemjbBZv6zU+dil39
pqjK3zAB4xvFADymCX9mvIRrP8uELrmHExIfRAVrQElHtiBIt72p6zfJFeRwe/aM/fi3n0Sd
8HqkaTBW4zD6g8z97ijWzd4Har3ty8JgD6JijGty05S2I85Y1TNiFHEZZVOIvdrCXt22zigF
c9w1M/7O4G7mIBs1RN4dqBt531AcNzMVu8QYT4DW7sPD0x1zwIPzTmMOcnTImzg49j+V67xY
s+//8fyvf17948Xzl6uXP/788mf+nMLlsum+KrtVV0BqoKurqfGCw152t/jQUsW5gW58zR6n
jO5t/xbbs68hMoVq1qdCQ5GLN45/oTTa2tHsYfur8JvmQOhyD1t8ZteFkDbxmk7Go3ZXVoML
wh7Cqcf2TvtGRdoQL5CQurIJIZEUU7T5GNSGl6f6hM8JB/fqz8B98Fv2ZWAXlnAqPaYFq3oa
gPcUAdY6mO//9refX65++Jcff/hfCAvwGKtAAOAzADjcBO/A5vfQHi8cEF5CVYWVX9Shb4a0
eYobytmFcVHCy2+lwtdR1C1YIEFKT1IQVMLEHiyfQXnBGg2HEohEBhlVuMiSbcksqkIU8k86
mBDSe0VXBTwQdRDC0EY3I2AhHEIapCIqlMlCInmMZWrh1Lm9NcL8qWiLFKVsxmFdUCH7D/bn
B5W0x71Qsc5U+D0/DBfEEBPw+y+zqYA7FJBrC7G4tuGXGbzMxH0jk57SrU+JSRYgRIsIQ5XS
UKwlO+5WfEqHybOdyatt3iukTsssw/5juq7r/5jy1ol0p/oOWM1fpkmDLxfiwodTF6xsRbx2
jYPE92IWx8P0JFl2b7teyJ6kqkgEPiiUDbXz25NcFRkCE08fAkDow2sbg7f8kn2VfJF8dfr0
qzT9Ivn6iy/OPvu6OE2+Kp5+dvb1559/9TT9Jjsrnp59+asFFYfnl3Vx+k2RfZZ9+WWWZl+f
FV8UX55mX36TZ6efJ+svT79MztafJ988Pfs1PugobNa4EcUwfWPHHieA/o52nNjdEvqTgdCP
jEvjtpyP0EFaHB5hGFU0xkMgtcf4xedfFt+cfpV9/tnZV59nT0+/+WL99Ivi6+yL/MukyL7+
pki+zj47+yZBkUYIg5ZBlcROw7cItzhiIV1za8kJIenAVt4EjH7Tfds82ZTpk9/qbVoWU8tB
OmDExPJpWT3JEn4mCu2oUv3CT+pFlX1b5pdg+86++Tw9fVp8/fTzL56epqfZV0Xy2Tr/Jv3i
qyx/uv78rPjy6dk6m85H9Y9XtBCKvH713qEIG+2CgLAAovDNyPY0Ylm0p+yqzPjZc9xMwczy
/9myrcfjaSzVhvFkm/YkFNEh4TtrKEbU7GEkxIKnhcY1lldxeBbjWx3LHUxseaeU1lRTIkvi
J4N1jZFi4TJbUm4g9s4jVrytAqmYjbJMlD3XV1N5nSVk6PP7QNm32VddySeuaJq6iXYhSjEs
FWh8FktCyyYiM4cRzuZALoaHJjyIJMb5oJfoJTsLTuT9MYfTXu7A4cB9ZRpVZQdqkFg2DfYS
XltPtnXdxjsJVGj/uS+bpthMjSxa/olWTRvrEi5tdFN5dlWAnR2xq5wNoUwi4ACcCSyHeomg
TGNgPNYEmkehrJna5+aJCnUQvFxg0fioDkjNYJT1nIDVRc+gI7C60hrw6U0GnHoDB/rIdeCL
vqIyTqtV9r8mB6yrFWoN1wXoGe6XDR6+BE8/yBI8/ThLsK5OJKoLSFj2XYht/QG2jkE+CEez
u+4cg2xwd3v0vmER6vA8fK844n3xQreHDCau+oNzxpbz7hneEfxmFHf0y/8X45DC11olpcpX
4NN+EX0NeuHgKuQ/n3/z+WnxZZF+/UXBV96Xn6VP+dGlePq0+Co5/SJ/+k3+9WdnSLuxxs8i
jaf8586Nfx5pPOM/oxufQBQWsBZBkgv2O4PUXAv4nbJ34IiSXa06AAHurkDu1VVgmaHayNVt
O1aQ1LWKiMXlPYbW0UJW1xuW1ytRUJnThGodb0STJS0KE1hrGoG3x8LVrOrYhjc3Z+fEanQP
s3WyaQvBvbD5GdmQzh/mU0pJBUGLqLowuMGdAMW1kGa///Evz1+8eP7iLwY/wogKcB9SUTA2
r/M//N++QczVxQPs4KfnL57//C8HdmDZs7noXXYzMbc0x7oP8PzFR8AigBjmypaDV56EqCC+
pdQDXt74AS5vSFzOoaHbeq9yWJsBX0Vyd/NSKuQUgMy+N+oOq4GOHF/z2alVGYo51O3xqggf
EGT64nNbswTyir7aFObdVT5suHKKspMG8Hdj7uFeSLMvLnAsWE7t6BaeFkHzjpVjB1YmLsz8
VGPVQPk8JCyQixNUEhwNg0sp8OZqi6NFM6IJPRBD/zF2LD2SCuowed95byGMp5THxh/UyEj4
ZfOyjXH4OLhJhR9T3B2Jn8i4woIzVhg3iqEGXJhBCLsXkHPf3+4giGP1FcCmaGpDPBlpQoVG
T+PjO4sMMCwTY2OWBpHaGDfoI9p0EeHP3ORDoMGfpztj4YAmNRL2lbur/ds/aNPs2QhDm5s+
6Jp3GXvzWg2mqJJXQUx5dVO/KjMhrSpU6A6dFMl6s0VPHv5sQbHNGy7VdFe4m0FYeXAU+g9T
804dG+L76uW//Nvf/n3WE0MCwmXh2+jJzh2ARhxsgZ5JHBubqlYvBrHBW5GZBnghK6k4hKbQ
gxQthenKQeYP4Ekl8k0jvYWyKHk6DVT9rMCxRlZbaYHSOxsNIFc2cYzbsALkiLoO6L1uy5G5
7Z1fq/Wphyo1T2Nn3aodmXMibZMBQNy+K4MLIE+4OJQhsORVUlZ4ZfgmafIQg/gQq4mfPy/w
KvG/CzE1B0GUsgZCRgNMDTEF2VVT8RQl9pZxyZWfSzZFgpFAKQUCBWQrtkRHFzJHAkuLLNm3
vMS+4QI1HzicRaADfoArKv4C0dHiQW1ihW6BJaGcE1e8OYidsOBwFrxhDkUm11t6yx9CcjdL
BIdr9nzXqXnZT1oq4LyVsWWUwJ8KcR+6gMbIs1B1tLQ8W3pmWXq4QGAXuEHyRIZ+KDnoWQKR
bFKKEMDPsZBxpKt3gJIi4ZSLKYDPbT+dv//t+YuXsymVJD9cIsE+Uutmq9VPz//642q1YKvV
X5+/4J8kI9XSOB2ep8K8EXyfBt4r2n93d1jU+UY1bkgrAr51XU9DYNglAdI0aaYfCWAQLEbB
Kwp+ZHDH43cUvII9vi+ghyg2QAqxQf1RYDXQ+gcD9Um7T82oCKMYwh8E0o9ICAeCeMz88z3l
/9R72EX4xrG5lbnQjBTyVVYEdw9REt7fyxZiHv0jdO4U+eAbyXgQjal471Rid3k0UCGa+KTz
CQKkHC4BwekNRAsucVW3EGiuj0iSNdzvIDK9F2I5ZmoCC1l5YeCC+YDMZ3jO/j8JrU9hHw3Y
w/bL0dD2y+DtblNSzMebOrgesEAn8z9gK+29LIiADBYbUx9hgTj2XnipL9L2gxecm/cG3QgJ
/D6wGaElio5n0BNox/JyjVb4LkhHFBL+AWaraT/ICe7APeQDST4fWCK4g8wY5zD3vcZGnMM+
7GT6ordhq3KXF1gN8ffZx5SpRp/AP7ZIOhpQB+fpAM4/wPnrMCI4ZF94L7RwlHrjo+ys45Vb
Y8Dju9SfQ7IO3vOBPMCwe9EXUxupquTL5TK4h1FZui4E2xgYh67LjILDJu/nmDBaPdG/WtCh
isj0j6hbuetShykXCaBBbZ9SDsKy7WLiiH4tgorfj0hyGIcYGPbn/ny9Z7lg6vQ4AOAZgRld
hT/gesGY82BZAe8fcsEsc7AolvJUTrmrg/OEtUq0EYCvJy/2ISYqslpigwNDBvtUJFK/Kbsr
DqsY0Uc4Kx6+mAYmDcJgl8JjDTxyIJPAgsbJGSD8rfedSjqOsIXnsvbaaz+UIm7UysRpfz/L
7Y7du/NCexBOASQdfPYMYod9IDCDS4LCqP/0/H//64/n7KXhJGglcIDNN+W0ojbdrimvy2Sz
uVVmUkiDgVnUWggwxrq6ZkXSbG7P4SE4Zd+SUq8pdgW6GZ6ccJ6/6UqIOc67aBf6K9GF8wQS
SGBTFD8F2vqWBA2O13TB1OfsEvQiYNxVHokLDNiB/iBr8xyMLc52TZ0mKR+LGPNujwpHCM0K
meAwoAwJH3ntm7h/Fpk3oCmKHPQ/5iZS0UZdFZCyA23QAAl4ZJbVddKUSdVhThGaQZXMYwa9
cZxhyGxd0JkZ0orCxCSYZmQBttiMs+q2mMvwaLBhOHeQ2xn8XrX7sivYY4Z/ye77fEZf0AEY
Pp1c8vozGjPEtVn98N3PP84eBa82zwerhS8TjqgXv4IzXDkUyGE+YoRxI7mIFjH5U1HlfDvk
U+RF//l/AV051PehqAEA
_ATEOF


cat >left.gz.b64 <<'_ATEOF'
H4sICMUJGEICA2wA7X1rcxtHkuB3/IoSJiQDMgiJlF8iLe3ZHntWcbOaibHmdi+8DkS/ILYE
dmO6G6RoDe+3X2VmvR/dDZCSfHvLkEigux5ZWVlZWZlZmY8esazeXjfl6/OOzX6Ys5PHj79g
r5vkOq8rdl4nTcG+FV//x7ZO63fLrL54Pnn0iCWbDcN6LWuKtmgui3wJzzdlVlRtkbOuZt15
wba7lD9iuyovGnzQFc1Fy+o1fvnTy7+zP/31z2z2/Bk7mUP9tijwzbrcFOyHv/z1f794+Se2
rhuWF11SbtoJFOrOy5bxf+f1Fbuud2yatG+h0BSr/vD0KR9W1XZJ1dGHZpd1vImLJGvqdsnY
w6TKH0JDUPk8uSwA2rxmbc3SgrdTsKS6ZjVvrEFAWpZkWZkXVceHfc3KKtvs8gLB7fKy6pbn
S5ZcFW19USwnf8iLdVkVbLX6+dUff1j98JeXP7/67uWr1b9998Pf/vLzZPIHUZ19m2xe103Z
nXOM6oclR1DCobWe1XwMRWKV25RtZ36/LDKsZTxKa17vEQ7guu2Ki0fbpDtfnm+3z71C7Tmf
63y17Zrw+03xrsySzSpL2o5K6CLTNGnLbFXWy/PzqfE4O0+q18WqLTr3hZic1nmel+v1isOY
nTsvYAh++xzxRVMVjfO42l0UDYfnss6S1HnXJlXZXbsPL5ItPoIJrXcNn/xkc93yWS8rIjUk
xvNkuy0qVsO/Agn4qmbr5KLclAUQNNRuik3SceInktvxlXHKEgZoX1GjvDFOiAnLywbn63oF
nfOquKacklnd8Ba2dZW3rHiXZB2nPU6oCavq5iLZlL/xnqAe1uL00TSA8AtOpmewEK4ZrF+A
8iq5xiV3xamtrF7DSyTe5KLgY1xDa11ZVwIMXLYWIC2HlI8RmsIXfPa6gi+kIsnOjSewJBO+
yrZs3dQX2BSHqC05QAxXT7kui6Zls67M2zkMhRP7hWwHPnMEboGdcNrgLbXFBaeSMoOWig0O
DEaRME3S7Oq85HXPEyjfXW8LNsPJAoYhUTxfAMr4WBeI5CpHRDfQ2qas3rJZUtFS52DNl/Cb
j/i83m1yzg045yr/seMMAVgH70ThWyJnOZlAv3zRs4KTHnvPtvB9pbpfiAcI1w19OVN1dk9O
oMezCWCQM0r+mTV13a3gwzP2+GwyIWKa8AerlpNnVkzeTxgWzLrmjD6KN7M5O4WnM9XE5+x4
zt7fiApV8a7jZd6zFzNeit17xv7+4uWrJyerH2aP363Fz3x+xueBU28FTX3++Rm7mdycTSyQ
EQV8L+DECeSmgLSfc+J+WzQIrv2CwYsZZ56np7wikCTyBPaAtXNeGCowxjnPhpPUqiquzvCB
08Y24wgiJrCkP7N2ISrMqQYSOSx5lp0X2Vs+/itYvS2+LNdsJkrjd+oVK13sODB88hN2yddZ
jgQHnOlcFFHfWXexXelvz/SbWStg0A3yMfI9rFJr+TGQ6TFTI2pl6+3pqW68lU1fvHXafTGr
dpvNCkibP2X//Cf7/POZUWeZFq/Lajafs2fPzLaWRZXzp9TMDf4W873N4CE8MudmU9dvd9uZ
h/45zZqaMNGImBJZK5tTm9umvORM4pR/kZz7W7vJ5+LFGZKbWBAhigIWtQq9iFWbwNsVYks9
m82RMIPlGRZFAot1tUQSnk5xdGLkohaHX8EBRDzR0+TjEIFQ6IeZCsIq2tSLDNilYgTEzgAS
ZC+cE575aw4AOCPKkS+hkZngD/oBtriQTS28duZnVnH1SS1iZKd2Kf1uS/LNs956uPZV0XhZ
+koEM+Gvt7D/fguAw2jZq+diKxb7D2cENOl871x1qoPZfPZKNXwpGgUkvWcmYdOUogz0LbXw
fHYpqNtkkCBQfMuRuNDDf25sk2eBgvzXc2y/4Bs530bSAlaeURKW4zYpxZLBkgujzef2pnSG
sgzQUIsbHt+tOXeRNEniVE7kioih8o5YIrZzEIenJHFM9f6MAgPtxqoS3+4L2mRpVwbpOksq
kAIu+b5fUFscuZdFBUIBZ4EgKOB+h+eFcitEEPgBKjx6ztgvSLjwcYYUiciaL2Qx/TOy2HK5
ZN7Pr5+uY5sanMW2MGceW0dKeW7MVFXnQZJCwZ3zcCXZf2vXsVvh1aLMU5fi36A2cDK7sdNT
XDMreXpRq6m0GFx59HxdNrhgdWcAutcHPDy4j7bgr/Kl1xXHi99Rmd+2H/qDHV3WnHgm+uRz
eprkOQoIMy0lyPYSau/FzJLdl7xGQXVaPgS+VSe4gccL6e08Xqbkh/Km400dAOZCcQyFCWAa
dw79i1lebLrEqiee7DlEJuuJZ7iIcF+FlTRLxLLSTzQrXIjBzaOY2m431ytsP4As+LJgExb5
cRHZNtkepfNWId3EFPQZRlYvFghU5yECBP1Ex8/bLLoiRix5mCqokkUXeYAu7GKxSbdLicHl
A/DyNb4/uLzSCGix1BCwWGgI1gbFlqGFaD1MwyOglgYXol0sNga7VGxNpfOBYYWn4JBR6Xnp
G1TvvFiFhoY0QXnUGpOvdDk9dQVW63VQcjU3FIusYVRY0KZ29uABcguTqvyi+FSUtOZOF7Uf
O2XtVq2noqTBd3VB4yFibRzSuNDeXc+G8LGUxQIIcN85RB1+GapobUv0Sg1kcBznSbvSDQQI
HZ4EhultmFTu3jPm7ZL7AWPibzw4AU6tAAqw5/1AMmdmxXeZEWBxMfqnF//xbz+eKq1/WRXr
dZmVuFmnO362u9g29SV207IrVNw1xT92JejxGSiVCzgdU1tKM4tGBXsVzPgTvoLPky1pH0Gq
40XE2SXZzpfsJ16kqq+oravis82GJW27uwCjRdKxdXElDAZXJX+VFrIHaJcRhkAfzutD95Lh
bL9VeFioT889ObRZs2cOcQsNj9QIQZF7bhmaJ/b55816rhRfzVqKr7B+EemiDUEHHE+FodpY
J5u2uMVkc7liPA0GNi9Fg6GxhZlNH2NBMUktfmdrcJe+3azB5PXjQeZubwUGbzUfa97G4bPY
Ov+OqhvcjICMOc1vQCudFW1bN/xsX1YbsDp1hrioFUUrUhAF1CjbOZuglkOqoJZCl4RdiUZJ
ExRoFk9pYxrtru0G7QOmblAryQYaJGWW0SSc7bQ+BI91+qu3lHqOpSaIJhBm61rvNbJ544hI
86fYUL672IKSdfLooTqnggQ1gRemMiisLl/4hwdPjaRKNwTWn2c/zabf//inFy9V72bpz+63
n/1nNZ2z+4x0zYJVOa36gwbu5HGkEhetZkKlrWxHWO6jwuV+LnqV00EfCXWGthqr/Pjyj2OA
vwngFEcyApuGYUsV6KIYpIJh3PVRCkda24Wxxp/3ok13eYrr/j5qHNGwBR9x0d5vF6Sfut8C
XGp8HD7js7NwyjlzX3pcxFgI5dxsdxZiD3ZpYG2OlYz9C9h/myk7JXOvBWpUB29aJhz+Yfc4
76Of4NSFKEeqV8ctRdeYS8XiFATaU5+ATJJln7Mpw6Ux5dNL+q1wIVo0WMpYP97IQ13ygT98
RFzKMp4hkzJxAtsifw7bHxc2y/ZNXVbiDMUfaZHmuXHUC6o6+qqk0krjFyn5yNDmIV+u0HwE
T8u6miVyUS1YQutoEVW0pLpsOlQWe6MDY9HMEIgFwaLsbYhskLLuvd7UabJZCb8DcA94V+T2
Un5BbUipQxEqn4chKct/NnzuRHSSXCGmL6mKmdQWmQfQ0PnTLEanxMDRk8RG69gZOnWaxay2
zIdQyDpsRs6a/ahSe/joE/z/n4hUIstDOGx5TLB41zVJ1qF2hB92q3xlK07McwwLLOayii+r
4BJ/QNyu3bsaMb2WJil21GI9Z60SfQvC+zJ/HtuXCVypT5KCjKovwDLeO9LNjbZiMm3G/I42
c/z8/fPglGA/epC8xvca7xcLjabvnpOXBXLVZbbhFD7Tkorqxm4piJ6LMHYuosiJ4eUmRmdv
+SG6EHK8t5H6m0mYFKiRORiIzT5ozVY1afLbVV2J7mgtRDrdJj2kKH4c5XOXoDFVaZyLTXxL
IwjOIm+pMfgMBl7GPDQt9GD1W6IMXndhNoBFQvs3teCWvQkhj4qAGa0sWo7KTolz5a0QOAqJ
AJVQNWMnvxXOTjhuR2DbJgaQPYA+0LUDFgh4CrIJbfsrwpbVXAw7jR7V0FZlbjqGvkEji39C
7zDOyY+eG6WBAiOK+oF+ghPBF4/Zv4GLrlUuIGqk2wQ3ouCM4aYDR5gFIVHKnyEEwjFjjqtg
eCEvJJia5odI16hi6SD5oirAnwJUkUmLHg4XHKTXBfk7gzthvSY/h7K6TJoyIbcu5RMBLpkc
BI7Coqp3r8+hHvmmJR01uykui80ywgLkjt42GceU2t9bQnV0f7bEhUVPK/NRzYA8MdCKwBqK
GllScQyDNrTdbsoO3FcZMJsiZ+m1qNguhbnH1O6Bkw0n7s9tpb14+uyZBYF4LAzJh7UDsOt2
IgzSEuMWlhAXZapOHRPuwTo+suOwGcKcNyOOkKw/x9WYPSKuo88MqTO1AZo5mkwbFtlpUMn6
CYALCME+p4xw30/BKTzTpgEbMX+Tl2lh2GYtYXVe1NlCin7M1vP1e3kEZEK1pXj9v2HKoQEt
AA9LJWgOHa3NDuiI/UaYr2z3CP1e+H/M9L5wjSaLN3O35L1QUTBl2UVvhGQrMR4fZ6nHGUaq
CXYAg/sj4572RzUHgd7F5fgBB4p6+Cu1X0pPTRhCbAagrCV2DTochcbkCG73xjkkOVPpCMG+
cBJxh92iOcAVoeuKS+YXq20DvG4FmrhZQOO8lUc16dcHBik82UFtOiu8mG3F0KXbP2lYzaGM
0UNvDQpEytvGqQ7tTLumgWOysp4YcjMiAH89M+0f4qBmDyapspbTvHjJud+mYDM1QhoZ9IWj
0s9pcJrGrRk2JjwyT/DLoV8AxOkOH/kcAx+HvUag6gKspz6Ne5p0hAElEDlxFqGmnEjfmo3w
Y09hlXjvELaYknBHZyEFdZgc3hA5aFy4dQVLNWjMKcD3MT7kq+Izvo3B2l7g1SphnsDrEMkG
79vhW6eyYgjIpAB4NPh569i+A+Hq/d/MRS0POEGYfgV/mI41Q82YY79wat5M3E9IJXDbkqhM
66YVgQUcAZWaWVH9wlgAWt1s0PwNMgRn9Vh8wV1BZzHWRFef1CmprPzzfYBZIRy4wrXrMqx1
564HOijzxS9a/xA8yqYix0ikdW/z2D7pryJVx1qz5tTDHZ+yItcJlxQUV+pFDNuiSdBz1YxA
0uM+OvATR4i+YCRmR/iZ4rDlI5spyqcRV1OLId4M76Rky+rZD4PbpzhMjSNfcSZSWBDaj3E3
YADpp0zaQ+egn511czK1zuD1+0l048FjRU/n0bsuZp90ZKEv1D096a4lFPQdGeDe4FjuzALA
4Ys74qJfYx669M2k7lo9pOtJqGeWj9CfYxjIwNkMPXRCcA7dGjJdNOicJGG3gZduOVQGhqHH
Yb+jEdlDugnqnekG7Sp5HRP7joO6xlDJk7m+YOmo2bYJ2YiBbx6LB9Lpi1c8o+OmbdqeIkwg
FE+B7scLj8cuYz6OMuYhweOE+I1nPpFCx4nDfPxd2mLUzss3PqNTd3X4GWbcnuFWhB9BC87T
aGsGHBZnPFh1HFnlgpc2hr9ATyHDIBUiVdEKJ40RRakAlpV9C/81FZYBbpGdFxu+ZlvzzmT/
zaVJVVytcvg4sxytBivO4AKw/cwRgIb7pn7tm3IPoFG8+CX9O4ZvX9G9LWbfwfLWA7xFdso/
0KrolHeBfEcvjePQe0vagI54AwbOJNlDtfCGzScYippuM+rsIdqj3s2jnbwFiwMTE/0K4yfs
KprpjncAvrUUrAIUYMIdVN6AxtuKoMtswennAi4E13Tpvi2r15tCm2yXjP0vvJtdVtsdXCi/
pgvbVO5IxgsQPV2d123B2npTmMEESuyFoeeFAwnDq72kZzOCEkBxWNB0z0dfdbwq2K5F1Z4q
zPFQHRXvyraDL6RaYOy7Ddxw5qR2WWyuFxbwdAXzYrfpSgd8KCc6yhLeDQRfESVUKBUxUE5u
FIgC/Z8xDAscsTgoADYH4BUEV6k3m/oKHHpAyXip0diy2VXJ0UCuTS21tN0kGanqeT9lI29v
5wwco/msLgCEjJ/u2mJ+Kq49HrFfptNfjS/ruva+LyB0SEOPfbCqujNaC9S12tON2R5KMJ+t
vJEPNE548m6eSzaKtghn79V+yyQQ0QrvmuvAYuvpI7htku3DMaS/mOEOSu/srU7FBtjqiABD
7nEPS12f78WmFpW6EJaQ5+x4HlMUmm2gOMDENm8Aaez0vUpHsy0UB9ijg8aiz1Ze8IXtkkjY
CnOQQWgZofxudvycdsFPB03DR/OgcLRb5019pUOjXBardVJudk0xK5ZX50k3ix5lXhfdao1h
ABCMkAspXN2eeAZkfsyYBNwZIuTKCVHSYV+x7mILcKJKbdah2tNSNI0QyMhBlb8xdx+DSOmd
TaS82+V2156v0iR7Oxs+Z3ZBlVXA9ZcP2nRZ0ToV6LFROhX8JnQqSoWyBY+frREVw1d83OHk
WTxjj6myQRD3/Dsc0lzI6+jF+boGJ98j1HIT+cOqJC9g4cwJWBArm38RR2ODHfL3iJCAAghQ
vJ87hRZAt46nmzlhW9u/zXllG23D7wLVTN29ehMcUdjm+YBlUqkQGndrGw4Jj62wFsY61DtP
wD1zD6eY0VgPgU7eJCOPb+KoGPbpUm+9E521+UmjwMzzJ9cecD1LoN7kyCIWKKtKjYC9mqAM
Oe9BGfgkyow8WsoDcEC1LU+XqojN1LQyAWBwboAoR3O/NMAZLP3GUEzjkQgJhjZU07YXPUBK
OGIaTJedyaMbWigUth31pcEg9HxIrFtb7ygY5eg5jI5hphdSeXIkUCU5xEGVJTRZxECVQ4Fj
kyobBIruWLwtt+gqv5VhDtn9lvNYdqr85q2l699/ULMUv/VAX0J3H6hJtOrcD81Cn8LZvCpC
DlcwDhN6uHXjjeKOR+BBzz96czRGYT9E7RjbDVycSzxqzui8pCN5AVxwqu3MkDWOvMvG0PHZ
pMc+pMohK+mxETkblziGB6lX2/76MWTAGMUQ+StBsL+RAzfQboLf8nMiCNOx4c97zJR4hnVw
c+raJptg5ITgEgiaSq1uAMc9PVhTsE8XNzZLM6cqPgOviwoCVAr/rI+L0xFRD/wddn432B4T
ReLAzm88Zw28aMmYCmkJqh6hfCI5grQmcMCToZ+m218e//po+8vxr4+WyyX/UB0dw/fq16kM
0FlhKMANRgZ1tVhmvE68W1UzaBDDPlFbFH9yU/OXqGWBO+b8sAMHjCkX36iZKYprUv8DvS9x
FLZ0iY6UtPUFYtBY0mT/MVKr3qRdTX637gYYEQm13mFr+pbIIqenllwJhxDbLgBPXDHS6FWf
G/sj75Ei4OZD4YVv9+vynX8fVCsIHzCYs5VWCBl9w8EKGxDuqPRF61ke43NVHwRTKoEDFwcb
fLCttyv50IkqSBqR8aotOABbq8bWYSuX7tLxiAepXt1bhKO61CGcWe6Eeyi9jFO4c86QwSlD
noIH6cmlWCHe3/N05S4rHae4D+q/fbwGw4nRmf0ZtgMWLtu3UQIsSsliDsRGoAYRmcGYLwGc
G+UMP0UEi0m80ZuJExOihwwDa+4uiK6PuvnjM2fxwfbBH5vmYhNI/moh7DVzNzpcUbW7hnwG
rn0bD//jHNQNHZHUDsXc0MSgeKMwG2476GkgQ9+FOtGMB0stJr03UET0JFOuo+mnI6dYERgh
+BCloDLyG5pB0Z7ljAQwyMKernBiOooZzmF8qyaHsSsu715wiaHktTZgIeE4EOaXrq4XFMq5
6yB4dFfr1mBfx5CSuFD5OaBoyGSCNYU7CEStL3MV9KRXrvYDPzQUIS7MQSjQ8pWI4My3NIq6
bEnPiIiwCCSqGsFDlfvWQlNIOEqsI6RLgxy1aKx8izzxeDye7ZH5E5YCU1M+GWR68HAV4HyS
KQmiNIrdC7A+fWdaF7TDPUoPJUCSwoVhmHTqmMzbMnKafq49k7nnRMrFb8yjWJaqRRpzuEVa
+Sz0FNsSPRqthSjgJszzALayQlbXK054HD3I2IPcMsozJyMu1algx5Jx3VIQ2UYEka0niGw9
QUT0b+8WuCTEHqAmut85zwsV/3Cr7r5ZO69o72x46iIhKT/ZjPVLplLsd7dwPAIaZxNjK/fG
PNPlFsyaha6NbfAUWXN/lI3H2Vik7Y81Ohmc6SjeWjRQJ4ogPsWZxji3QDFPUNCv52fekvOx
L1v1Me9OWd860ZoDAz5vBul2uG4N/DrRxYIFrXXFZr3qwbw/m+i4t4rPqTOrVLy3h+DsjgoK
pICPXAsyCvQ5QBsw6mixtm0GWjOLOWcNrWE+RFgqLTnJa0uvPdD/SybsWEH1PPqRihZYUW/I
YR1aCKqA8DakRfOpf01XGzTdWEShebmlupqMUJr5jOqwvkKKMXM1UThjL7rXrCeKmH4Wv8vv
c79+90QqYjA1qttdbOWriZS2lF5q5Eoap4J6H7u95JPOmSEbdnYJokk1w8NB095QSEf5PqS6
eCPCHqoyzvoEEN5oPYR4HmwYb9KI48s+XRj1gp31icEQHQm111qoGSACl+F/SBK14jsQica6
MxtVFnEc1dgayp/lJgrUJKyuxkxUFJSQ7+sJ300oyxi65aHrHjAlPBE3RborN3nLsQ5t9das
dx1UxecLkdcM/e+qaxmtFI7WmPOoQW9Ds7kZJ2HMm8RLiq2UMlSpEqjVRsvtkgl4oAblWHuY
bCAx1UPW7rKsKPL2jEEGNXDLAuBZXvO/kJoJICrXVPMzeIR69PWa91fI3CcUCRZuWVOrsIVw
5BEyOguJNGhCxtKmtKZQjskxhRYiO0BUYb2WmppAjYDEYs3HJBwPXjgVUdHx+rGeIgJJMmgD
GowNTKD1GzpFkzFl8pPLRkZshGFKadKQOwlZQhk30RzTPLjtdWZDXTkvbJ7axIVReHePXnqu
0PupkNWk9SiSn5nFHG5p7byTO1ErH6BS3homzGGFsi2ZaIkIHFMw6ABf1pCbEdchxWGGtVRe
QEQDSAMjAllj5jUyqxJUZkuzclksSQ1XUe45azGCt94akjDyxQ9pIssKrhOAatBspOW7f3a+
nIy4xQq7v7mklKIyohs35Cfh3WjVdq8B30IOds23ctmRPziuNmkCxFUndKIuxkANuBWRHHdV
BrkHxYq0pj9iN5W7EP87scFoirbeXMopFCBAEGPz3kaop88/3yqPrEFDhLOqvPQvVC7kSBFa
aobbi318sDe5biH5neRX5B0bYR8OYsDZFNGdlJu9kSP6NUycMdyhStZycBJ1F5Lvn4V5Ne6H
klUnrRnbk0jrvm7APQmg2LCyeORoH9iIcqRsRkn9pD42Dc5yaAgTIFw7HGF+Sb647+dSly+D
l6IQaoQBGhd71zphuy7N/ZEPAoL/QYcIJVn339sP5HOz6qjL8rqGyAa3tQvqm+xnAWOVur1G
nmM54p9o/X7LZuhAhtk79Zzg3iUcj707cPdFAGKKLjgq9q/2GnMOK+rylYx0PI/pytEb0D2K
YHoudPq0DVAQioBMKgxO3ZhlNadppps8Oe58ZfdZa3qPLVhxWVT8jWV8AmsT3l9RtibOHcrO
4HYRPGi2ZgyTXFQdgw0s3d9p7DsKQmcxAjworUjth1INZRsLRSq3kt8ZIdAw61megLQB0chW
wpPVeGKcSJW3suknrrx6PfXBmGBIa3TRcBzGXMsB5l7wSik+svb5yDutUTUVPQ/XCxNp2nPX
UPHoAYXp/13YgGjqWYdMiC6+ZU/v5mdOdKMxKMxtFKIHmovB3MGgzuADCMx7EWgo5R7mHxh/
Bge4YyTulwzE86oL5wPxinkpQUycJmGihIwhAo1DuIVW0ngr0rlbMwNDO2I19GLmqbBkwidX
V6WFLP0mPLPpIhmeniRUwiaY9LYzmNszGFwRTe5MoL0kmrx3/ow10eSHTp/TyH/t2RtgYglN
WSgSnpyxRExYMPpdMn4PSMagWG11H2MTsBFoMTDMhgSZkdh5cklJ5ykYgLi2vG3qNEk31/Q6
YTTLoDjQMtJEXoO5qKslNPcW2ks2XHbJr4WOAe8eFy3qpODultEAZrzH5u2mTtH3B52CJA+s
lWi2JG9bcCFqd/yXUQTTv1FDwu/iCrJAcUkwqYQ4jKfxJiDGGN7FLD16jsIT3RXfFEydaaAI
YWk5CYfiIOEu15E4ZBlTyzyVGSGMh4eppRkLnwGXLuPoK+vzB2EK1ivbPug5g5YFQZdUZYUe
+0QI2Amf9oqTEj/lt2zX8jnfrNlVwieoO4dAmadYkEofgYTOZ6pO33Ao5WV9fjAu3m03ZVaC
wvqiBk3HrDvnbXFkXfMvyaa8LOa85ZalRSHISY+hyOnAL4Op8OMCkT1MKJx1kA23ohBibQxM
F7xlgAcyVddVRb1skxZCGrCjI970NUdWQc5uCFBakLae1oVwlTPOZeimjgoBXh2MA9ANXIHB
MYMVHtKUydZguJQuDamzzK0RCOOCHDMkS7uqmxZZyDXOiGwHD0W00Cv2EJfKQ1wrVSFWxsXc
wAdijRrdQhRbhkeoElgHn2pgKwUFMkD/+qw7hTOUGFZe5tVnIrUbjGkBI+RPWM6ZRFNfwyDF
uOEp8mRcyFcJeBp23tQJkMp8iQYFoDY880FITQrawLlFew1HKHHRSIZlPYNgd7wlTTBvi2Ir
GBWGaZB8iCa+VaEjIAsUcVmOIsGMyhxwJRHEkZHuOBkULUTIuAYDx3IieAYQCPvDMTLyVhxf
AXGyN+MQSk2jNuchuk08xIsIkl8ibGjRERZlcbo1WCsUuWrgBgOthBbj0EccMiTb6N/GorVl
ubi4YiLgRKR4X8NYifOzXXUkEavCZWDG8ZOj58dIF7SXibi7Botq97g3K7bFsJeGc5s0ok+i
IeLeLJBl+GvqJ30qp7AjBUWdFDICSmC6tbl/szfkqDFwQ1O353hioFrXEx5CMPilBoC5EwcU
KaNa/uvoYWEQnJqYfURUCyVuAzeT2DaucjbdwT7eu60mr5Oykvuqsau255g7MxXL/LzegLE4
2ZxRJE+W18BDkQ/ASoCF28pg1GIpIv/mRbFQDgwfTbpowkW+sRwT1V8Gwaog/Mam/E3cA9oz
IAHUDsVGE5EWnEQF0awE0AzGX1AcK3TXHjszQyzYr7G6KOOPLhaXQIwARZ9eXMDLUJiCYBIN
usOFVXTIc+R1wfKDPjUWv+tzrUGOMDZAtFqxBqBLDkEbDlptuDaDdwDCxrex3XpNW7eUINBI
BvGX6sq5OsYZU/FObkNxwwcLRWlx8gqhtpKym7b7VMAcAuM9BPucA3tNGOG9Yg+jRTBKSdw1
b1Q8VhEkIO4qGHHtc67Gjnfm67kDS/uA7yl5qDNf35XXffpynPkoH6ztMERni9n2eNEdz/U5
NQVxZ0HyAH91MgfhF2Utusy6YOQshOIQPwyJMpVxcAY5dolyPMqIXPjPW/Dt0sH88BA+sSUp
ErjgEGwvN8qPYO5nKygpYn6iKNfBQowul4GkgtFcYX1tpfu05R76Lbezgcxj0GtwUadhtppG
17Ltu61CZtoBV8b0Dg6DSSTwJvkIQjj0IdEsoPNzoibfQvdXau2jF8QzlEQMCCwaSZjvPi5v
tpxWc5nsdRQvbrJIDtcm698PpVwecMuGjdGXzHOt7VPXRm8iPvJwhtfZYWJ51CKXVMLF0/FI
6Q0pFI0opAgpNY8tYfSk1uHlTHHFcfClffClg/Alw/AlEfg+Qr67CU4TfTEVbqNMsxHt3h6K
wIgeUKVD6fXEKzGWn+giPD36dd+5Wt9bcZNU9APwBi9gSLid+612uCijmH+xVWip/sqb++OL
vz3684/f/QSKrSlNyxRccBNnnZVr1LfoNhwvC9RPQ2vKFbduuyPF2roEYqdSR5Xd0LYpjoSo
BqoP6V4ra5mVjEYnox0YaUqEG6OX82O4vsCkaMB3MncIJ+gIuVWUQ16OLu2oC35mIfein+ue
5/jdiKrkfeM6rpFoO98jHMA/NK0Z7pu6Ey8ywD+As1g1AsEB3vvpONb1Di5MC57geGcOx8QQ
SfXMsGy+X7IoZMRli8T40vxBXQEzOvBivhjvDPe5CJK86GBG7YUJYqQbub3GSwbjzfzuEmQG
XHFy4XkzYLvJJWvfUy0A3Yb5Nb7pZdXYsKH2BFI3dXOBU7+8dKjqznsW8OiggLq1Mz+HWCw6
YDAYWCDin3b7gkUzPxskJKWxKJQgJ4gmSkKDFBSR7Iaq9aZ2F8LLfl0/MDQyILOoywyhQ1oi
tMMyv6H6LtNbR2um5B0gK8qvsp4NE5/6Cy6/QCp4/JTOR7mqaRMKX+3ZW2XEIluMtJrBxisk
S9butsCi8g3kwFzDPZpabNjg5U5JmHmnR/X6iD8+4uftDYhTNVp2DLNYXvN+bKOnSIFCnac1
xJoSJCM0s4KS0MgnK/EO3oJ3sLBLSftfCn0I28o1Ba6SrxJZVeKCpQ4Y22spA0OsQXOyDbMo
L0kc1wtsLlGFUfuEIwDvN94O9phKbLtd0uOBPtVc9XUqWtLmK/ukhTQkCEgEt7C0i/hecdte
wqZo/1ZtbFaK4j20TT0TIwytXbFUre6By9sQ0BMpxRm90QujQ3hADA1/2Qmoo4OUTQleGKlF
WVBduIJ1Ihjp7cdEmzemuTEofR/mHC0fjrfv9RH69l6U7QUEGxeBXIOpWn2sh7vtrazmJzDK
GLx4hQ7TFXBqN4TBshdamRd8HyDdOtYU3IgU5qO0gC71OHPsWsz2btabd69R6dzgmNXo4PXd
dEH7hjS+Rcp9P9VMwSxn2QEtI8Wh5kCD9fjcEnQzmoecuWVUiqDUYFNnxnSRTs1iQ34n5kRQ
BZvrBbokeHtS31jSgrakmUKSZQVrx3rC94tMIxtJb9NISBRKvMzGqffErMWnrL+XmXSkGsjS
nqiPQEn6s9mZetxjO00WVlPCfhoum9pdSQeP0MYlOYuZrFzozszuZDFvGQQkabPe4PnLgHOw
7FjBmIWRK2EPGZWDFXrAd1aPu+xtygqtLU1cbSgvd88iCpROR5U+bFlMmLyup1gpRAfAZtEd
C24qqSvJH2Ul2Ob5fdaFW/O/V8lHWyWeTwXt2uCXvG3qDNzx4MRH3gnegnJTRLjKmAR8HUj5
noIzhLwWFSDd+3R0vC/0JK2K2H6frwbRj8r1kdpP4jp6hQ7jKJIPKPb1rOoTiIBd4YeEDGE1
Tri8SfCI2AFkUTb3Pjjp7ads4m/QwOQkTlf3iPjre8Z7fYWo2MRcITDgtFZb4iSIScYLqNAS
+Gfel/dNPYUUNG6p/9WJGtOGATKEvzqZ5NXRlayfTuiJYPMGtk1GoOZPDGJujcIAHfql2RHh
PQo5T6hKuN86qQCCQMgI/tiPoa1zONXyPGlX5l248JAMnZ1QoBC82hutKchFuxRe9eBEz1nz
61qE2U4LGXJgYuVu4PwrS5pcz94v99tfj57Db6Q1GacAGwxkc7CHD95KYvSuu1LgsUkQgTC7
IT4RjyIZC7k4zt1BthQazOLQ5MGGeSOAjLnr7QhRM9kazpwQWkawgzI/Pnpe5ifkiZufwJcn
pG3CF08O4QnpAE9I+3iCxxT4uxUFHQlOrmx8HIDobgPU+Iz1EoLUQq+8EB6ygXvPghV7wlrj
gljvNCtrBUM4hV9Hz+E37jDiSyCxiYDIf2pRlYRxznoKAp2oggMNqumJN2WtM9LER3tz3Q1l
F058Xpmgm65koSMvfniOVJz7KbqjeLjlEguP1YsuHSQH6S252vpJY0ayH1V9QQOfDwUQ94jO
2X2EckFvP1m9LYEJ180VZ9Z6b/WApmBWmD0j2QhnZLzGoenZ5Ojtkp3XV+AOh/dF7IaQ5cvr
Paoa313gvsuRuCaCXxOxd/ANBxNl2u3Myg71MXgBjQJfcYa9uaYmsJu5Y769N2abxME7hPPP
f7JQVX3PcM+K5pVgSVpY3a7fQysPTR6oTViOv7Lp3WyfQHsPoNgKsa2yKttzjk5LM0ZHOOkB
yVnfoLtvj2PwRdHw568nQRcyU414WSYGxtt9farG2eFGVQ45IEqmsxoVAG9fb0b39GIHc+j3
AjJLy8k9xEeL7eWktYdLM92U8T2LbYMte/CADbkwH2KCTi0LdDx9nmGJTuOG6FBU4HC0mL6c
dLc2aQt+54YWRn+Nfm8VvD+Jq4yivJiXn8zwOEHwByjbv4fPufyz4NIRd9YdQLwuYJTQyL1I
KwH3HNR5+APkH0MJRfaIXWeusz3A1+lRrAYikL8PsJQ7yJtyeP4UTVeh9nT0OzunACzmvsBj
Nl0H2ej7CHMNuEGHPUTj7tDuz7B7dOACxsGyZ0+QvAiEfkzTm9E+U5hIBrBEy5gy6oYCZG5t
zZ3m7w8oyKy+7tVzZbM14zoCcZQ41db5yc2D07t/9KXHUaNqrWGF/L6Yl21KDE0o2sxHwmCG
44UhGMgzr8mKywCO57Jb2HbVnRsurg73p+YQW/YLt6aFkWhyjReze2NBCeUlunGDt2LQwhU4
v2zKrFP4FkHQYiFYfemNvDfGFk97i4v5khEV++PA6nJqFCHlOT9xqAr88yiq9xvWq2Biwprg
H9Auwl90AjTnyHVdUfHmrFKpVSqVpSambiWpsgVIyimYuFs/+XVi2peh54pSOoVKqTvlvFig
UOoWSqUMSsv/XhA/gTiQKjBmXJSUlN5/3U0gDvYgc357EnGmVm7P946Cl58eQbnMz9h5LQOn
CgW80uuCsaDKwEBgLCs1nkTNt/nCQEc0vLcsO98LA+neGEjuDgNJCAPpnWPAAlTeX+yu56z/
uqJ7ffDljK/y5WaXLM/r+u1KMjpcSorb2cvJUTtxFO2qJN0gLkR9UoLI+lZCYHbZLvGDiTKL
cAKXEofuW0ZGAY5EtxgEhD2/uzGoVNEvZ1yCa/EOD+hPxOfUFKkgXO9mU7xONhoAhGqHcUGg
6wUqqDhxIUCcExvxWKFJDdHEPEpQv3MjGHEPC3Zpz9HHOXXTgbp3QfyipfCVtKoWiqdVtqlT
CCFykA6l93KaisMJBnzWbous5JNU1dUR6HmQggB4YBcyyr2MxYJetaIJw+0VWjtlhnMrnVFL
dsreAcFdw9xV0sPgO7PMG17mNyjzzirzvdFYTZduOH7WEKC/7DBfYcs25Vv8BlGNOmHpkiPg
IlJZZYUaqLRMa1oUV3nAM3XJD6ZZse1Q5QJRGSAe16a4OGXfswID6WNoGxE2i+YFDG7k7vtm
qdEp4/FDpP0Mgn5vtwVFQJLjUuGJmuKyFCFjhMsdRvEqz9AImWQUrr8p27fglIxB/tEE8UZH
chEzwVcFFMVwWmRKhYYBE4Wt42Pff7dEZ1kMboT4+Q7bJGyTK7Thd83ps1GI0i7XXCSoBEWU
rM6y3Rb0u7iVvJuLWF4lLPZks7kWswPewjRDvPG2FFwKQf7+DMEXBk2KoyNwlGSgpgGbGG8P
kQ3xMvivBq3iCA2ayJNU2pHXCW105dKgoAQzJvDiFdzJvio+47Ol7KPrZLcBr+6iAgKHKO5w
X3xJEW0ZyNUQZL0zIoFIP9GEEX+7SnDqrJQAGC9NLJ8FxXba4hxIWoSI8dcVbwrcEGTmcQId
UM6xUrQtTDRiEfys2fS3o+fvpjCaRMQkKi8oTheTW/w7Yb8m4PUNdn1jbWoiRpgAFkj5tBwu
ChE3SwayTwSG0iJLwER5BQU2ZUHEK1aFNke/5usDQVbcXzAyjOJmK0mlR6l08hjSmDJ563Vh
Vp33lNYytqNgRR0a3axK6V7Ngdd22V73di35XlzCUDol815YMhTRyL0wJvAixiRbt/fOe1am
Vw2BMw/xq0Ia/DQEdNBTI9aNPzc2wCRn2CBbRe1ZlYDbQhFIv4DI+zmE5p4b3Nt46llzQepA
/N+3gWNuqUSUUugO2HvcnZ5vLhDgbHVRouuMMABF9/nY8fmwQ3fknlG6wu0iH6qy1zk8fhwX
flAytiTlPUnyN7u2o7B+yamUEY7Qr8XgZKl6JV9ytiV2V7Ax0qWcZ9LXV4TvaN+WW7MeHsCk
kCwHMTHismPTtuB6SbCtk0sIawl3YRbGBk8I9JoI10xtiAQ8s0rCP1fXb/g24wxOdDSWXWk1
QSTSgFGg7wZiNy6ifyLWOGlJFGszj466cGoVTkOFDQG9VdL9oq+buWW0smun8uZRtN8I43sx
M3vEw47x3bPqWABRabOPXusOntiBOraUswtj9QkaID+BGfGuuZlQwORKnmLAgJS/7qLXdQ3F
hDvc5NABVMWuA48EOYK19qi51TjGlI+CTOU7I8HDMEZSjwD2wwjn+9vkteVrTdN5EDLSPZGR
jkDGxPVQJlbTG0O589ZPtJnegPJddBWHp2ToOr/B08NKZ8mYXXB9PfnCVedbhKhY0tCea7dv
qBeMTRQ3SBeioD1VquV6V2bMBiddqGlzy/nBAXLjLKzN6ju+89CGJW4DhFzY74RA7o5IQoY2
j1hug5Tvh5DSb9TrcQZTShmKQWyFJqNbuHREgzvTJd4P217rtCn7zIZFvba279aTcGO7tdZX
LG9Iy9GAHkAJ/RyNl2VxJSOB6yAudHDYNZhvEXWm4nxZY0I0I4xzeoRhro2QEXAIveLztNtS
kJamwPxrrYoU/N0RzR35SgnFXfjenj6bmEj1L+3Z7xcuCv1snSL/pL60FxbgIfzWZFBsz9tQ
rsVIyuzhG/pjQ3n1HYD1e1eYPMhCzycInKNnMiNRjtczeSejr3rmbefPAk7SXUSM2DtWhDuF
yUqHnl3scV47pFYiT3n7nwujNRxi2+sYKBMjiGDo2dHzBNWR+DGlyOQiFjm5KxJ3YMnRcwIL
igjVpXyE+dFzodrDAN+XnJXuuACqtKyGV+UsWUikgN1eJkbQ79OFRAHkaJ3oBMy3C4gxPjIC
nJNR/VZTsPqG0/BukzQs20Bgb85AL5LNEShSC8NtuNUdBCwKTi99RVN53DIBSoyQ9zIGhRmj
IxaeY2maCFCNCN6m6TVuEhiq3w/KLvvi2KlVZ9DxZZmJveGSA5osdTAH1xHT0m2pL7RphS9+
GZb1xNEzxq59BWJO6CqhIO52N64GzjDtt32NpBFYFywJNGIkI0HvbdqcQb8uNuKK78lJw58m
Gwv7kPFNezXIRQcGmKuyxXNMGse/raOzlbx9MxB1ju2bg6jCd8ws2LA6vhPj58FTS/rNuDOB
IUwWyqK2EOkkRNwYuS7KCyH9cMGH89Ck4axR52Cx0hjwlpZOfJNw1CArUkTixP45PGpQOKaL
Q6iBXuehyuNDupjhVUbGuIiGQwlEzti/3eHQGZoYIKGLvG8o6IZdQQoS3CDplh9YY8qGpRBY
eFO3xHMFQ1eZKriUjFsDGTeVdZLymWDYeUoOhKOUOzBmAMmyeld1Uo/Jt5WFtBGditJ0dQNT
pxD/N6nM3fSS3buVI2cGUejeG7CP1JY85zQppkWEEh5yZkaNqN2AL8dKxahTzpVnzfNbOK6v
9gfs82MNyMUPtWb1xqAPE7NwtlIBLRP2EAylYAF8yJxMS0aCpbaGuW7wXhFimGZQbPEmwyHa
kxeSpcmyzc6Li4Lv4hMm6nMsofFNfEkPCcBiSsBSYU2NWs9Teq5PlmTGpQBUUv/OZjQMW6/f
zi0HwIDiBSMbROwyNi1qS0mf+ibWlilOLbQ83tOWWlxi1HgL6BR3AxqxPLssyIRtBTyhcGTn
RdlMdJTTvIBL2zUwImG1BYnZEt0oVEDZOTfRyTJnhYSQk+VJxVW2SihIjRqn/koZgSLVUlku
taulZrWBcDFAUwukIGFO9I7dycKGkYYilp1XOl3YoPWX1vPqjHygE1UtjVSLxiqjociAUgSq
Dm/hB7iwZseoO48WT83iqRUUYzAsRh8t2IDTYxk1a7DVGKmYMCrCUa2GwmAY8DVFb0mjT1US
rENNQUYB8dC3+wqdA14RnGlDulIyKDP5JBI9VpbcFOtuZNGmfH0+tixJMFXEEhySA9Wl3wfE
i/jmzWcHDLWLQGdlbo51oASMcaAIji1SBi4FECjuOAhQzp8vS9jcBORNPLimHGRQlnCGbVxl
UYg0rlHc8ysEnKhF0nq6jE483vGbZKeWK6cTlMLuXjl36jwDOicWQeHHow466Cp35RI5QsRQ
+nJGCF3itZh6JQcMUp1BuCZhuoSHcy+mVwHpO7sSariEY6JEerWiLV3YTjmwRctnbA6iMwQW
dy/MexgDCMAHFUDY50Z33+D1+h6JhpGXk9An+DYo0w7B9FciiQ1hiegqiiuTnEd1rAwtXBRR
nsCTvQDgf9XolSORu+Z6lM8G+lU7sSQSrownOPtekb/2CvwVcxDSUZvCP/u1l95xe1IYijc7
AjkjNNERxh4tv9+GNnTF29HgqUFb6sbRUaYc1dXYQFMj8k64k6E1Mi7ARjqK8RHOvZBTrnek
G10m6h7pLkf5Hdmd/CIVbVZUKWlPANjfkpM4HGFPVRH/g0kXnx9xvvRLcvKr/faX5PjZs/T4
1546qVHHSHJBVgwBE0XLoJgYyOgSEbCJb1MnS8PcMTGCcbyGrKUUejohUwgpBEsROuyzlhJp
gDL9ZEkvLoqkanUjhlcmupKjJxkNaSEDe7glHmImxIcTM74Ib39iggbKYSMyNjlHK2ik+ljn
oiH353ERvcq5q5GdROPjufRskIsVc2wIYhUcOw6nRYnWqp8MhvpTa9ylYAtInI84jGL/2xuT
7grvw6fLJly4lWyroVbaCXRtLwrhmylcGhIdIg7GovCM1wYA8XvFinpjhrKyhG4foSo7Vzoi
EBRdp6jqTnhY1LumZTVEySF5XOldCHI3mg/JObj7ba91ZLWI0D4oYQXSQd4PZYO041+EEaOt
nC4iXOfFwQg8TpO2OE0YVJHoYO5lACEx95QgD7mzMDthQ8SH3LZUYlVpBoa00QbvW07iroca
+UfP6YpZNRjVLhZnK4J6b9YsbHq+R8o9hJSk2J4nefpdL/on3TyXsB6ybusFK0rA/nJJWlwr
EsmI7KPw9M18OJnOK3V3BAwV4CoN6ckrPu14DfKKAsNrCiGjAtkkNbHUVeE3LUgGyIef9V6B
yrLJ1P0V3hDlHUfyQuNJWjBxbF2IpOVYJZQBqHHpUzaATYtjJEL9GcTnW078RoB7EI4tSDmL
u6TDjRi1ApSIVJ6skXfKnMBzv3lEkU4anCZwYwp80DlNTdwgG/K07s/rHG5txl6/mTthbtzT
f6C9cX6HfABAeXCLSEeyxAyYnyWfhcvzF+ZBoKyyzS5HNIqglRCykjf664KVhUItxwb7d1eW
8qZ7s+FbFrISnOy2BqnnNaSjF/RIKnG5aLV7Rcx70HTxBVN6aKZH6HD6doVIIX8O2YiSkpP0
nMQ+DMfqc9bsJbU3e5Ja+bqqG4PaIkSW3oLIaHsSF2MDjYOQn+d4lzBGT/I2por+CRIRUL7g
P+GGaWw5m3EGCiMQYIv9llNcO1/GKNVwzx8k0w9CpEASb/pI72bYIz+wHQeyZb8Z3q6AUpK0
rZtUeGBkEEKRwlaPuJyxh5B3h4KeoWOLYmVcDvHxlzhc2jDjobIBKUqcRNg4YWtyC841Di9v
DqIWj8/vqm3RdLsmLfJBDv/7QdEBjJ2wsziALMcsP4w0513H8zAvIlHGl5yyANz12ovwr1Cu
xzJX2mNPjrKsgKYqYTIyyq060IMDnrQk7FX5DVXWtofJUBDOkVaJfiNgHCopMqC2LBtbi6ZF
4WGfaiYG+uppI6KwEp6FaFLZLej0L6wXYwS8sdTo2zT807Z/V9U8SohDTcclDiPtrdGKCp5t
JMyli6ogvCQoJ9CdFCHFyLDCa7+tlFFMWqkweVOny8Bx4h7ezhQmyCAn9jF2MNcyUDgYdm9i
2OsPSeoy1qpjGTj6nPNHW0L2MIIE/fHH546RjPiQrDETW2dr52wRL437DfZtB1nAsyql7qNP
l28mdr0kMuYeFtSDiN5aw9jpZeWW/1nMY2Z8g7JsKGFMzMtmfOtpT+u9Vj5nv6JIf2GrLgXd
mtztPO2DwhFXceRi92yXfQNLF/2hpOy1N+620n7EltxyYMo9UqR1pVBHbVdsHU9BlgRdCYUp
DzMNGsHYp8l0oQLhRcsI2KfavjJQI50uVIy1aBndamq3Gks3lpjOpHEvOrNKavqy2i5y8dFi
qanbRXwcsrzd/gvpbkcec/oVnhyCofEt7AZLpJZNSnEcbz8Lv/CC6WMpEUS/N4q+io0PQgOb
lNUlPw5aUf0DUsNJUB64SKpyXZBxzvSfSLbDQsFJInbwEz8J4lAStxNzD+MtjdpBT7yd0G5H
Lk9EK2HFlhfUDWqzR52B88SzmnplVSZOq7CRtTO4s5wk9mhD2wY8dvOTTWw5Wci/kN22rNg0
Ze02yYrpiGu0KRgvvTF70VlSDGPvl1O+E2kgmn+4x8TtsSecfmoGOE48GIJR9QPZAdz4r+k8
GjE8FmBqS8GxtnZ8KSd07UnE9m8OaEGN2aen3uirAejdSKz9wVjdBpL5CKsZXNXgrGULNzQg
3TYEEMzxrs000eRl/vQgw7LYa2wkc4FT7yxrcp9IKCEdNT/YwouZiCikg+N7wUD0wgq74SU0
7ftGZndaESLe7DYx3h2s0HGSQtPPw4oAjjNgcxDQVITjAwUA6APwDN3i1xIu+8GV1SKiEkAM
hDRXQVBGhPLZg0zDdI4/H5jUMQEZmgJNVjqS1ocXfu9swezcxwxFYtrsOcIocDAntwlJc4fQ
3+Wi3yuf5IntWRKGTqjaMTLNSczlRnVfV3wzlVHwfTUqJHMMWAExyxeGdnDfBvOduVOuFcgq
+pLKXBlYdwQE6OawP0kO4S4E3TDpnzKuC9Wy6is8XWPZp5t9DZtfiNbn80ElmBF0Rcg5F6UM
44qejJgYTF1VFVdE8aopRQiFUH60hjqhb+TtkS9qiZ4dByU0PRlKX+hSXDCpKRwVpZ8a4Agi
Cxcy3CnYcumqdUIe62ITnoF7m4zSOp8MO0U4yTtdSh8EAkPGkmo32eAtxyO6AWzZJdFfSxOF
zI0YSLQpJLnIgnTBGyS0cP7VyWHbdWgFH5oYMDwPRuT58OnxJJFnkXCmbzYB7NNdDrja0fGz
blp3XX2x2m1FLo1eiDd1lmzsG1d8t9zWTcIBbep6oHog2wt+669lO6zLijm4d/sO7fG0SbkS
/HRWGJ0TKXdyIcl1dmjOI2WqRAaxV7ojly1QvAY/txHwBcrXEzyFwHRm5+UmF8CFU/2cBc8t
bjxcO8laT2w3HYgeu16I+WU6Ocioo4ubZs1e3bZPIB/ZrmkxuDmGF8BAE+0uPRKBF5w++xPA
KUTZffctGzFQZx3IgefqFkJY8hHFRCMieHAQtcbaA5aAte1N0CgBDGh28RYL2ZDxOn3HiUdM
1BKEvynegSPJKkva7lu6tdvB7ffnNG4+SUt64MBifPwrmlpqDI5j+VqgpECCg52aVWTRCE1V
n1Dek15Dzj6SOMXhnfHOA9Kcmmp4v/BgQ55gJ5Rwug4mxlBCpV6Ig0DwsnvBEDQDemwfA30A
BXf1dpXXV9UYvn9bxn8g5/9v1v/frD/K+u+Ij35SLulw7ABP/72wxZB7qsnY0f1yFHfXSqm3
lBmIL5OZN2F7sGPfA/fDM+ghdEDKog+Fjd59YRQybj6tCOVvQaNkqKiTC7nRWBYQENOws+uW
OFJvpBUVjaEYc2Ab3Atpb2qKvW1YymLl7nwi8BbedxN3CXO8jxs1bUHoGM8bJHib1tHg6a6G
q9iZHFda1sXg647F54KTh516k9xMekRrQCalAtlL2GC9Y5oM0OKhnbIBtJD5FW/NZtK8v1uv
LRr2aVNopg27a83nY9vnbzOS2LdNTxuq1wfgNMf7EwkoG4+mh4IYoc8JRbpdGtHRuGRCA3FS
xNvV0SmAA8ooLSSBwqtmZlNKvTEhYt1CZEN5E8DUjwRN0/zh4MxaVupM4AKlu0F7Ey+g75FT
9BT+xL06nrUwINrnHAuJcpWNWk54ZU/bg7es4E7QriJlZcf3lxYVcfb8tGVHV6Ur3g7e857K
KGztFLWeqOQTdzwgzikHciNqyJCOQpsnDhuy/jDqV5wEwsiPlOcEEC4fnCGOGPsS6Cfkxy4s
n5I7h4Jvwe9WRAbHsFmSA8wI61TAiKcQaCS4ALxJMFZuOJlLb41Y0IXehQg3rXEYdAg0IhO+
mL3BNYkvbWsvB6NXefywHKvddSoKZTsQwWHqYZ8TvDHNuThTSz70ttBDvdl74qiZ4AyJHgbj
XyCHN86T3iV/jkOTPBfezi1bUACMmGdeh+Z5v8pvh4kEWraJ5MXsbYx+6DpyaK5AVvafv7Us
LcPE55JVqKfFbRwHwiCa9OTuPHhgdcTyoU0AJim8Bwd8zrKQ3GM1S/IKf6S2gLjAgsKJZqNR
uUGCKDwpe/wXs3YhU73ybfOFvNSALly52TNFsT1PZP7ilpGBkK48ou2+U7EE6Mr0NYUnb+Sd
Xr4Ht5TK8apoMPCtSHJZN+Vr8C5ViKG4qDoEqgkHBc+swPJpGEWN2C4UiEW0JLvA1UmNbTdJ
VsDNiBdezAUz3kKrDgBnwbLCDBsoy/v4adfAzY+LGk81G3mt0UjYCNZNZVPcM95PzB6LrC4d
ivbTe0Pd4BNpz6YWtniatxsRkoFd0VyZYhFox789mX+676adHrBnjzSbe2FSLNac+7Ok3kos
xHmoZ7SdW6HSOO39Y1eCtzUkPr0Ar8kMF1NeiChDfMWArwRftQPnuDs+lfWcyFBF04RXlNQn
PoCeVBGI6C1LWAXkCjYLeH4I64RDjvs9kFgL6Vz5kaCpt49gVaJisN7CZAJrM1XjoyWRxmEl
ITU5CSZuST/eta2723qCkqlC2xfK0CphISD7VkcARD+ittaCBYJc4pzAnfuEXDMwWAiEibhK
ricOJanQxzLmdUgF0dIhXIf9Baj4kFXl/ReLQqYnJqyE99Fs7P7v2zBkcfLAqmQ0pZhEcPAx
0Dr6mQDIjoUb9wc7FYaPeAFB28bEgNBtQS/aA32dO6w955xFxMID5bw+GQ9YoHeMHGKI0Qph
9ugVvz2zfCSCydyeZUaBG2CgA/WGeBXqtgb46XjBTB+C4sxUlxmCDc9jIVlN3P93zBVJ9UtA
IvuVhaJQ3BVXtijc48z2SYoOGyZL5g89ngwLtHxUS1UzHjXALxkXjvrG2uuL1s6zQuZKsSD5
4LPz2RT/TOdnkVKgSp9N4Xe8TFfPpl0df6+0oFP5KV6WSFMUN74M1gAD2lR/jpcXiaSoB+PL
YA3sQX+eiothdvBdNtkmfJ8L7bhp0pbZqqxBVGxavARNH0ap/Q0V6NU58JIZVV7yad66PMkc
QwdxNE/sCzG6IhDJ6amcF9NA/p5ZDgOyis1g5POumXXH1htT+634GhSKhYcLQ2aQwN0CZxLa
7eHj9PBBwMvllZHDoDPI+w7BE28KqEL9dHW06ok7MnP9WUMbIwVCeweh4G4n6E4w4M1tHAFj
xj8J+AbcDBtMpGaPM64GQgL0M64GM53ikRY/3YXFEpha+NB7twfKcYdJ5SimBs25e/Vbwujq
JnHX5XbXgutbQ0oHj1UtGMhKhtJCoGtJOKYWZ8rT4wA9vnOMHxoria93PVTe6u1Gasc/GB6z
Le3HBu2cCe5s1AbnWjCZRcsYeqRaVy90GouPjale6rDPQneNJ6SOj4ymw1U6kz20OYejRopE
ey8b5fVL4qV5QWQPsTJsUQd1snV2l4E5YpKsaB9aIPNQWCilIeMBo0c+pdAn0vdN2zv9PdnY
VC0LoL8bw3nFfX1evEO/v3gtYw836pgOeUMWPL1PI4AH2pLlHWGA9kBjn2wCgLfuGIX8Sszt
P0xYI7b9oMInqsuJyhqyA09smZupwG+jbpiM0zQcvsaR4Hs5HycrswJQq8H7hG9dWVVFM5sP
V7cYpwyD4NceyWEmcKMvNDN50iXaWz/p8XMYkPzAJdPIalUSH+C/i+SClW0LPQm4NfLLarvr
pEIXDXFtu2BTv/mpU7Gr3xZV+RumI32rGIDHNOHPjJdwrcmZ0B33cELig6hQDSjpyDIKyec3
df02OYeMhs+esR//8pOoE16PNA3GahxGf5C53x7Futm7QK23fVkY7EFUjHFNrprSdksbq3pG
jCIuo2wKsVdb2Kvb1hmlYI7bZsbfGdzNHGSjhsi7A3Uj7xuK42amIvkY4znc2Njr7+yOOeDP
fKsxBzk6ZBEdHPsfynVerNn3f3/x5z+u/v7yxavVqx9/fvUzf07Bo9l0V5XdqisgUdb5+dR4
wWEvu2t8aKni3LBPvmaPU0b3rn+L7dnXEJlCNetToaHIxfv3v1BSee12eb/9Vdwi4EDocvdb
fGbXhQBP8ZpO/q92W1aDC8IewrHH9o77RkXaEC+slrrADAHCFFO0+RjUhpfH+oTPCQf36sfg
TPst+zKwC0s4lR7TglU9DcB7jABrHcz3f/nLz69WP/zrjz/8T4QFeIxVIADwCQAcboJ3YPN7
aI8XDggvoarC50XUoW+GtHmMG8rJmXFtyMv2poI5Ugw6WCBBSk9SEFTCxB4sn0F5wRoN9yqI
ywf5hbjIkl2QGVQF7OSfdGgtpPeKLs54IOqQnKGNbkbAQnCQNEhFVCiThUQqJcvUwqnz4toI
eqlij1LMvhmHdUGF7D/Ynx9i1R73QkX+U8Eo/aB0EFFPwO+/zKYC7lB4uguITHcRfpnBy0zc
vjPpKb3wKTHJAoRoEWGoUhqKPGZHoYtP6TB5tjN50dN7hdRpmWXYf07Xdf2fU946ke5U34is
+cs0afDlQlx/cuqCla2I165xkPhezOJ4mB4ly+5d1wvZo1QVicAHhbKhdn57lKsiQ2Di6UMA
CH14bWMoo1+yr5Ivkq+On36Vpl8kX3/xxcnjr4vj5Kvi6eOTr588+epp+k12Ujw9+fJXCyoO
zy/r4vibInucfflllmZfnxRfFF8eZ19+k2fHT5L1l8dfJifrJ8k3T09+jQ86Cps1bkQxTN/Y
sccJoL+jLSd2t4T+ZCD0E+PSuDvqI3SQFodHGEYVjXEfSO0xfvHky+Kb46+yJ49PvnqSPT3+
5ov10y+Kr7Mv8i+TIvv6myL5Ont88k2CIo0QBi2DKomdhi8RbnHEQrrm2pITQtKBrbwJGP2m
u7Z5tCnTR7/VF2lZTK3rAgEjJpZPy+pRlvAzUWhHleoXflIvquzbMn8Otu/smyfp8dPi66dP
vnh6nB5nXxXJ43X+TfrFV1n+dP3kpPjy6ck6m85H9Y8XFhGKvH79waEIG+2CgLAAovDNyPY0
Ylm0p+y8zPjZc9xMwczy/9myrcfjaSzVhvFkm/YkFNEh4TtrKEYM+WEkxEIJhsY1lldxeBbj
Wx3LHUxseaeU1lRTIkviJ4N1jXGT4WpnUm4gEtUDVryrAonJjbJMlD3VF7V5nSXkq/T7QNm3
2VVdySeuaJq6iXYhSjEsFWh8FkvJzCYiT40R3GlPLoaHJjyIJMb5oJfoJTsLTuTdMYfjXu7A
4cB9ZRpVZQdqkFg2DfYSXluPLuq6jXcSqND+Y1c2TbGZGjnl/BOtmjbWJVza6Kby7KoAOzlg
VzkZQplEwB44E1gO9RJBmcbAeKwJNI9CWTO1z80TFfgjeNXGovFRHZCawSjrOf0qt+ig46+6
4B3w4U0GnHgDB/rI5fizvqIyarFV9r8mB6yrFWoN1wXoGe6WDe6/BI8/yhI8/jRLsK6OJKoL
SN/3XYht/Q62jkE+CEez2+4cg2xwe33wvmER6vA8fK844l3xQreHDCau+p1zxpbz7hnemP1m
FHf0y/8X45DC11qlaMtX4NN+Fn0NeuHgKuQ/T755clx8WaRff1Hwlffl4/QpP7oUT58WXyXH
X+RPv8m/fnyCtBtr/CTSeMp/bt34k0jjGf8Z3fgEYhKBtQhSvrD3DBLVLeB3ym7AESU7X3UA
AtxVgUzEq8AyQ7WRq9t2rCCpaxURi8t7DK2jhayuNyyvV6KgMqcJ1TrGByBLWhQmsNY0Am8P
hatZ1bENb27OTonV6B5m62TTFoJ7YfMzsiGd3s+nlKANQnhRdWFwgzsBimshzX7/459evHz5
4uWfDH6E8UXgdrCiYGxeZ0P5P32DmKuLB9jBTy9evvj5X/fswLJnc9G77GZibmmOdR/g+YuP
gEUAMcyVLQevOAlRQXxLqQe8vPEDXN6QuJxDQ9f1TmV0N8MfJxR92byiDRk2IM/1lbrRbaAj
x9d8dmpVhiJwdTu8KsIHBHnv+NzWLIEsu683hXmTmw8bLmCj7KQBfG/MPdwLaXbFGY4Fy6kd
3cLTImjesTJOwcrEhZkfa6waKJ+HhAVycYJKgqNhqDUF3lxtcbRoRjShB2LoP8aOpUdSQR0m
7zvvLYTRxfLY+IMaGQm/bF62MQ4fezep8GOKuyPxExlXWHDGCuNGMdSACzMIYXcCcu772+0F
cay+AtgUTW2IJyNNqNDocXx8J5EBhmVibMzSIFIb4wZ9QJsuIvyZm3wMNPjzdGss7NGkRsKu
cne1v/2dNs2ejTC0uemDrnmXsTfL22DCNnkVxJRXN/XrMhPSqkKF7tBJGK43W/Tk4c8WFOm/
4VJNd467GSRZAEeh/zQ179SxIb6vXv3r3/7y77OeiCoQPA7fRk927gA04mAL9Ezi2NhUtXo2
iA3eisy7wQuZo4c0B5UepGgpTFcOMn8ATyqRfR3pLZRTzNNpoOpnBY41stpKC5Te2WgAubKJ
Q9yGFSAH1HVA73Vbjsxt7/xarU89VKl5GjvrVu3InBNpmwwAolieG1wAecLZvgyBJa+TssIr
w1dJk4cYxMdYTfz8eYZXif9diKk5CKKUQxPye2CilCnIrpqKpyixt4xLrvxcsikSjItLCUEo
PGFxQXR0JjOGsLTIkl3LS+waLlDzgcNZBDrgB7ii4i8QHS0e1CZWICNYEso5ccWbg1gJCw5n
wRvmUGRyvaXX/CGkOrREcLhmz3edmpf9rKUCzlsZaUkJ/KkQ96ELaIw8C1VHS8uzpWeWpYcL
hDmCGySPZKiHkoOeJRDXKaUIAfwcC/l3unoLKCkSTrmYEPvU9tP5619evHw1m1JJ8sMlEuwj
tW62Wv304s8/rlYLtlr9+cVL/kkyUi2N0+F5Kswbwfdp4L2i/Zvbw6LON6pxQ1oR8K3rehoC
wy4JkKZJM/1EAINgMQpeUfATgzsev6PgFezxQwE9RLEBUogN6vcCq4HW3xmoj9pdakZFGMUQ
fieQfkJC2BPEQ+af7yn/u97BLsI3js21zAwIKdFQOcWfZkVw9xAl4f2dbCHm0T9C506Rj76R
jAfRmIoPTiV2lwcDFaKJzzqfIEDK4RIQnN5AtOASV3UNYRf7iCRZw/0OItM7IZZDpiawkJUX
Bi6Yj8h8hufs/0lofQr7ZMDut1+OhrZfBm+3m5IioF7VwfWABTqZDQVbae9kQQRksNiY+ggL
xLEPwkt9kbYfvODcfDDoRkjgd4HNCC1RNDyDnkA7lpdrtMJ3QTqiBAn3MHdT+1FOcHvuIR9J
8vnIEsEtZMY4h7nrNTbiHPZxJ9MXvQ1blbu8wGqIv08+pUw1+gT+qUXS0YA6OE8HcP4Rzl/7
EcE++8IHoYWD1BufZGcdr9waAx7fpf4YknXwng9kxYbdi76Y2khVJV8ul8E9jMrSdSHYxsA4
dFlmFAw2+TDHhNHqif7Vgg5VRKa/R93KbZc6TLlIhw5q+5QycpZtFxNH9GsRYv9uRJL9OMTA
sJ/48/WB5YKp0+MAgCcEZnQV/oDrBTMwgGUFvH/IBbPMwaJYylM5ZXIPzhPWKtFGAL6evNjH
mKjIaokNDgwZ7HMiJHZVduccVjGiT3BW3H8xDUwahL0uhccaeORAXo0FjZMzQPhb7/gkml45
4bmsvfbaj6WIG7Uycdo/zHK7ZffuvNAehFMAKTifPYPYYR8JzOCSoLDpP734j3/78ZS9MpwE
rXQmsPmmnFbUpts15WWZbDbXykwKSWEwp2ALAcZYV9esSJrN9Sk8BKfsa1LqNcW2QDfDoyPO
8zddCTHHeRftQn8lunCeQDoVbIrip0Bb35KgwfGaLpj6nD0HvQgYd5VH4gIDdqA/yNo8B2OL
s21Tp0nKxyLGvN2hwhFCs0JeRAwoQ8JHXvsm7p9FHhpoiiIH/cvcRCraqKsCEtigDRogAY/M
srpMmjKpOsywQzOoUtvMoDeOMwyZrQs6M0NaUZiYBJPuLMAWm3FW3RZzGR4NNgznDnI7g9+r
dld2BXvI8C/ZfV/M6As6AMOno+e8/ozGDHFtVj989/OPswfBq83zwWrhy4Qj6sWv4AxXDgVy
mI8YYdxILqJFTP5QVDnfDvkUedF//i+kOkdL6qoBAA==
_ATEOF


cat >right.gz.b64 <<'_ATEOF'
H4sICMoJGEICA3IA7X1rcxtHkuB3/IoSJiQDMgiJlF8iLe3ZHntWcbOaibHmdi+8DkS/ILYE
dmO6G6RoDe+3X2VmvR/dDZCSfHvLkEigux5ZWVlZWZlZmY8esazeXjfl6/OOzX6Ys5PHj79g
r5vkOq8rdl4nTcG+FV//x7ZO63fLrL54Pnn0iCWbDcN6LWuKtmgui3wJzzdlVlRtkbOuZt15
wba7lD9iuyovGnzQFc1Fy+o1fvnTy7+zP/31z2z2/Bk7mUP9tijwzbrcFOyHv/z1f794+Se2
rhuWF11SbtoJFOrOy5bxf+f1Fbuud2yatG+h0BSr/vD0KR9W1XZJ1dGHZpd1vImLJGvqdsnY
w6TKH0JDUPk8uSwA2rxmbc3SgrdTsKS6ZjVvrEFAWpZkWZkXVceHfc3KKtvs8gLB7fKy6pbn
S5ZcFW19USwnf8iLdVkVbLX6+dUff1j98JeXP7/67uWr1b9998Pf/vLzZPIHUZ19m2xe103Z
nXOM6oclR1DCobWe1XwMRWKV25RtZ36/LDKsZTxKa17vEQ7guu2Ki0fbpDtfnm+3z71C7Tmf
63y17Zrw+03xrsySzSpL2o5K6CLTNGnLbFXWy/PzqfE4O0+q18WqLTr3hZic1nmel+v1isOY
nTsvYAh++xzxRVMVjfO42l0UDYfnss6S1HnXJlXZXbsPL5ItPoIJrXcNn/xkc93yWS8rIjUk
xvNkuy0qVsO/Agn4qmbr5KLclAUQNNRuik3SceInktvxlXHKEgZoX1GjvDFOiAnLywbn63oF
nfOquKacklnd8Ba2dZW3rHiXZB2nPU6oCavq5iLZlL/xnqAe1uL00TSA8AtOpmewEK4ZrF+A
8iq5xiV3xamtrF7DSyTe5KLgY1xDa11ZVwIMXLYWIC2HlI8RmsIXfPa6gi+kIsnOjSewJBO+
yrZs3dQX2BSHqC05QAxXT7kui6Zls67M2zkMhRP7hWwHPnMEboGdcNrgLbXFBaeSMoOWig0O
DEaRME3S7Oq85HXPEyjfXW8LNsPJAoYhUTxfAMr4WBeI5CpHRDfQ2qas3rJZUtFS52DNl/Cb
j/i83m1yzg045yr/seMMAVgH70ThWyJnOZlAv3zRs4KTHnvPtvB9pbpfiAcI1w19OVN1dk9O
oMezCWCQM0r+mTV13a3gwzP2+GwyIWKa8AerlpNnVkzeTxgWzLrmjD6KN7M5O4WnM9XE5+x4
zt7fiApV8a7jZd6zFzNeit17xv7+4uWrJyerH2aP363Fz3x+xueBU28FTX3++Rm7mdycTSyQ
EQV8L+DECeSmgLSfc+J+WzQIrv2CwYsZZ56np7wikCTyBPaAtXNeGCowxjnPhpPUqiquzvCB
08Y24wgiJrCkP7N2ISrMqQYSOSx5lp0X2Vs+/itYvS2+LNdsJkrjd+oVK13sODB88hN2yddZ
jgQHnOlcFFHfWXexXelvz/SbWStg0A3yMfI9rFJr+TGQ6TFTI2pl6+3pqW68lU1fvHXafTGr
dpvNCkibP2X//Cf7/POZUWeZFq/Lajafs2fPzLaWRZXzp9TMDf4W873N4CE8MudmU9dvd9uZ
h/45zZqaMNGImBJZK5tTm9umvORM4pR/kZz7W7vJ5+LFGZKbWBAhigIWtQq9iFWbwNsVYks9
m82RMIPlGRZFAot1tUQSnk5xdGLkohaHX8EBRDzR0+TjEIFQ6IeZCsIq2tSLDNilYgTEzgAS
ZC+cE575aw4AOCPKkS+hkZngD/oBtriQTS28duZnVnH1SS1iZKd2Kf1uS/LNs956uPZV0XhZ
+koEM+Gvt7D/fguAw2jZq+diKxb7D2cENOl871x1qoPZfPZKNXwpGgUkvWcmYdOUogz0LbXw
fHYpqNtkkCBQfMuRuNDDf25sk2eBgvzXc2y/4Bs530bSAlaeURKW4zYpxZLBkgujzef2pnSG
sgzQUIsbHt+tOXeRNEniVE7kioih8o5YIrZzEIenJHFM9f6MAgPtxqoS3+4L2mRpVwbpOksq
kAIu+b5fUFscuZdFBUIBZ4EgKOB+h+eFcitEEPgBKjx6ztgvSLjwcYYUiciaL2Qx/TOy2HK5
ZN7Pr5+uY5sanMW2MGceW0dKeW7MVFXnQZJCwZ3zcCXZf2vXsVvh1aLMU5fi36A2cDK7sdNT
XDMreXpRq6m0GFx59HxdNrhgdWcAutcHPDy4j7bgr/Kl1xXHi99Rmd+2H/qDHV3WnHgm+uRz
eprkOQoIMy0lyPYSau/FzJLdl7xGQXVaPgS+VSe4gccL6e08Xqbkh/Km400dAOZCcQyFCWAa
dw79i1lebLrEqiee7DlEJuuJZ7iIcF+FlTRLxLLSTzQrXIjBzaOY2m431ytsP4As+LJgExb5
cRHZNtkepfNWId3EFPQZRlYvFghU5yECBP1Ex8/bLLoiRix5mCqokkUXeYAu7GKxSbdLicHl
A/DyNb4/uLzSCGix1BCwWGgI1gbFlqGFaD1MwyOglgYXol0sNga7VGxNpfOBYYWn4JBR6Xnp
G1TvvFiFhoY0QXnUGpOvdDk9dQVW63VQcjU3FIusYVRY0KZ29uABcguTqvyi+FSUtOZOF7Uf
O2XtVq2noqTBd3VB4yFibRzSuNDeXc+G8LGUxQIIcN85RB1+GapobUv0Sg1kcBznSbvSDQQI
HZ4EhultmFTu3jPm7ZL7AWPibzw4AU6tAAqw5/1AMmdmxXeZEWBxMfqnF//xbz+eKq1/WRXr
dZmVuFmnO362u9g29SV207IrVNw1xT92JejxGSiVCzgdU1tKM4tGBXsVzPgTvoLPky1pH0Gq
40XE2SXZzpfsJ16kqq+oravis82GJW27uwCjRdKxdXElDAZXJX+VFrIHaJcRhkAfzutD95Lh
bL9VeFioT889ObRZs2cOcQsNj9QIQZF7bhmaJ/b55816rhRfzVqKr7B+EemiDUEHHE+FodpY
J5u2uMVkc7liPA0GNi9Fg6GxhZlNH2NBMUktfmdrcJe+3azB5PXjQeZubwUGbzUfa97G4bPY
Ov+OqhvcjICMOc1vQCudFW1bN/xsX1YbsDp1hrioFUUrUhAF1CjbOZuglkOqoJZCl4RdiUZJ
ExRoFk9pYxrtru0G7QOmblAryQYaJGWW0SSc7bQ+BI91+qu3lHqOpSaIJhBm61rvNbJ544hI
86fYUL672IKSdfLooTqnggQ1gRemMiisLl/4hwdPjaRKNwTWn2c/zabf//inFy9V72bpz+63
n/1nNZ2z+4x0zYJVOa36gwbu5HGkEhetZkKlrWxHWO6jwuV+LnqV00EfCXWGthqr/Pjyj2OA
vwngFEcyApuGYUsV6KIYpIJh3PVRCkda24Wxxp/3ok13eYrr/j5qHNGwBR9x0d5vF6Sfut8C
XGp8HD7js7NwyjlzX3pcxFgI5dxsdxZiD3ZpYG2OlYz9C9h/myk7JXOvBWpUB29aJhz+Yfc4
76Of4NSFKEeqV8ctRdeYS8XiFATaU5+ATJJln7Mpw6Ux5dNL+q1wIVo0WMpYP97IQ13ygT98
RFzKMp4hkzJxAtsifw7bHxc2y/ZNXVbiDMUfaZHmuXHUC6o6+qqk0krjFyn5yNDmIV+u0HwE
T8u6miVyUS1YQutoEVW0pLpsOlQWe6MDY9HMEIgFwaLsbYhskLLuvd7UabJZCb8DcA94V+T2
Un5BbUipQxEqn4chKct/NnzuRHSSXCGmL6mKmdQWmQfQ0PnTLEanxMDRk8RG69gZOnWaxay2
zIdQyDpsRs6a/ahSe/joE/z/n4hUIstDOGx5TLB41zVJ1qF2hB92q3xlK07McwwLLOayii+r
4BJ/QNyu3bsaMb2WJil21GI9Z60SfQvC+zJ/HtuXCVypT5KCjKovwDLeO9LNjbZiMm3G/I42
c/z8/fPglGA/epC8xvca7xcLjabvnpOXBXLVZbbhFD7Tkorqxm4piJ6LMHYuosiJ4eUmRmdv
+SG6EHK8t5H6m0mYFKiRORiIzT5ozVY1afLbVV2J7mgtRDrdJj2kKH4c5XOXoDFVaZyLTXxL
IwjOIm+pMfgMBl7GPDQt9GD1W6IMXndhNoBFQvs3teCWvQkhj4qAGa0sWo7KTolz5a0QOAqJ
AJVQNWMnvxXOTjhuR2DbJgaQPYA+0LUDFgh4CrIJbfsrwpbVXAw7jR7V0FZlbjqGvkEji39C
7zDOyY+eG6WBAiOK+oF+ghPBF4/Zv4GLrlUuIGqk2wQ3ouCM4aYDR5gFIVHKnyEEwjFjjqtg
eCEvJJia5odI16hi6SD5oirAnwJUkUmLHg4XHKTXBfk7gzthvSY/h7K6TJoyIbcu5RMBLpkc
BI7Coqp3r8+hHvmmJR01uykui80ywgLkjt42GceU2t9bQnV0f7bEhUVPK/NRzYA8MdCKwBqK
GllScQyDNrTdbsoO3FcZMJsiZ+m1qNguhbnH1O6Bkw0n7s9tpb14+uyZBYF4LAzJh7UDsOt2
IgzSEuMWlhAXZapOHRPuwTo+suOwGcKcNyOOkKw/x9WYPSKuo88MqTO1AZo5mkwbFtlpUMn6
CYALCME+p4xw30/BKTzTpgEbMX+Tl2lh2GYtYXVe1NlCin7M1vP1e3kEZEK1pXj9v2HKoQEt
AA9LJWgOHa3NDuiI/UaYr2z3CP1e+H/M9L5wjSaLN3O35L1QUTBl2UVvhGQrMR4fZ6nHGUaq
CXYAg/sj4572RzUHgd7F5fgBB4p6+Cu1X0pPTRhCbAagrCV2DTochcbkCG73xjkkOVPpCMG+
cBJxh92iOcAVoeuKS+YXq20DvG4FmrhZQOO8lUc16dcHBik82UFtOiu8mG3F0KXbP2lYzaGM
0UNvDQpEytvGqQ7tTLumgWOysp4YcjMiAH89M+0f4qBmDyapspbTvHjJud+mYDM1QhoZ9IWj
0s9pcJrGrRk2JjwyT/DLoV8AxOkOH/kcAx+HvUag6gKspz6Ne5p0hAElEDlxFqGmnEjfmo3w
Y09hlXjvELaYknBHZyEFdZgc3hA5aFy4dQVLNWjMKcD3MT7kq+Izvo3B2l7g1SphnsDrEMkG
79vhW6eyYgjIpAB4NPh569i+A+Hq/d/MRS0POEGYfgV/mI41Q82YY79wat5M3E9IJXDbkqhM
66YVgQUcAZWaWVH9wlgAWt1s0PwNMgRn9Vh8wV1BZzHWRFef1CmprPzzfYBZIRy4wrXrMqx1
564HOijzxS9a/xA8yqYix0ikdW/z2D7pryJVx1qz5tTDHZ+yItcJlxQUV+pFDNuiSdBz1YxA
0uM+OvATR4i+YCRmR/iZ4rDlI5spyqcRV1OLId4M76Rky+rZD4PbpzhMjSNfcSZSWBDaj3E3
YADpp0zaQ+egn511czK1zuD1+0l048FjRU/n0bsuZp90ZKEv1D096a4lFPQdGeDe4FjuzALA
4Ys74qJfYx669M2k7lo9pOtJqGeWj9CfYxjIwNkMPXRCcA7dGjJdNOicJGG3gZduOVQGhqHH
Yb+jEdlDugnqnekG7Sp5HRP7joO6xlDJk7m+YOmo2bYJ2YiBbx6LB9Lpi1c8o+OmbdqeIkwg
FE+B7scLj8cuYz6OMuYhweOE+I1nPpFCx4nDfPxd2mLUzss3PqNTd3X4GWbcnuFWhB9BC87T
aGsGHBZnPFh1HFnlgpc2hr9ATyHDIBUiVdEKJ40RRakAlpV9C/81FZYBbpGdFxu+ZlvzzmT/
zaVJVVytcvg4sxytBivO4AKw/cwRgIb7pn7tm3IPoFG8+CX9O4ZvX9G9LWbfwfLWA7xFdso/
0KrolHeBfEcvjePQe0vagI54AwbOJNlDtfCGzScYippuM+rsIdqj3s2jnbwFiwMTE/0K4yfs
KprpjncAvrUUrAIUYMIdVN6AxtuKoMtswennAi4E13Tpvi2r15tCm2yXjP0vvJtdVtsdXCi/
pgvbVO5IxgsQPV2d123B2npTmMEESuyFoeeFAwnDq72kZzOCEkBxWNB0z0dfdbwq2K5F1Z4q
zPFQHRXvyraDL6RaYOy7Ddxw5qR2WWyuFxbwdAXzYrfpSgd8KCc6yhLeDQRfESVUKBUxUE5u
FIgC/Z8xDAscsTgoADYH4BUEV6k3m/oKHHpAyXip0diy2VXJ0UCuTS21tN0kGanqeT9lI29v
5wwco/msLgCEjJ/u2mJ+Kq49HrFfptNfjS/ruva+LyB0SEOPfbCqujNaC9S12tON2R5KMJ+t
vJEPNE548m6eSzaKtghn79V+yyQQ0QrvmuvAYuvpI7htku3DMaS/mOEOSu/srU7FBtjqiABD
7nEPS12f78WmFpW6EJaQ5+x4HlMUmm2gOMDENm8Aaez0vUpHsy0UB9ijg8aiz1Ze8IXtkkjY
CnOQQWgZofxudvycdsFPB03DR/OgcLRb5019pUOjXBardVJudk0xK5ZX50k3ix5lXhfdao1h
ABCMkAspXN2eeAZkfsyYBNwZIuTKCVHSYV+x7mILcKJKbdah2tNSNI0QyMhBlb8xdx+DSOmd
TaS82+V2156v0iR7Oxs+Z3ZBlVXA9ZcP2nRZ0ToV6LFROhX8JnQqSoWyBY+frREVw1d83OHk
WTxjj6myQRD3/Dsc0lzI6+jF+boGJ98j1HIT+cOqJC9g4cwJWBArm38RR2ODHfL3iJCAAghQ
vJ87hRZAt46nmzlhW9u/zXllG23D7wLVTN29ehMcUdjm+YBlUqkQGndrGw4Jj62wFsY61DtP
wD1zD6eY0VgPgU7eJCOPb+KoGPbpUm+9E521+UmjwMzzJ9cecD1LoN7kyCIWKKtKjYC9mqAM
Oe9BGfgkyow8WsoDcEC1LU+XqojN1LQyAWBwboAoR3O/NMAZLP3GUEzjkQgJhjZU07YXPUBK
OGIaTJedyaMbWigUth31pcEg9HxIrFtb7ygY5eg5jI5hphdSeXIkUCU5xEGVJTRZxECVQ4Fj
kyobBIruWLwtt+gqv5VhDtn9lvNYdqr85q2l699/ULMUv/VAX0J3H6hJtOrcD81Cn8LZvCpC
DlcwDhN6uHXjjeKOR+BBzz96czRGYT9E7RjbDVycSzxqzui8pCN5AVxwqu3MkDWOvMvG0PHZ
pMc+pMohK+mxETkblziGB6lX2/76MWTAGMUQ+StBsL+RAzfQboLf8nMiCNOx4c97zJR4hnVw
c+raJptg5ITgEgiaSq1uAMc9PVhTsE8XNzZLM6cqPgOviwoCVAr/rI+L0xFRD/wddn432B4T
ReLAzm88Zw28aMmYCmkJqh6hfCI5grQmcMCToZ+m218e//po+8vxr4+WyyX/UB0dw/fq16kM
0FlhKMANRgZ1tVhmvE68W1UzaBDDPlFbFH9yU/OXqGWBO+b8sAMHjCkX36iZKYprUv8DvS9x
FLZ0iY6UtPUFYtBY0mT/MVKr3qRdTX637gYYEQm13mFr+pbIIqenllwJhxDbLgBPXDHS6FWf
G/sj75Ei4OZD4YVv9+vynX8fVCsIHzCYs5VWCBl9w8EKGxDuqPRF61ke43NVHwRTKoEDFwcb
fLCttyv50IkqSBqR8aotOABbq8bWYSuX7tLxiAepXt1bhKO61CGcWe6Eeyi9jFO4c86QwSlD
noIH6cmlWCHe3/N05S4rHae4D+q/fbwGw4nRmf0ZtgMWLtu3UQIsSsliDsRGoAYRmcGYLwGc
G+UMP0UEi0m80ZuJExOihwwDa+4uiK6PuvnjM2fxwfbBH5vmYhNI/moh7DVzNzpcUbW7hnwG
rn0bD//jHNQNHZHUDsXc0MSgeKMwG2476GkgQ9+FOtGMB0stJr03UET0JFOuo+mnI6dYERgh
+BCloDLyG5pB0Z7ljAQwyMKernBiOooZzmF8qyaHsSsu715wiaHktTZgIeE4EOaXrq4XFMq5
6yB4dFfr1mBfx5CSuFD5OaBoyGSCNYU7CEStL3MV9KRXrvYDPzQUIS7MQSjQ8pWI4My3NIq6
bEnPiIiwCCSqGsFDlfvWQlNIOEqsI6RLgxy1aKx8izzxeDye7ZH5E5YCU1M+GWR68HAV4HyS
KQmiNIrdC7A+fWdaF7TDPUoPJUCSwoVhmHTqmMzbMnKafq49k7nnRMrFb8yjWJaqRRpzuEVa
+Sz0FNsSPRqthSjgJszzALayQlbXK054HD3I2IPcMsozJyMu1algx5Jx3VIQ2UYEka0niGw9
QUT0b+8WuCTEHqAmut85zwsV/3Cr7r5ZO69o72x46iIhKT/ZjPVLplLsd7dwPAIaZxNjK/fG
PNPlFsyaha6NbfAUWXN/lI3H2Vik7Y81Ohmc6SjeWjRQJ4ogPsWZxji3QDFPUNCv52fekvOx
L1v1Me9OWd860ZoDAz5vBul2uG4N/DrRxYIFrXXFZr3qwbw/m+i4t4rPqTOrVLy3h+DsjgoK
pICPXAsyCvQ5QBsw6mixtm0GWjOLOWcNrWE+RFgqLTnJa0uvPdD/SybsWEH1PPqRihZYUW/I
YR1aCKqA8DakRfOpf01XGzTdWEShebmlupqMUJr5jOqwvkKKMXM1UThjL7rXrCeKmH4Wv8vv
c79+90QqYjA1qttdbOWriZS2lF5q5Eoap4J6H7u95JPOmSEbdnYJokk1w8NB095QSEf5PqS6
eCPCHqoyzvoEEN5oPYR4HmwYb9KI48s+XRj1gp31icEQHQm111qoGSACl+F/SBK14jsQica6
MxtVFnEc1dgayp/lJgrUJKyuxkxUFJSQ7+sJ300oyxi65aHrHjAlPBE3RborN3nLsQ5t9das
dx1UxecLkdcM/e+qaxmtFI7WmPOoQW9Ds7kZJ2HMm8RLiq2UMlSpEqjVRsvtkgl4oAblWHuY
bCAx1UPW7rKsKPL2jEEGNXDLAuBZXvO/kJoJICrXVPMzeIR69PWa91fI3CcUCRZuWVOrsIVw
5BEyOguJNGhCxtKmtKZQjskxhRYiO0BUYb2WmppAjYDEYs3HJBwPXjgVUdHx+rGeIgJJMmgD
GowNTKD1GzpFkzFl8pPLRkZshGFKadKQOwlZQhk30RzTPLjtdWZDXTkvbJ7axIVReHePXnqu
0PupkNWk9SiSn5nFHG5p7byTO1ErH6BS3homzGGFsi2ZaIkIHFMw6ABf1pCbEdchxWGGtVRe
QEQDSAMjAllj5jUyqxJUZkuzclksSQ1XUe45azGCt94akjDyxQ9pIssKrhOAatBspOW7f3a+
nIy4xQq7v7mklKIyohs35Cfh3WjVdq8B30IOds23ctmRPziuNmkCxFUndKIuxkANuBWRHHdV
BrkHxYq0pj9iN5W7EP87scFoirbeXMopFCBAEGPz3kaop88/3yqPrEFDhLOqvPQvVC7kSBFa
aobbi318sDe5biH5neRX5B0bYR8OYsDZFNGdlJu9kSP6NUycMdyhStZycBJ1F5Lvn4V5Ne6H
klUnrRnbk0jrvm7APQmg2LCyeORoH9iIcqRsRkn9pD42Dc5yaAgTIFw7HGF+Sb647+dSly+D
l6IQaoQBGhd71zphuy7N/ZEPAoL/QYcIJVn339sP5HOz6qjL8rqGyAa3tQvqm+xnAWOVur1G
nmM54p9o/X7LZuhAhtk79Zzg3iUcj707cPdFAGKKLjgq9q/2GnMOK+rylYx0PI/pytEb0D2K
YHoudPq0DVAQioBMKgxO3ZhlNadppps8Oe58ZfdZa3qPLVhxWVT8jWV8AmsT3l9RtibOHcrO
4HYRPGi2ZgyTXFQdgw0s3d9p7DsKQmcxAjworUjth1INZRsLRSq3kt8ZIdAw61megLQB0chW
wpPVeGKcSJW3suknrrx6PfXBmGBIa3TRcBzGXMsB5l7wSik+svb5yDutUTUVPQ/XCxNp2nPX
UPHoAYXp/13YgGjqWYdMiC6+ZU/v5mdOdKMxKMxtFKIHmovB3MGgzuADCMx7EWgo5R7mHxh/
Bge4YyTulwzE86oL5wPxinkpQUycJmGihIwhAo1DuIVW0ngr0rlbMwNDO2I19GLmqbBkwidX
V6WFLP0mPLPpIhmeniRUwiaY9LYzmNszGFwRTe5MoL0kmrx3/ow10eSHTp/TyH/t2RtgYglN
WSgSnpyxRExYMPpdMn4PSMagWG11H2MTsBFoMTDMhgSZkdh5cklJ5ykYgLi2vG3qNEk31/Q6
YTTLoDjQMtJEXoO5qKslNPcW2ks2XHbJr4WOAe8eFy3qpODultEAZrzH5u2mTtH3B52CJA+s
lWi2JG9bcCFqd/yXUQTTv1FDwu/iCrJAcUkwqYQ4jKfxJiDGGN7FLD16jsIT3RXfFEydaaAI
YWk5CYfiIOEu15E4ZBlTyzyVGSGMh4eppRkLnwGXLuPoK+vzB2EK1ivbPug5g5YFQZdUZYUe
+0QI2Amf9oqTEj/lt2zX8jnfrNlVwieoO4dAmadYkEofgYTOZ6pO33Ao5WV9fjAu3m03ZVaC
wvqiBk3HrDvnbXFkXfMvyaa8LOa85ZalRSHISY+hyOnAL4Op8OMCkT1MKJx1kA23ohBibQxM
F7xlgAcyVddVRb1skxZCGrCjI970NUdWQc5uCFBakLae1oVwlTPOZeimjgoBXh2MA9ANXIHB
MYMVHtKUydZguJQuDamzzK0RCOOCHDMkS7uqmxZZyDXOiGwHD0W00Cv2EJfKQ1wrVSFWxsXc
wAdijRrdQhRbhkeoElgHn2pgKwUFMkD/+qw7hTOUGFZe5tVnIrUbjGkBI+RPWM6ZRFNfwyDF
uOEp8mRcyFcJeBp23tQJkMp8iQYFoDY880FITQrawLlFew1HKHHRSIZlPYNgd7wlTTBvi2Ir
GBWGaZB8iCa+VaEjIAsUcVmOIsGMyhxwJRHEkZHuOBkULUTIuAYDx3IieAYQCPvDMTLyVhxf
AXGyN+MQSk2jNuchuk08xIsIkl8ibGjRERZlcbo1WCsUuWrgBgOthBbj0EccMiTb6N/GorVl
ubi4YiLgRKR4X8NYifOzXXUkEavCZWDG8ZOj58dIF7SXibi7Botq97g3K7bFsJeGc5s0ok+i
IeLeLJBl+GvqJ30qp7AjBUWdFDICSmC6tbl/szfkqDFwQ1O353hioFrXEx5CMPilBoC5EwcU
KaNa/uvoYWEQnJqYfURUCyVuAzeT2DaucjbdwT7eu60mr5Oykvuqsau255g7MxXL/LzegLE4
2ZxRJE+W18BDkQ/ASoCF28pg1GIpIv/mRbFQDgwfTbpowkW+sRwT1V8Gwaog/Mam/E3cA9oz
IAHUDsVGE5EWnEQF0awE0AzGX1AcK3TXHjszQyzYr7G6KOOPLhaXQIwARZ9eXMDLUJiCYBIN
usOFVXTIc+R1wfKDPjUWv+tzrUGOMDZAtFqxBqBLDkEbDlptuDaDdwDCxrex3XpNW7eUINBI
BvGX6sq5OsYZU/FObkNxwwcLRWlx8gqhtpKym7b7VMAcAuM9BPucA3tNGOG9Yg+jRTBKSdw1
b1Q8VhEkIO4qGHHtc67Gjnfm67kDS/uA7yl5qDNf35XXffpynPkoH6ztMERni9n2eNEdz/U5
NQVxZ0HyAH91MgfhF2Utusy6YOQshOIQPwyJMpVxcAY5dolyPMqIXPjPW/Dt0sH88BA+sSUp
ErjgEGwvN8qPYO5nKygpYn6iKNfBQowul4GkgtFcYX1tpfu05R76Lbezgcxj0GtwUadhtppG
17Ltu61CZtoBV8b0Dg6DSSTwJvkIQjj0IdEsoPNzoibfQvdXau2jF8QzlEQMCCwaSZjvPi5v
tpxWc5nsdRQvbrJIDtcm698PpVwecMuGjdGXzHOt7VPXRm8iPvJwhtfZYWJ51CKXVMLF0/FI
6Q0pFI0opAgpNY8tYfSk1uHlTHHFcfClffClg/Alw/AlEfg+Qr67CU4TfTEVbqNMsxHt3h6K
wIgeUKVD6fXEKzGWn+giPD36dd+5Wt9bcZNU9APwBi9gSLid+612uCijmH+xVWip/sqb++OL
vz3684/f/QSKrSlNyxRccBNnnZVr1LfoNhwvC9RPQ2vKFbduuyPF2roEYqdSR5Xd0LYpjoSo
BqoP6V4ra5mVjEYnox0YaUqEG6OX82O4vsCkaMB3MncIJ+gIuVWUQ16OLu2oC35mIfein+ue
5/jdiKrkfeM6rpFoO98jHMA/NK0Z7pu6Ey8ywD+As1g1AsEB3vvpONb1Di5MC57geGcOx8QQ
SfXMsGy+X7IoZMRli8T40vxBXQEzOvBivhjvDPe5CJK86GBG7YUJYqQbub3GSwbjzfzuEmQG
XHFy4XkzYLvJJWvfUy0A3Yb5Nb7pZdXYsKH2BFI3dXOBU7+8dKjqznsW8OiggLq1Mz+HWCw6
YDAYWCDin3b7gkUzPxskJKWxKJQgJ4gmSkKDFBSR7Iaq9aZ2F8LLfl0/MDQyILOoywyhQ1oi
tMMyv6H6LtNbR2um5B0gK8qvsp4NE5/6Cy6/QCp4/JTOR7mqaRMKX+3ZW2XEIluMtJrBxisk
S9butsCi8g3kwFzDPZpabNjg5U5JmHmnR/X6iD8+4uftDYhTNVp2DLNYXvN+bKOnSIFCnac1
xJoSJCM0s4KS0MgnK/EO3oJ3sLBLSftfCn0I28o1Ba6SrxJZVeKCpQ4Y22spA0OsQXOyDbMo
L0kc1wtsLlGFUfuEIwDvN94O9phKbLtd0uOBPtVc9XUqWtLmK/ukhTQkCEgEt7C0i/hecdte
wqZo/1ZtbFaK4j20TT0TIwytXbFUre6By9sQ0BMpxRm90QujQ3hADA1/2Qmoo4OUTQleGKlF
WVBduIJ1Ihjp7cdEmzemuTEofR/mHC0fjrfv9RH69l6U7QUEGxeBXIOpWn2sh7vtrazmJzDK
GLx4hQ7TFXBqN4TBshdamRd8HyDdOtYU3IgU5qO0gC71OHPsWsz2btabd69R6dzgmNXo4PXd
dEH7hjS+Rcp9P9VMwSxn2QEtI8Wh5kCD9fjcEnQzmoecuWVUiqDUYFNnxnSRTs1iQ34n5kRQ
BZvrBbokeHtS31jSgrakmUKSZQVrx3rC94tMIxtJb9NISBRKvMzGqffErMWnrL+XmXSkGsjS
nqiPQEn6s9mZetxjO00WVlPCfhoum9pdSQeP0MYlOYuZrFzozszuZDFvGQQkabPe4PnLgHOw
7FjBmIWRK2EPGZWDFXrAd1aPu+xtygqtLU1cbSgvd88iCpROR5U+bFlMmLyup1gpRAfAZtEd
C24qqSvJH2Ul2Ob5fdaFW/O/V8lHWyWeTwXt2uCXvG3qDNzx4MRH3gnegnJTRLjKmAR8HUj5
noIzhLwWFSDd+3R0vC/0JK2K2H6frwbRj8r1kdpP4jp6hQ7jKJIPKPb1rOoTiIBd4YeEDGE1
Tri8SfCI2AFkUTb3Pjjp7ads4m/QwOQkTlf3iPjre8Z7fYWo2MRcITDgtFZb4iSIScYLqNAS
+Gfel/dNPYUUNG6p/9WJGtOGATKEvzqZ5NXRlayfTuiJYPMGtk1GoOZPDGJujcIAHfql2RHh
PQo5T6hKuN86qQCCQMgI/tiPoa1zONXyPGlX5l248JAMnZ1QoBC82hutKchFuxRe9eBEz1nz
61qE2U4LGXJgYuVu4PwrS5pcz94v99tfj57Db6Q1GacAGwxkc7CHD95KYvSuu1LgsUkQgTC7
IT4RjyIZC7k4zt1BthQazOLQ5MGGeSOAjLnr7QhRM9kazpwQWkawgzI/Pnpe5ifkiZufwJcn
pG3CF08O4QnpAE9I+3iCxxT4uxUFHQlOrmx8HIDobgPU+Iz1EoLUQq+8EB6ygXvPghV7wlrj
gljvNCtrBUM4hV9Hz+E37jDiSyCxiYDIf2pRlYRxznoKAp2oggMNqumJN2WtM9LER3tz3Q1l
F058Xpmgm65koSMvfniOVJz7KbqjeLjlEguP1YsuHSQH6S252vpJY0ayH1V9QQOfDwUQ94jO
2X2EckFvP1m9LYEJ180VZ9Z6b/WApmBWmD0j2QhnZLzGoenZ5Ojtkp3XV+AOh/dF7IaQ5cvr
Paoa313gvsuRuCaCXxOxd/ANBxNl2u3Myg71MXgBjQJfcYa9uaYmsJu5Y769N2abxME7hPPP
f7JQVX3PcM+K5pVgSVpY3a7fQysPTR6oTViOv7Lp3WyfQHsPoNgKsa2yKttzjk5LM0ZHOOkB
yVnfoLtvj2PwRdHw568nQRcyU414WSYGxtt9farG2eFGVQ45IEqmsxoVAG9fb0b39GIHc+j3
AjJLy8k9xEeL7eWktYdLM92U8T2LbYMte/CADbkwH2KCTi0LdDx9nmGJTuOG6FBU4HC0mL6c
dLc2aQt+54YWRn+Nfm8VvD+Jq4yivJiXn8zwOEHwByjbv4fPufyz4NIRd9YdQLwuYJTQyL1I
KwH3HNR5+APkH0MJRfaIXWeusz3A1+lRrAYikL8PsJQ7yJtyeP4UTVeh9nT0OzunACzmvsBj
Nl0H2ej7CHMNuEGHPUTj7tDuz7B7dOACxsGyZ0+QvAiEfkzTm9E+U5hIBrBEy5gy6oYCZG5t
zZ3m7w8oyKy+7tVzZbM14zoCcZQ41db5yc2D07t/9KXHUaNqrWGF/L6Yl21KDE0o2sxHwmCG
44UhGMgzr8mKywCO57Jb2HbVnRsurg73p+YQW/YLt6aFkWhyjReze2NBCeUlunGDt2LQwhU4
v2zKrFP4FkHQYiFYfemNvDfGFk97i4v5khEV++PA6nJqFCHlOT9xqAr88yiq9xvWq2Biwprg
H9Auwl90AjTnyHVdUfHmrFKpVSqVpSambiWpsgVIyimYuFs/+XVi2peh54pSOoVKqTvlvFig
UOoWSqUMSsv/XhA/gTiQKjBmXJSUlN5/3U0gDvYgc357EnGmVm7P946Cl58eQbnMz9h5LQOn
CgW80uuCsaDKwEBgLCs1nkTNt/nCQEc0vLcsO98LA+neGEjuDgNJCAPpnWPAAlTeX+yu56z/
uqJ7ffDljK/y5WaXLM/r+u1KMjpcSorb2cvJUTtxFO2qJN0gLkR9UoLI+lZCYHbZLvGDiTKL
cAKXEofuW0ZGAY5EtxgEhD2/uzGoVNEvZ1yCa/EOD+hPxOfUFKkgXO9mU7xONhoAhGqHcUGg
6wUqqDhxIUCcExvxWKFJDdHEPEpQv3MjGHEPC3Zpz9HHOXXTgbp3QfyipfCVtKoWiqdVtqlT
CCFykA6l93KaisMJBnzWbous5JNU1dUR6HmQggB4YBcyyr2MxYJetaIJw+0VWjtlhnMrnVFL
dsreAcFdw9xV0sPgO7PMG17mNyjzzirzvdFYTZduOH7WEKC/7DBfYcs25Vv8BlGNOmHpkiPg
IlJZZYUaqLRMa1oUV3nAM3XJD6ZZse1Q5QJRGSAe16a4OGXfswID6WNoGxE2i+YFDG7k7vtm
qdEp4/FDpP0Mgn5vtwVFQJLjUuGJmuKyFCFjhMsdRvEqz9AImWQUrr8p27fglIxB/tEE8UZH
chEzwVcFFMVwWmRKhYYBE4Wt42Pff7dEZ1kMboT4+Q7bJGyTK7Thd83ps1GI0i7XXCSoBEWU
rM6y3Rb0u7iVvJuLWF4lLPZks7kWswPewjRDvPG2FFwKQf7+DMEXBk2KoyNwlGSgpgGbGG8P
kQ3xMvivBq3iCA2ayJNU2pHXCW105dKgoAQzJvDiFdzJvio+47Ol7KPrZLcBr+6iAgKHKO5w
X3xJEW0ZyNUQZL0zIoFIP9GEEX+7SnDqrJQAGC9NLJ8FxXba4hxIWoSI8dcVbwrcEGTmcQId
UM6xUrQtTDRiEfys2fS3o+fvpjCaRMQkKi8oTheTW/w7Yb8m4PUNdn1jbWoiRpgAFkj5tBwu
ChE3SwayTwSG0iJLwER5BQU2ZUHEK1aFNke/5usDQVbcXzAyjOJmK0mlR6l08hjSmDJ563Vh
Vp33lNYytqNgRR0a3axK6V7Ngdd22V73di35XlzCUDol815YMhTRyL0wJvAixiRbt/fOe1am
Vw2BMw/xq0Ia/DQEdNBTI9aNPzc2wCRn2CBbRe1ZlYDbQhFIv4DI+zmE5p4b3Nt46llzQepA
/N+3gWNuqUSUUugO2HvcnZ5vLhDgbHVRouuMMABF9/nY8fmwQ3fknlG6wu0iH6qy1zk8fhwX
flAytiTlPUnyN7u2o7B+yamUEY7Qr8XgZKl6JV9ytiV2V7Ax0qWcZ9LXV4TvaN+WW7MeHsCk
kCwHMTHismPTtuB6SbCtk0sIawl3YRbGBk8I9JoI10xtiAQ8s0rCP1fXb/g24wxOdDSWXWk1
QSTSgFGg7wZiNy6ifyLWOGlJFGszj466cGoVTkOFDQG9VdL9oq+buWW0smun8uZRtN8I43sx
M3vEw47x3bPqWABRabOPXusOntiBOraUswtj9QkaID+BGfGuuZlQwORKnmLAgJS/7qLXdQ3F
hDvc5NABVMWuA48EOYK19qi51TjGlI+CTOU7I8HDMEZSjwD2wwjn+9vkteVrTdN5EDLSPZGR
jkDGxPVQJlbTG0O589ZPtJnegPJddBWHp2ToOr/B08NKZ8mYXXB9PfnCVedbhKhY0tCea7dv
qBeMTRQ3SBeioD1VquV6V2bMBiddqGlzy/nBAXLjLKzN6ju+89CGJW4DhFzY74RA7o5IQoY2
j1hug5Tvh5DSb9TrcQZTShmKQWyFJqNbuHREgzvTJd4P217rtCn7zIZFvba279aTcGO7tdZX
LG9Iy9GAHkAJ/RyNl2VxJSOB6yAudHDYNZhvEXWm4nxZY0I0I4xzeoRhro2QEXAIveLztNtS
kJamwPxrrYoU/N0RzR35SgnFXfjenj6bmEj1L+3Z7xcuCv1snSL/pL60FxbgIfzWZFBsz9tQ
rsVIyuzhG/pjQ3n1HYD1e1eYPMhCzycInKNnMiNRjtczeSejr3rmbefPAk7SXUSM2DtWhDuF
yUqHnl3scV47pFYiT3n7nwujNRxi2+sYKBMjiGDo2dHzBNWR+DGlyOQiFjm5KxJ3YMnRcwIL
igjVpXyE+dFzodrDAN+XnJXuuACqtKyGV+UsWUikgN1eJkbQ79OFRAHkaJ3oBMy3C4gxPjIC
nJNR/VZTsPqG0/BukzQs20Bgb85AL5LNEShSC8NtuNUdBCwKTi99RVN53DIBSoyQ9zIGhRmj
IxaeY2maCFCNCN6m6TVuEhiq3w/KLvvi2KlVZ9DxZZmJveGSA5osdTAH1xHT0m2pL7RphS9+
GZb1xNEzxq59BWJO6CqhIO52N64GzjDtt32NpBFYFywJNGIkI0HvbdqcQb8uNuKK78lJw58m
Gwv7kPFNezXIRQcGmKuyxXNMGse/raOzlbx9MxB1ju2bg6jCd8ws2LA6vhPj58FTS/rNuDOB
IUwWyqK2EOkkRNwYuS7KCyH9cMGH89Ck4axR52Cx0hjwlpZOfJNw1CArUkTixP45PGpQOKaL
Q6iBXuehyuNDupjhVUbGuIiGQwlEzti/3eHQGZoYIKGLvG8o6IZdQQoS3CDplh9YY8qGpRBY
eFO3xHMFQ1eZKriUjFsDGTeVdZLymWDYeUoOhKOUOzBmAMmyeld1Uo/Jt5WFtBGditJ0dQNT
pxD/N6nM3fSS3buVI2cGUejeG7CP1JY85zQppkWEEh5yZkaNqN2AL8dKxahTzpVnzfNbOK6v
9gfs82MNyMUPtWb1xqAPE7NwtlIBLRP2EAylYAF8yJxMS0aCpbaGuW7wXhFimGZQbPEmwyHa
kxeSpcmyzc6Li4Lv4hMm6nMsofFNfEkPCcBiSsBSYU2NWs9Teq5PlmTGpQBUUv/OZjQMW6/f
zi0HwIDiBSMbROwyNi1qS0mf+ibWlilOLbQ83tOWWlxi1HgL6BR3AxqxPLssyIRtBTyhcGTn
RdlMdJTTvIBL2zUwImG1BYnZEt0oVEDZOTfRyTJnhYSQk+VJxVW2SihIjRqn/koZgSLVUlku
taulZrWBcDFAUwukIGFO9I7dycKGkYYilp1XOl3YoPWX1vPqjHygE1UtjVSLxiqjociAUgSq
Dm/hB7iwZseoO48WT83iqRUUYzAsRh8t2IDTYxk1a7DVGKmYMCrCUa2GwmAY8DVFb0mjT1US
rENNQUYB8dC3+wqdA14RnGlDulIyKDP5JBI9VpbcFOtuZNGmfH0+tixJMFXEEhySA9Wl3wfE
i/jmzWcHDLWLQGdlbo51oASMcaAIji1SBi4FECjuOAhQzp8vS9jcBORNPLimHGRQlnCGbVxl
UYg0rlHc8ysEnKhF0nq6jE483vGbZKeWK6cTlMLuXjl36jwDOicWQeHHow466Cp35RI5QsRQ
+nJGCF3itZh6JQcMUp1BuCZhuoSHcy+mVwHpO7sSariEY6JEerWiLV3YTjmwRctnbA6iMwQW
dy/MexgDCMAHFUDY50Z33+D1+h6JhpGXk9An+DYo0w7B9FciiQ1hiegqiiuTnEd1rAwtXBRR
nsCTvQDgf9XolSORu+Z6lM8G+lU7sSQSrownOPtekb/2CvwVcxDSUZvCP/u1l95xe1IYijc7
AjkjNNERxh4tv9+GNnTF29HgqUFb6sbRUaYc1dXYQFMj8k64k6E1Mi7ARjqK8RHOvZBTrnek
G10m6h7pLkf5Hdmd/CIVbVZUKWlPANjfkpM4HGFPVRH/g0kXnx9xvvRLcvKr/faX5PjZs/T4
1546qVHHSHJBVgwBE0XLoJgYyOgSEbCJb1MnS8PcMTGCcbyGrKUUejohUwgpBEsROuyzlhJp
gDL9ZEkvLoqkanUjhlcmupKjJxkNaSEDe7glHmImxIcTM74Ib39iggbKYSMyNjlHK2ik+ljn
oiH353ERvcq5q5GdROPjufRskIsVc2wIYhUcOw6nRYnWqp8MhvpTa9ylYAtInI84jGL/2xuT
7grvw6fLJly4lWyroVbaCXRtLwrhmylcGhIdIg7GovCM1wYA8XvFinpjhrKyhG4foSo7Vzoi
EBRdp6jqTnhY1LumZTVEySF5XOldCHI3mg/JObj7ba91ZLWI0D4oYQXSQd4PZYO041+EEaOt
nC4iXOfFwQg8TpO2OE0YVJHoYO5lACEx95QgD7mzMDthQ8SH3LZUYlVpBoa00QbvW07iroca
+UfP6YpZNRjVLhZnK4J6b9YsbHq+R8o9hJSk2J4nefpdL/on3TyXsB6ybusFK0rA/nJJWlwr
EsmI7KPw9M18OJnOK3V3BAwV4CoN6ckrPu14DfKKAsNrCiGjAtkkNbHUVeE3LUgGyIef9V6B
yrLJ1P0V3hDlHUfyQuNJWjBxbF2IpOVYJZQBqHHpUzaATYtjJEL9GcTnW078RoB7EI4tSDmL
u6TDjRi1ApSIVJ6skXfKnMBzv3lEkU4anCZwYwp80DlNTdwgG/K07s/rHG5txl6/mTthbtzT
f6C9cX6HfABAeXCLSEeyxAyYnyWfhcvzF+ZBoKyyzS5HNIqglRCykjf664KVhUItxwb7d1eW
8qZ7s+FbFrISnOy2BqnnNaSjF/RIKnG5aLV7Rcx70HTxBVN6aKZH6HD6doVIIX8O2YiSkpP0
nMQ+DMfqc9bsJbU3e5Ja+bqqG4PaIkSW3oLIaHsSF2MDjYOQn+d4lzBGT/I2por+CRIRUL7g
P+GGaWw5m3EGCiMQYIv9llNcO1/GKNVwzx8k0w9CpEASb/pI72bYIz+wHQeyZb8Z3q6AUpK0
rZtUeGBkEEKRwlaPuJyxh5B3h4KeoWOLYmVcDvHxlzhc2jDjobIBKUqcRNg4YWtyC841Di9v
DqIWj8/vqm3RdLsmLfJBDv/7QdEBjJ2wsziALMcsP4w0513H8zAvIlHGl5yyANz12ovwr1Cu
xzJX2mNPjrKsgKYqYTIyyq060IMDnrQk7FX5DVXWtofJUBDOkVaJfiNgHCopMqC2LBtbi6ZF
4WGfaiYG+uppI6KwEp6FaFLZLej0L6wXYwS8sdTo2zT807Z/V9U8SohDTcclDiPtrdGKCp5t
JMyli6ogvCQoJ9CdFCHFyLDCa7+tlFFMWqkweVOny8Bx4h7ezhQmyCAn9jF2MNcyUDgYdm9i
2OsPSeoy1qpjGTj6nPNHW0L2MIIE/fHH546RjPiQrDETW2dr52wRL437DfZtB1nAsyql7qNP
l28mdr0kMuYeFtSDiN5aw9jpZeWW/1nMY2Z8g7JsKGFMzMtmfOtpT+u9Vj5nv6JIf2GrLgXd
mtztPO2DwhFXceRi92yXfQNLF/2hpOy1N+620n7EltxyYMo9UqR1pVBHbVdsHU9BlgRdCYUp
DzMNGsHYp8l0oQLhRcsI2KfavjJQI50uVIy1aBndamq3Gks3lpjOpHEvOrNKavqy2i5y8dFi
qanbRXwcsrzd/gvpbkcec/oVnhyCofEt7AZLpJZNSnEcbz8Lv/CC6WMpEUS/N4q+io0PQgOb
lNUlPw5aUf0DUsNJUB64SKpyXZBxzvSfSLbDQsFJInbwEz8J4lAStxNzD+MtjdpBT7yd0G5H
Lk9EK2HFlhfUDWqzR52B88SzmnplVSZOq7CRtTO4s5wk9mhD2wY8dvOTTWw5Wci/kN22rNg0
Ze02yYrpiGu0KRgvvTF70VlSDGPvl1O+E2kgmn+4x8TtsSecfmoGOE48GIJR9QPZAdz4r+k8
GjE8FmBqS8GxtnZ8KSd07UnE9m8OaEGN2aen3uirAejdSKz9wVjdBpL5CKsZXNXgrGULNzQg
3TYEEMzxrs000eRl/vQgw7LYa2wkc4FT7yxrcp9IKCEdNT/YwouZiCikg+N7wUD0wgq74SU0
7ftGZndaESLe7DYx3h2s0HGSQtPPw4oAjjNgcxDQVITjAwUA6APwDN3i1xIu+8GV1SKiEkAM
hDRXQVBGhPLZg0zDdI4/H5jUMQEZmgJNVjqS1ocXfu9swezcxwxFYtrsOcIocDAntwlJc4fQ
3+Wi3yuf5IntWRKGTqjaMTLNSczlRnVfV3wzlVHwfTUqJHMMWAExyxeGdnDfBvOduVOuFcgq
+pLKXBlYdwQE6OawP0kO4S4E3TDpnzKuC9Wy6is8XWPZp5t9DZtfiNbn80ElmBF0Rcg5F6UM
44qejJgYTF1VFVdE8aopRQiFUH60hjqhb+TtkS9qiZ4dByU0PRlKX+hSXDCpKRwVpZ8a4Agi
Cxcy3CnYcumqdUIe62ITnoF7m4zSOp8MO0U4yTtdSh8EAkPGkmo32eAtxyO6AWzZJdFfSxOF
zI0YSLQpJLnIgnTBGyS0cP7VyWHbdWgFH5oYMDwPRuT58OnxJJFnkXCmbzYB7NNdDrja0fGz
blp3XX2x2m1FLo1eiDd1lmzsG1d8t9zWTcIBbep6oHog2wt+669lO6zLijm4d/sO7fG0SbkS
/HRWGJ0TKXdyIcl1dmjOI2WqRAaxV7ojly1QvAY/txHwBcrXEzyFwHRm5+UmF8CFU/2cBc8t
bjxcO8laT2w3HYgeu16I+WU6Ocioo4ubZs1e3bZPIB/ZrmkxuDmGF8BAE+0uPRKBF5w++xPA
KUTZffctGzFQZx3IgefqFkJY8hHFRCMieHAQtcbaA5aAte1N0CgBDGh28RYL2ZDxOn3HiUdM
1BKEvynegSPJKkva7lu6tdvB7ffnNG4+SUt64MBifPwrmlpqDI5j+VqgpECCg52aVWTRCE1V
n1Dek15Dzj6SOMXhnfHOA9Kcmmp4v/BgQ55gJ5Rwug4mxlBCpV6Ig0DwsnvBEDQDemwfA30A
BXf1dpXXV9UYvn9bxn8g5/9v1v/frD/K+u+Ij35SLulw7ABP/72wxZB7qsnY0f1yFHfXSqm3
lBmIL5OZN2F7sGPfA/fDM+ghdEDKog+Fjd59YRQybj6tCOVvQaNkqKiTC7nRWBYQENOws+uW
OFJvpBUVjaEYc2Ab3Atpb2qKvW1YymLl7nwi8BbedxN3CXO8jxs1bUHoGM8bJHib1tHg6a6G
q9iZHFda1sXg647F54KTh516k9xMekRrQCalAtlL2GC9Y5oM0OKhnbIBtJD5FW/NZtK8v1uv
LRr2aVNopg27a83nY9vnbzOS2LdNTxuq1wfgNMf7EwkoG4+mh4IYoc8JRbpdGtHRuGRCA3FS
xNvV0SmAA8ooLSSBwqtmZlNKvTEhYt1CZEN5E8DUjwRN0/zh4MxaVupM4AKlu0F7Ey+g75FT
9BT+xL06nrUwINrnHAuJcpWNWk54ZU/bg7es4E7QriJlZcf3lxYVcfb8tGVHV6Ur3g7e857K
KGztFLWeqOQTdzwgzikHciNqyJCOQpsnDhuy/jDqV5wEwsiPlOcEEC4fnCGOGPsS6Cfkxy4s
n5I7h4Jvwe9WRAbHsFmSA8wI61TAiKcQaCS4ALxJMFZuOJlLb41Y0IXehQg3rXEYdAg0IhO+
mL3BNYkvbWsvB6NXefywHKvddSoKZTsQwWHqYZ8TvDHNuThTSz70ttBDvdl74qiZ4AyJHgbj
XyCHN86T3iV/jkOTPBfezi1bUACMmGdeh+Z5v8pvh4kEWraJ5MXsbYx+6DpyaK5AVvafv7Us
LcPE55JVqKfFbRwHwiCa9OTuPHhgdcTyoU0AJim8Bwd8zrKQ3GM1S/IKf6S2gLjAgsKJZqNR
uUGCKDwpe/wXs3YhU73ybfOFvNSALly52TNFsT1PZP7ilpGBkK48ou2+U7EE6Mr0NYUnb+Sd
Xr4Ht5TK8apoMPCtSHJZN+Vr8C5ViKG4qDoEqgkHBc+swPJpGEWN2C4UiEW0JLvA1UmNbTdJ
VsDNiBdezAUz3kKrDgBnwbLCDBsoy/v4adfAzY+LGk81G3mt0UjYCNZNZVPcM95PzB6LrC4d
ivbTe0Pd4BNpz6YWtniatxsRkoFd0VyZYhFox789mX+676adHrBnjzSbe2FSLNac+7Ok3kos
xHmoZ7SdW6HSOO39Y1eCtzUkPr0Ar8kMF1NeiChDfMWAr4SI1sA29Wt2lWzeFs1EYdhjhCvh
XzEby+F8La0sTj4mlYwXE+N5Bwu6lnBrAiA7Fo6qH0zuDQuxAVHCxsSAWGFBL9oDjYQ7rENI
oOHnqBIUB5yAIxvhgTtb364G0oYnOAeZqlQpP3jAohUgxLss31NcMnizuOemsk74AIlmOHZa
yPbLT4xNvX3EecQjET4DtMf1FlY87H+m/eTgc4a9+4QsK+HThrNreQHTbeUvnuZtUdtUwu65
FWmxLxDQXQMc2ZJc2FACDe1O4sazo6BNql8Ce9CvLHTv3tfGBoKt4uRD7IeEXIQwaA2EK7lK
rgMSOVNhuGX8dVt2JPFKx57G2hw6VY1UwnCb9FEtlWsoXIEnJi4c9Y211xetnVmCDDRiQfLB
Z+ezKf6Zzs8ipUB5OJvC73iZrp5Nuzr+Xul9pvJTvCyRpihufBmsASaDqf4cLy9S51APxpfB
GtiD/jwVV2HscKNssk34vhdSc6ZJW2arsgYlYtPitU/6MErRaSh9rs6Bl8yo8pJP89blSeYY
OogceGJfAdAVgUhOT+W8mCbB98wykcoqNoORz7tm1h1bb0x9n+JrUCgWECsMmUECdwucSWi3
h4/TwwcBL5dO8odBZ5D3HYIn3hRQhfrp6mjVE3dk5vqzhjZGKoT2DkLB3U7QnWDAm9s4AsaM
fxKwht4Mq4ilLoMzrgYuQfczrgZzO6JpBT/dhY1GZBoPGF72U+Y1A/IQ6fWaAelHucaoQXPu
Xv2WMLqsRtx1ud214OzT0DHLY1ULBrKScUwT6FoSjqnFmbJtH6C5bGzJdGisJL7e9VB5q7cb
qX3je3jMtrQfG7RzJrizURuca8Fk3iBj6JFqXb3Qgfs/NqZ6qcM+C901npA6PjKaxi2dQVWP
U+buUCNFor2XjfJzJPHSdInfQ6wM2xBBgWad3WUogpgkK9qHFkghHhZKach4wOiRTynYg/T2
0RYef082NlXL5uHvxnBecV+fF+/Q0yley9jDjTqmC9KQzULv0wjggdYzeSsSoD3QvCGbAOCt
WxUhS7q5/YcJa8S2H1T4RHU5UVlDduCJLXMz+fFt1A2TcZqGw9c4Enwv5+NkZVYAajV4n0oM
XhXNbD5c3WKcOie4W3skh5nAHabQzORJl2j/5KTHsjsg+YETmpHHpyQ+wH8XyQUr2xZ6EnBr
5JfVdtdJBS+aHtp2waZ+81OnYle/LaryN0zA+FYxAI9pwp8ZL+HazzKhS+7hhMQHUcEaUNKR
LQjSbW/q+m1yDjncnj1jP/7lJ1EnvB5pGozVOIz+IHO/PYp1s3eBWm/7sjDYg6gY45pcNaXt
iDNW9YwYRVxG2RRir7awV7etM0rBHLfNjL8zuJs5yEYNkXcH6kbeNxTHzUzFLjHGE6C1u/Dw
dMcc8OC81ZiDHB3yJg6O/Q/lOi/W7Pu/v/jzH1d/f/ni1erVjz+/+pk/p3C5bLqrym7VFZAa
6Px8arzgsJfdNT60VHFuoBtfs8cpo3vXv8X27GuITKGa9anQUOTijeNfKI22djS73/4q/KY5
ELrc/Raf2XUhpE28ppPxqN2W1eCCsIdw7LG9475RkTbECySkrmxCSCTFFG0+BrXh5bE+4XPC
wb36MbgPfsu+DOzCEk6lx7RgVU8D8B4jwFoH8/1f/vLzq9UP//rjD/8TYQEeYxUIAHwCAIeb
4B3Y/B7a44UDwkuoqrDyizr0zZA2j3FDOTkzLkp4+a1U+DqKugULJEjpSQqCSpjYg+UzKC9Y
o+FQApHIIKMKF1myCzKLqhCF/JMOJoT0XtFVAQ9EHYQwtNHNCFgIh5AGqYgKZbKQSB5jmVo4
dV5cG2H+VLRFilI247AuqJD9B/vzg0ra416oWGcq/J4fhgtiiAn4/ZfZVMAdCsh1AbG4LsIv
M3iZiftGJj2lFz4lJlmAEC0iDFVKQ7GW7Lhb8SkdJs92Jq+2ea+QOi2zDPvP6bqu/3PKWyfS
neo7YDV/mSYNvlyICx9OXbCyFfHaNQ4S34tZHA/To2TZvet6IXuUqiIR+KBQNtTOb49yVWQI
TDx9CAChD69tDN7yS/ZV8kXy1fHTr9L0i+TrL744efx1cZx8VTx9fPL1kydfPU2/yU6Kpydf
/mpBxeH5ZV0cf1Nkj7Mvv8zS7OuT4oviy+Psy2/y7PhJsv7y+MvkZP0k+ebpya/xQUdhs8aN
KIbpGzv2OAH0d7TlxO6W0J8MhH5iXBq35XyEDtLi8AjDqKIx7gOpPcYvnnxZfHP8Vfbk8clX
T7Knx998sX76RfF19kX+ZVJkX39TJF9nj0++SVCkEcKgZVAlsdPwLcItjlhI11xbckJIOrCV
NwGj33TXNo82Zfrot/oiLYup5SAdMGJi+bSsHmUJPxOFdlSpfuEn9aLKvi3z52D7zr55kh4/
Lb5++uSLp8fpcfZVkTxe59+kX3yV5U/XT06KL5+erLPpfFT/eEULocjr1x8cirDRLggICyAK
34xsTyOWRXvKzsuMnz3HzRTMLP+fLdt6PJ7GUm0YT7ZpT0IRHRK+s4ZiRM0eRkIseFpoXGN5
FYdnMb7VsdzBxJZ3SmlNNSWyJH4yWNcYKRYusyXlBmLvPGDFuyqQitkoy0TZU301lddZQoY+
vw+UfZtd1ZV84oqmqZtoF6IUw1KBxmexJLRsIjJzGOFs9uRieGjCg0hinA96iV6ys+BE3h1z
OO7lDhwO3FemUVV2oAaJZdNgL+G19eiirtt4J4EK7T92ZdMUm6mRRcs/0appY13CpY1uKs+u
CrCTA3aVkyGUSQTsgTOB5VAvEZRpDIzHmkDzKJQ1U/vcPFGhDoKXCywaH9UBqRmMsp4TsLro
GXQEVldaAz69yYBTb+BAH7kOfNZXVMZptcr+1+SAdbVCreG6AD3D3bLB/Zfg8UdZgsefZgnW
1ZFEdQEJy74Lsa3fwdYxyAfhaHbbnWOQDW6vD943LEIdnofvFUe8K17o9pDBxFW/c87Yct49
wzuC34zijn75/2IcUvhaq6RU+Qp82s+ir0EvHFyF/OfJN0+Oiy+L9OsvCr7yvnycPuVHl+Lp
0+Kr5PiL/Ok3+dePT5B2Y42fRBpP+c+tG38SaTzjP6Mbn0AUFrAWQZIL9p5Baq4F/E7ZDTii
ZOerDkCAuyuQe3UVWGaoNnJ1244VJHWtImJxeY+hdbSQ1fWG5fVKFFTmNKFaxxvRZEmLwgTW
mkbg7aFwNas6tuHNzdkpsRrdw2ydbNpCcC9sfkY2pNP7+ZRSUkHQIqouDG5wJ0BxLaTZ73/8
04uXL1+8/JPBjzCiAtyHVBSMzev8D/+nbxBzdfEAO/jpxcsXP//rnh1Y9mwuepfdTMwtzbHu
Azx/8RGwCCCGubLl4JUnISqIbyn1gJc3foDLGxKXc2jout6pHNZmwFeR3N28lAo5BSCz75W6
w2qgI8fXfHZqVYZiDnU7vCrCBwSZvvjc1iyBvKKvN4V5d5UPG66couykAXxvzD3cC2l2xRmO
BcupHd3C0yJo3rFy7MDKxIWZH2usGiifh4QFcnGCSoKjYXApBd5cbXG0aEY0oQdi6D/GjqVH
UkEdJu877y2E8ZTy2PiDGhkJv2xetjEOH3s3qfBjirsj8RMZV1hwxgrjRjHUgAszCGF3AnLu
+9vtBXGsvgLYFE1tiCcjTajQ6HF8fCeRAYZlYmzM0iBSG+MGfUCbLiL8mZt8DDT483RrLOzR
pEbCrnJ3tb/9nTbNno0wtLnpg655l7E3r9Vgiip5FcSUVzf16zIT0qpChe7QSZGsN1v05OHP
FhTbvOFSTXeOuxmElQdHof80Ne/UsSG+r17969/+8u+znhgSEC4L30ZPdu4ANOJgC/RM4tjY
VLV6NogN3orMNMALWUnFITSFHqRoKUxXDjJ/AE8qkW8a6S2URcnTaaDqZwWONbLaSguU3tlo
ALmyiUPchhUgB9R1QO91W47Mbe/8Wq1PPVSpeRo761btyJwTaZsMAOL2nRtcAHnC2b4MgSWv
k7LCK8NXSZOHGMTHWE38/HmGV4n/XYipOQiilDUQMhpgaogpyK6aiqcosbeMS678XLIpEowE
SikQKCBbcUF0dCZzJLC0yJJdy0vsGi5Q84HDWQQ64Ae4ouIvEB0tHtQmVugWWBLKOXHFm4PY
CQsOZ8Eb5lBkcr2l1/whJHezRHC4Zs93nZqX/aylAs5bGVtGCfypEPehC2iMPAtVR0vLs6Vn
lqWHCwR2gRskj2Toh5KDniUQySalCAH8HAsZR7p6CygpEk65mAL41PbT+etfXrx8NZtSSfLD
JRLsI7Vutlr99OLPP65WC7Za/fnFS/5JMlItjdPheSrMG8H3aeC9ov2b28OizjeqcUNaEfCt
63oaAsMuCZCmSTP9RACDYDEKXlHwE4M7Hr+j4BXs8UMBPUSxAVKIDer3AquB1t8ZqI/aXWpG
RRjFEH4nkH5CQtgTxEPmn+8p/7vewS7CN47NtcyFZqSQr7IiuHuIkvD+TrYQ8+gfoXOnyEff
SMaDaEzFB6cSu8uDgQrRxGedTxAg5XAJCE5vIFpwiau6hkBzfUSSrOF+B5HpnRDLIVMTWMjK
CwMXzEdkPsNz9v8ktD6FfTJg99svR0PbL4O3201JMR+v6uB6wAKdzP+ArbR3siACMlhsTH2E
BeLYB+GlvkjbD15wbj4YdCMk8LvAZoSWKDqeQU+gHcvLNVrhuyAdUUj4e5itpv0oJ7g995CP
JPl8ZIngFjJjnMPc9RobcQ77uJPpi96GrcpdXmA1xN8nn1KmGn0C/9Qi6WhAHZynAzj/COev
/Yhgn33hg9DCQeqNT7KzjldujQGP71J/DMk6eM8H8gDD7kVfTG2kqpIvl8vgHkZl6boQbGNg
HLosMwoOm3yYY8Jo9UT/akGHKiLT36Nu5bZLHaZcJIAGtX1KOQjLtouJI/q1CCp+NyLJfhxi
YNhP/Pn6wHLB1OlxAMATAjO6Cn/A9YIx58GyAt4/5IJZ5mBRLOWpnHJXB+cJa5VoIwBfT17s
Y0xUZLXEBgeGDPa5SKR+VXbnHFYxok9wVtx/MQ1MGoTBLoXHGnjkQCaBBY2TM0D4W+86lXQc
YQvPZe21134sRdyolYnT/mGW2y27d+eF9iCcAkg6+OwZxA77SGAGlwSFUf/pxX/824+n7JXh
JGglcIDNN+W0ojbdrikvy2SzuVZmUkiDgVnUWggwxrq6ZkXSbK5P4SE4ZV+TUq8ptgW6GR4d
cZ6/6UqIOc67aBf6K9GF8wQSSGBTFD8F2vqWBA2O13TB1OfsOehFwLirPBIXGLAD/UHW5jkY
W5xtmzpNUj4WMebtDhWOEJoVMsFhQBkSPvLaN3H/LDJvQFMUOehf5iZS0UZdFZCyA23QAAl4
ZJbVZdKUSdVhThGaQZXMYwa9cZxhyGxd0JkZ0orCxCSYZmQBttiMs+q2mMvwaLBhOHeQ2xn8
XrW7sivYQ4Z/ye77YkZf0AEYPh095/VnNGaIa7P64buff5w9CF5tng9WC18mHFEvfgVnuHIo
kMN8xAjjRnIRLWLyh6LK+XbIp8iL/vN/AQMhiUPcpwEA
_ATEOF



$at_traceoff
echo "$at_srcdir/t_merge_3.at:1198: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o ancestor.gz ancestor.gz.b64
else
  \$UNB64_COMMAND <ancestor.gz.b64 >ancestor.gz
fi
"
echo t_merge_3.at:1198 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o ancestor.gz ancestor.gz.b64
else
  $UNB64_COMMAND <ancestor.gz.b64 >ancestor.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o ancestor.gz ancestor.gz.b64
else
  $UNB64_COMMAND <ancestor.gz.b64 >ancestor.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_3.at:1198: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_3.at:1198: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"ancestor.gz\" != \"ancestor.gz\"; then
    mv ancestor.gz ancestor.gz
  fi
  gunzip ancestor.gz
else
  \$UNGZ_COMMAND <ancestor.gz >ancestor
fi
"
echo t_merge_3.at:1198 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "ancestor.gz" != "ancestor.gz"; then
    mv ancestor.gz ancestor.gz
  fi
  gunzip ancestor.gz
else
  $UNGZ_COMMAND <ancestor.gz >ancestor
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "ancestor.gz" != "ancestor.gz"; then
    mv ancestor.gz ancestor.gz
  fi
  gunzip ancestor.gz
else
  $UNGZ_COMMAND <ancestor.gz >ancestor
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_3.at:1198: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_3.at:1199: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o left.gz left.gz.b64
else
  \$UNB64_COMMAND <left.gz.b64 >left.gz
fi
"
echo t_merge_3.at:1199 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o left.gz left.gz.b64
else
  $UNB64_COMMAND <left.gz.b64 >left.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o left.gz left.gz.b64
else
  $UNB64_COMMAND <left.gz.b64 >left.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_3.at:1199: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_3.at:1199: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"left.gz\" != \"left.gz\"; then
    mv left.gz left.gz
  fi
  gunzip left.gz
else
  \$UNGZ_COMMAND <left.gz >left
fi
"
echo t_merge_3.at:1199 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "left.gz" != "left.gz"; then
    mv left.gz left.gz
  fi
  gunzip left.gz
else
  $UNGZ_COMMAND <left.gz >left
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "left.gz" != "left.gz"; then
    mv left.gz left.gz
  fi
  gunzip left.gz
else
  $UNGZ_COMMAND <left.gz >left
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_3.at:1199: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_3.at:1200: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o right.gz right.gz.b64
else
  \$UNB64_COMMAND <right.gz.b64 >right.gz
fi
"
echo t_merge_3.at:1200 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o right.gz right.gz.b64
else
  $UNB64_COMMAND <right.gz.b64 >right.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o right.gz right.gz.b64
else
  $UNB64_COMMAND <right.gz.b64 >right.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_3.at:1200: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_3.at:1200: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"right.gz\" != \"right.gz\"; then
    mv right.gz right.gz
  fi
  gunzip right.gz
else
  \$UNGZ_COMMAND <right.gz >right
fi
"
echo t_merge_3.at:1200 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "right.gz" != "right.gz"; then
    mv right.gz right.gz
  fi
  gunzip right.gz
else
  $UNGZ_COMMAND <right.gz >right
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "right.gz" != "right.gz"; then
    mv right.gz right.gz
  fi
  gunzip right.gz
else
  $UNGZ_COMMAND <right.gz >right
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_3.at:1200: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



ANC=4f7cfb26927467e9f2a37070edbb19785cbb2f2d
LEFT=adc1ca256e9313dd387448ffcd5cf7572eb58d8e
RIGHT=63ad35cd3955bfa681b76b31d7f2fd745e84f654

AVER=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify ancestor`
LVER=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify left`
RVER=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify right`

$at_traceoff
echo "$at_srcdir/t_merge_3.at:1210: test \$AVER = \$ANC"
echo t_merge_3.at:1210 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $AVER = $ANC" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $AVER = $ANC ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $AVER = $ANC ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_3.at:1210: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_3.at:1211: test \$LVER = \$LEFT"
echo t_merge_3.at:1211 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $LVER = $LEFT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $LVER = $LEFT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $LVER = $LEFT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_3.at:1211: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_3.at:1212: test \$RVER = \$RIGHT"
echo t_merge_3.at:1212 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $RVER = $RIGHT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $RVER = $RIGHT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $RVER = $RIGHT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_3.at:1212: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_3.at:1214: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net fload <ancestor"
echo t_merge_3.at:1214 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <ancestor" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <ancestor ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <ancestor ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_3.at:1214: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_3.at:1215: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net fload <left"
echo t_merge_3.at:1215 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <left" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <left ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <left ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_3.at:1215: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_3.at:1216: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net fload <right"
echo t_merge_3.at:1216 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <right" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <right ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <right ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_3.at:1216: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_3.at:1218: diff3 -E --merge left ancestor right"
echo t_merge_3.at:1218 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; diff3 -E --merge left ancestor right ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; diff3 -E --merge left ancestor right ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_3.at:1218: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_3.at:1219: mv stdout merge.diff3"
echo t_merge_3.at:1219 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout merge.diff3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout merge.diff3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_3.at:1219: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_3.at:1221: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net fmerge \$ANC \$LEFT \$RIGHT"
echo t_merge_3.at:1221 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fmerge $ANC $LEFT $RIGHT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fmerge $ANC $LEFT $RIGHT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fmerge $ANC $LEFT $RIGHT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_3.at:1221: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_3.at:1222: mv stdout merge.monotone"
echo t_merge_3.at:1222 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout merge.monotone ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout merge.monotone ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_3.at:1222: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_3.at:1224: cmp merge.diff3 merge.monotone"
echo t_merge_3.at:1224 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp merge.diff3 merge.monotone ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp merge.diff3 merge.monotone ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_3.at:1224: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  125 ) # 125. t_merge_4.at:1: (minor) test a merge 4
    at_setup_line='t_merge_4.at:1'
    at_desc='(minor) test a merge 4'
    $at_quiet $ECHO_N "125: (minor) test a merge 4                       $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "125. t_merge_4.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge_4.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_merge_4.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_4.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_4.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_merge_4.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_4.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_4.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_merge_4.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_4.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_4.at:2: rm test_keys"
echo t_merge_4.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_4.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_merge_4.at:3: echo \$UNB64_COMMAND"
echo t_merge_4.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_4.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test -n "`command -v gunzip`" 2>/dev/null; then
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  UNGZ_COMMAND="gunzip -c"
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_merge_4.at:3: echo \$UNGZ_COMMAND"
echo t_merge_4.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNGZ_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_4.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# This test is a bug report.


# This is a real merge error -- it should be a clean merge, but it
# produces a conflict.

cat >ancestor.gz.b64 <<'_ATEOF'
H4sIAM8MGEICA+19a2/kNrLo9/4VjBcz0+30dLKLxflgj31vkpNdDLBns0Cy54G9QUOWaLds
tdSrhz1O4v9+6sFHkaK6255Jzr3ADZBxSySLZLFYLxZLX3yh8mb32JY3m17Nv1moP3z55R/V
TZs9Fk2tNk3WavXOPP7vXXPVfFjlzfZy9sUXKqsqRe061epOt/e6WOH7qsx13elC9Y3qN1rt
hit4pYa60C296HW77VRzTQ9//uvf1Z//9hc1v7xQf1hg+05rKrkuK62++e5v//X+r39W102r
Ct1nZdXNZr8r67waChhZnvePO30p33R9UZVX8lXZdH2rs618t8128vGfgx4CMJ3ug8cxhK7P
8rvwRVvWN0HHMNOsb1r57nqo875s6qy6lBO5amCQX1T6Q5ln1TrPun612QVD5BrFY51ty3x9
VfYwxHSdbgOrVqx3fcvlvsLJVdZB47JZbTYn4nW+yeobvSaIYUFTwzzrvove18NWtwDpvsmz
q6is1fdlBzOMXndZXfaP0cu+zeoO1nYbdzCU0Qvf0+y+KQtle8FBn53lG53fraELPV8oGvTs
55lS7+ef1UNVrctiXuuH9RaGcK27frE4n0GpfYT3O3XdZjdbXffnUIDENtcFYARKADjCW9vF
VKW6UFjYra70TVnPF+fw6jP7TtcFvvn883IBkJT6mf5VyqOYx6deq7wzkNZc2M3Lxbmt3q3k
nOzr8lrNP7upmisgEoPQVlfZB10sTA3fI/4H2wkRoJrKY6yDAWy1eij7jS+0uOhEY4E9GiXU
W1sgMNSF+uUXNapgAWEFN2ylnswvQq3HxdlZoas+S+L5FrADaKAKAte3iGv/3uH7No0Bucij
Lu6gC7vwq+sSQPFw4LF9XO+yfjO/lbPgBYBWohkNYCGqKF9WAh9s+zmwpLOzbXanAWTZpvpY
Bu0P/CfbF4Dp20U4Rl11OoD3cwT9GCpybcf9J8b6fj4eFGLJYZ8LgFDuwrGG1BE/8a+n2dNs
Fu53+TSXD25zNSBC2gVxAfo52k6SIQAZcCX5EivRnnal9HQej8Z1GY2x2TGVXfzmA1Sw1/uh
rdVpvyl5wChYf2izHCrDKxjVo7oC+aXeFHrXb96oSt8D2QDlNlv1Jt+UsJPL4s1SgSQfUKyB
RM56BMKtUUqpskbOnaE0U2VHE4NCWGniLWWtsHfVDVegP+w2pBv8AHKdoKvtALO60oqqaVVk
fQbCSYNWAYK2eMTa2ODkGwf1ROVD28KP6lFtNcgNGpN60MjPdg20dUwMoDQwZpgTzBO3mJo3
16Sz1I8w1fqm3yy4NeoiZZ31gBd8ssNbQs2CmJXO8o1qanwPy8ONEGKH4Oip2zQDTOiKtZYu
29KkrrO8V6g92ZcMkjvFbrIqHyrouEBAzBFB9YGx51mNwLLdriq9FhUwaXyZA556Bg9EgUBs
scXdX78+U/+xQS2KFsJqHmqTwao0NMz7rC1RvOOIy16hUlFdw0hV1fSoocELhLQbWkIwQLnF
dYPu9Qfd5iUtWEWDCIB1ZaGFyFvl+Uqp7xuEBYrkmx4IdNvc48AIrGsKteZfdcigHpsB5qUL
wEBWE3VDm6wDtWK1WpAKMPMbZm1o2u800BCcmDXUnOSxJVArbYFkqaPK16q44r36l/mf5if/
DsrP9SNuC9uhetUxXmE0bofNAU8EXL0qF/+nPmHu+sqNCH5SMasjqMkW+lqREnd25rW4dx6R
l8q8zmmbAzrnWQ2bGrpbShWD9rEtIWrBLrF/I4t27wSqlh7qpYGClIg9SDUJBrxd27FjYXG1
utG90wm87HcoFw2IpwUqlykTkBwA38yBYCTR8GFwcviXON26L3VLypv5bYVv0D9N6IH2xJxQ
//atulRfhqpauo9af+jXsiMhCkmrSTZLao9uiFapkbRHuqSrweqNLHeaZSzZA9pnTok/L9Rp
eZ6qRsKI68nyaFHnHtTSVg8GRFy1YEsvw9LuTRdyKixK6ZeipSfdN66JgWYfPV0KEPs1ddIg
ecirUGOPNzsrlUHVMeYZ+7eLvbqVXIWGd7lR8gP1+XYEOtxm46Zub4ybio2PNftmbRfNIC22
M8YgSCW0yjx3vhgrg8EesBuskdtrUkskvvntBzBea+SbwC7fXsK/yBWBDTaWH4rdGgEAarka
UHMI6WVcC6YSvXTczaGHejHYWO8APa4KGooCfBJRcndd+CGP0HU62V16meK+Rop8iuDCCVqI
417Pk2q731Vs//ipLWhL+GK2c1JQpvtUAYS4g7eXnYYdWyRhNnUO6g1qZmu/Gt08jbjnmE+n
08N9Fpj02iaNmzGNgtK6ye51RMvnqm4elqhlgS6GOueDfnOPWqFGjRB4nf5fKWqMMGz2Y3L5
jqImGN/7a1IHuyWOsFZou4Iib7RZUn9VdtNqUEtJfU8Dcb2vkqR3OjFwSxa4t56D5RfuHZ4t
qJhLVpPLzngfW1R0y22wClhjlQbyfaNQ2dKEuNoIvR1JKFTzUX291kB4uT5L0bvHRdpp0Bht
aAIhyY1pBKywXGBsD017153NEtUj5aypkjvzOEkhNAmh1DVOpWuqYmrIaCOSX8rp1qhY6+2u
f3RDXKISB4YZL1YaDujS2VAliS+YKRk3LRhia6GQxv+hNfYoOBFPZjlFoEdxklHHizSPHtUj
z8pkk/3OFK8gA3NO6LTobDECnAxTY6aizK7A/kL/xXYLa2KNC9owGfqkypztUahKtj7+D/SG
jggQvEPvzfWshu0GZNmg8Uf2cbndgUp+kuzhBAHhNjJWKB0dZGqr2xswqq90ng0d77pOQXlX
XpHFy3Y27Ecywh/I9tT/HMBcfURLEpYK68WzsVY6wmqbYkCHSba9Km+GEsiP9zXZ2tj7igbf
6g7ITIElAcUZccemam7IRZKj8YglYBmC0UG+iyzPwfJAhAKL5wMPsrV1Ada2MU6KssuztsBK
xvpF2dCD1Z3lCOMBp4cm8gNYzSpDKPe6pc0CrLNvG7DJG/oH7G3rD8jIJNbtPSznPTkY2uZD
6R04D7w+byocN/yTqRPrvIFJotiE8dBq/OWbr8Duv2nast9sV45volOBgFQlyIuqyZluEEnB
yhYN+VyaFmHVTYHLCPSBE/wn4BnwyqsJc+X1IqdDpu5h21ZVRt13OmvzzRIwgth0zhh08BDT
prV/g6QJpHMHZrL0XNHqwQCbu47Hamqh2YygmgGoDfC50zmiaklME6eCPrMHWBjjKaMt2KJc
aKy5ssCxgzKGlMOj0gwbqmQWAVxX3ZcZvOuAKlEsIA0gq39Arwrhu8NlwqVgSI3xzxhdAAk0
1xqJxCzBQ4mrVj1kj3Qk11SoYYy6RVjs/G88aS/VUFe6I83jGnuE0fABXduwKwh/O0cewhjQ
/dcPqKLBEtE2HlGLpxIiDlyZTt00Gq26BjoiCiBHJOwd6zaB/UKeNzAWkCuU12YjI0XU0C0P
uhloi+6yG2Q7buVAa7pqYTtvaOa8d0iLUTD1shWD3MEoGX2s1ThYTW0XDmqUuxKXysCEIQCj
KzS6TEpcM0Oohh8YzCD5GC1TbR53OIbOahbG/XdKO/kUdyRse9yAsPFapkkcESBgSQuF6lfR
ECotyzMaCm8p3D5GGJpthQyyRp5aaLNujmERc2M0OueQWVp2IM9m1gs11F15U+tCkSc17z+c
zyIHVXgU+e5SwQ+Qp6N6wpHFNZwTyzaYdT1wilzRwd6MXM6o9dB+WldNBviewwiMa3ZCtDrH
FtRchj1cqtd2e061LmtQ0WrdYmuszs9TtYF1rnHM6BiE3+wZRMXI9GJMHRLQqIfb10IJZw89
WblkGuM0cZWt1wN3AK3tq8LYyAe9YOV2a7GGshwGtoo9dKZY+knnPNUVUt6wM4NeLCU07jSp
mgExIdvOLEuL5TQiAqfFHGhmdFIjbFez/a4z58hBQ1KMZ+TG2SGSZQV3KrgLXXu4RlZ3Pd0J
vTVo3ILUnlsj42ns1wiIC8m+8x4EfkleBPPTgu3Kn/TcHNXNnuUz/GTTx020qxEarzn/me/e
XpY1EP98ISx8okqzquytCcnxdAf/7OrgaBpgX14QQsCI4+l6Xwy/BrmEBbv689+7pqYBaNUO
3pN11toppa0ic1iDAHDkT46VXKH2M9MfdsDx1k7f6OYv5xIHWvo+Uo2PZy9J1kKzIQGK2rUx
M9A7CKK60+eWI9yDutKYPnCxOtq39GtlQnTmfpyWIO3m3mUg/n+/hO2LMQGgj9mTHVr3ethe
gUZkxNQNSSSQsB2eVpHyQVpX1jZDXQTUPYGyEZFrmI4YnDvvtzjSSOSigqNxzTTO09wN3WaN
CsVcv70kG97uNzvDP4CqsysQwagrGunn4KKW0Ja6M3ZKMBOB3tHocVPxCEYDr3HgXObGXEcn
DimG4uf6j9P6R7FXsE6X3YNQPCXClztQ7j317kKd1ov0Bjyt1ecqtQVP/ZY2f9IC+bReuu1i
6Zko9jw5KSd7lBOHclrh7Ahcp+m4MphSPDTaGOyquVB9O+hzeSIT6jCGl12oL88DB7F5j4tk
x2i7IxZKr9JHLuQLkc169HOYFqFTBM2yssYBRu0FSZPWYFqjjR9TewhRlKaZI0NaqufElqhp
ObaIwkzC9d2NqZb7/3E044BGL7mlW+BgsLuAZCNCiKDuIrDTUENBtB8qs5D90TSCWAEBoFcE
u9IdVRkqdSw77bEZ+S0D8K9T8J2D2fAD9ctF0EryB6qBtE4MxE8sJVz8fnryISWjihxekhK7
Ts97udQ90NC7bWYvF7m/tsT16u7/fQLXjy0tb335JxW3zvj8dNL2pVLWzfC3F7K/oXjlsEvU
/oUQ/B8WfDEW4/7GrJrHKzEaWQ+ZiU6IevJUHEvYiL7Dzn2hka8fIVo/Uqp6Kv1/XagKGZWS
ZL+6pAoEFZLD2otKqIocZG6Q/1pdd3vW2NXq6mK6ViiGbEya3dBTrWQUCYk5lkrGywTDWrkl
gd5XckHw2SyDr0c4RtWC2vsm0F5Uovb4bNoL0IarJ/RzlIk0p45P8rEDWb4Cvm9h/yx9C9co
udSrQskFYBZuXAwBmByq98ICcCytZG5WqndhA8/JymkmFrToTdz6XnUPFgM6nHagleOzWEOQ
0j6ZinR2lY2e8USncEo4SOm5GLY743jFM0zjR6ILKI7GNgW7kNMKlRqrCMrT53ZLV3Fg8gyA
Fgw7xQ7+8ar7Uc1h4Yz0Xpjlgg7h3+3W0ww3DlWTZMfJMDmA5DxdYh4UIAdl8qaFLf5ZVHRj
pgGfIaXJkCMebWnUFvg5P52XNvZgsRB9PtEvWAnBNNif6VTcNcxxTS72ZAhqpa/7g0fCqYZ0
v+pZLYlbHGyRdmAHrIqfzmcHaWbmjWg6PnUnqd4UNNwDd2s1dj8idlahAxJrtuOahI6o6sgf
W/EO3SNxz0dt2he0qWB+z+7niDazvZpHBVIDZ8jQ91RE8dK6imNnQQQSKhyuSTBdTXt0wUex
5tQqPlFfEvFfvOqYli/c/sPX8IfeWnAmMndkP6aoS+rE6pdfPMWPnb6uuXDSBu0T0imaBttd
qH1dvCqW8Bb/ADj486OZ0Cx0KFlzD0piCxDjvtNuWO92SComp7jyS3WKayBmgIuclHBCzhrn
/TI4+OM16OhY0IyIgtrpNiivVMBJaCqptdsr6Z4id6JVQ6Ym2fIkq080STubeJZm8pOTNO2o
3rGTfHJCI5bQJ44ITgQZCykzauBJ5ERS7r4mhvJOnOm4OE9pFCTIWI7RIXIszV4mw14mv54n
uz6h3JoQW7QNfwVB9ZuJqV9BfKQZfTJY61h2/xHMPsGsk0NJsWzDq49n1c9jy/Tn07LlX4UX
f0o2dSzPAQB/ev+f//btGXsvfWAQRsbUORB0eVVhiJ2+vi5zDLoBmw6vg3w3rxcYB9NqVduA
T4yag/Wx/kQT2uOiEkyckjT2Z2W3n785VT6+KZaqDDZqDvaHuRczG1tYQ9WXo1tWQbSGBUVj
RUY2GdeBP3tdOJZGyQrCKvSKSJV+kV92LmYU7LjPuA5F1MaW+eQlIm5DsaI+8sB01uzm4T4J
L0gEyPJEnKDP4PBD7hgbUnQkckfm5E1wBYqgIJd7d1MuoezSB/JdGNqhSNF1i34jeWXhPL57
dFOSqWrbr8iYNAkB3EtzzSH0RExdzDarza5Kb5AiIm3RM2L5BTl4WKkwYwvbCIJ9lZ+e58MA
xc/Yzr/ZHkyqCazWYyw8SjBgKHSp9FWXCIhzUksMiC5rSkL2kVhH7HaiqqmoLO6lfZwzLxD8
UyJMIieavLINxVEcB9NlRWG5dd+shxoP1EOdomsnVK6wWoHHoDbMDR6EUxgghD5hemF8iKLq
wroHRQNoLmtQc3phXZACNjY/hUL0HZ9CQWK67la11ycwvn27JgTNnxflt5f6yro87JhJ83Ov
Ud9k1eEzhBcJlGPBTnp19h+u7qOU16pvemCeRGxMM5+GfRsnZ5bf8fp1/Z3Zg3eGwwU6OK6Q
UMFDEUiNkhIQNfqBAvqgRs+ibUwG8Hu+0R90nb+DAUcu4KFbCMUxkDYobPxJ3VjWAFx/XIju
RpyYPHieufst7Lf0V7Pw9NiCxjsPBV4vGIsqH6LqJZVTg1OCSoqV4AgxQreVGKtxLOFHHsTF
gs0tuDvwiy/WGJyNPe6A1VZnd9Nu+Jm8R/qgLaysfqSzJHwF49zhTb2VvSyBuRQoiJ0velHM
NqyGByWvM9ulWcm4SerET3p0ZhodXR9hA/7PLnt4yxsvuODpvwHhrm5hRDsGOVg1nlKEVY/s
nAHeqML7vYgpej/SjWAuXHAE8dBh6aFzZyKUQwfPplJw8jx58RNvH9XJfcoH/ojWJgyOgNUM
sjFN7J5xmMZoAYgVI/Atd4MXFELozzyeuQ1iR+RwzoMh36ZHJzS1hH5yaxd2qa5SYU6pNlfL
QOrYViMHRxQiN3TYh4+pQMbiWf6TOX77IUifwteG8K6RvbnlMmuJtDEm9UzZqq+W6mu+OcYZ
dLBRN+AFFbwM8lVC/fx6ifdKKAy9U1+tOOPZjJ7joKqRcvE6GE1KD/6Ewvg5iu+xDcoab7Lp
tWl4vMosuR0L1jA/mxG2UX62oLsJKik9QdrzQrPHXnhkFnobw9LhCOb+zHwjjiJGNwcIMb54
lLwucNwfpVwv1Wm5lDR4XIhMsAyB629wm3HSQdJvd+e/JVaEpki+kZFEHGtApMttMm/OrUvO
wHKBIN6pwUmk16/xgUMRijDxX6K9F1uABEu+p6W4RTFTIvPfBeOK2ZpNyFUWOuMbgWPPHAiL
h6y6E9cd1bDjq3XG4YtQ3G3F6nGJ91uHrb0zbEMaRQ4HlXVdk5eY+op6pXvCiLqtLvAth4Cw
oDql+3zljWh/am/Z5ZizjLJCFRQnWdK9pKxCv6C9kQqMtYFKFbAQGM3bbrjatc1VBXIQuSC7
EfuBb8DyxV9Q/THtFM38Tusd3m3mi254QxDIc7vFeeFONTX4njNdzAQuX5W1zugUdIfZPHuX
yczkBFuiBkmA+4fmjLM8kD4EEDmvF7QcEDd8r7ijS2V9iVlBEXuLmbnV71vS7VgE2XmRhHhn
PEJ3fZvR7qLYEetgItd1t1iZS8148bJEH7rJZYbgcZJEF4BG/QGgmLDYfsjv+LIlp0ej5H58
h/c9XQA32QYeCBhZKCjP7kEtpjumuGR4+3pFDl7OJUtZ3/j6rxpuKkZbGK3l+Y+gprWjvb0e
pcMX8idThx1uGonZww1Ewh7oxOyWe00rfLh1OoXX/rRhJsza09GR3ST0i4B+XgrGYtjexjUO
cGkkutw68sKkMemsI8nmFpT3LaGZez+6cCnM6GAeQbYwFrJEdK0GLpNRphlKvCDaB4m04GHC
u2fvqLFlb/2Q+sOuajhcy2X+YCZrTQNyQy4x7cgdh37zvXPjmpSZ5ISf0qkH+9PXwlhWqRS2
/v2UzAuR4mzC4FJDfIbgq6XSyI4ODkx1b0+GfpqkfSyz6xq7QIBy1UxkB6UnbP1tW3QCS6+v
HHRw7/bFuy9pQMlTSL8xfZqkdWRSIYJujd0u6jONq6n8v1mUS4CyqTiJYFJd8FxNXgGULphq
C432yIL9UHYk1rHnFQueVg+dybcBU9tQjm+QF61+azqB+tKVMF4eTFHnjb7oDDOmtHRoiYsp
CTf1CJWIvbBK5DF4MfJY/HGigocMb0WHkCgLKW3wsrcp7TC1Auxwme6OTkNbO+2V6u7K3Wov
QqL7RE+po7Rxq0OyVGSV9Ogjg/K598lCwTde/Y+C90yRNv3fM4XaHnFnBVrA16IF2BMWIBOK
lp1buaVJcksuSFTJkJUiHUl54EMD0hzscHq15PpEKcqXscaS3rFWYMY+2Mj/mqTX6O458Wab
asB2sJdXO4MRNXzKymW2GFIL4y5Mkfr20ib+pe2IqbKu0WfJPnQycSw/w+QluO95BTb6EX3A
xAqvdZ+bTS66W5NEZSg5qMvk+Q2IQmg5IWvfe+n9aCLdK5uOhhIlRpzHROAzGxhNK5yeNTo5
FTHwZTBsrh6JGop+85YPMzjAaMHJZNiQYSPmsRneEPeljDaUGAWtUrTt0H45wM3QNyiTR/JO
6vUsSFLn0781mBvmHinKJIExEsBbxrTGfCfvIXtMJbEhgxKT6oCt9KhuBrR7KMEP6TbBsSVH
4lnGQaHkbohrRslH2jYfZ968xMLZYz9Ilf/FCX05OM6q+aMSe8zn8+imjvqOSfT7m+b5PSK5
rzA2xOKMjA7jhAu6JK6aFUGaGWateK/U4NJm9yiDpmHYy/6Muwnj4nbCuHhGLt1DhkQ6pa3N
9SJ1wPFJjzcn0rLc0VdCKY/zwrox+nOP4yJ1RFDgMVZJtEBhUNUL02OOCcQQB24JR6vj4SRG
kswUPN3kJVkKZ3HIh2eaQkx9FON8OdN8LsMMPUL8PYNCxi2JPIxunl54genWP2CCUhM1KuJF
vXMg0I+OCzUcVbBb4nz2Uj+U0XCIsx+WezK7PX+XAS0QoWSr55gyAoTF8dIO6CiFyuAnGIEJ
bv2+H67xKJC+6YCbptWkctj8clFwqvp7lD7POKzZnY5Kat0MN6Dnty1eqsmsjf2gyT8NA9hh
UlCYR0EJBsGsXI2Cv+qsevxJuwysTok/njplVnK7Aw7bbalWB7XWcAt0TPxRTlrbtcvUOosS
0gY8XghGl4TWQ5C3xcWnjkwCtMibF37aIPooAfNNQjafDZiPttjs6/xVlVfdGzQz8K9hoSkX
E6kYez9aRFcjrZNslLaBb0fa4ik33t4ObpVLL8selOgrPvTNInHNlf1SPidt7FPhjzVp2KD4
SbdD0Jwr5zM1H38+qJz4rBB+AykdutKtOHcvfaBoovNjNoAYwlGkL4cmzF2pUD09Y70Zs1PL
LfD+stU29PLM5ZZUFqw3hmjsWew0vlOolpEYwNzaAb+qU+d8Tkwcwj3NyTdtXZRR8MNCnTHO
bLlpYx/NkKDNPLPru80+8P2OL+2bmv1D8xP6c7JUJzX883vTuF7noOV0a1ihE/oF9iDWyYM6
IAe6dTP05OqhxMhYp03AoUoMyNT6hmpBpZ/NyW4w5bUMMpb8HV8N//JHNyH+3EyZ34F6ZaZ0
Lt/YaQQv7bgTNemtVAigs6WQAZwbB/1K5kMWgfYgKi6h4aUylbC+G20AOjTXBGhjGCUVEwca
Xj4TNH50KwBto1iwhYjvRGysa/rWE/28z6pBo85DaJpoTuOy4SzGg0LiG/cQjcDFuuAaGvmD
P60A800eWtJ+sTe2Ns2nEkkR8XB8EYo26sPJNwTMKZmlEH+NTwtLR25kqLIF3yZJCf69LZ39
lrw9iAZsksvOEro58gYfIESBKWPMob4Gq862g2MdZ2fHIttr5HXDAQ6mvoyQ4EwDVroH+Vud
1Bf379rH/Y4+q9OcO6NHDPx5K+hdLqltmhQ90dZlEYEvaQbv56VNvCQr+UA/eMIYF/+tj8Qc
ArINvUJuS8Emwj+0i/iXsyptlTknaV67F+aK5kTtIjOdHlE3G/oNmifH1e6zm2OrsopYNcc3
aLZb+vLJkUNB+qJAkrDFZBzgkSxtRCp56b6vFeb7iLnqXiIznDYdkRVXmlJ34jh9eZdpFJOf
l8u8vFQUfY/nYkiEQUR+KRObjb2BeclOL6xrg6vZ3UVvfGj1xPdJHYIVrZc7Bl3FnSqxAAr+
FVXj2Tl/FBMF71hceAqp4JeJSOlkpi7slD5FiT/Ogw+rApviDzdQGXJwe2a/VEwy92hWk7lt
ISxSnyIjKoM1IDDJmmwPGHvMrS8hhLSfbk6ND4R+f/55oLGMPDYIfDcIIcLzGo0m8FcFREFP
lsXNBIsby2Dic3/jIz/nKHhVBAmQrMJGvfNs6IvJGUUir2+GrAUZjv/OefhmmIiuUCu0iDGz
NPaYq0PKHV7DFrqDmZJjxaSouMvZ9nLjUm10VphPV4mdP9JxkvveCcCxh7z0oeNQPvaP+8V1
9yz93cV480RZpMe3G3lB8fSzKK/Nd3rmDrAZnZ81jydpxkRJupdh8vdkE8IYDw12D+HToNVC
cSH9/ha1+exo0dDXV3buDM2cUmaVwliEpcKL8DYTGn3sYmkBQY89dIJO5ivNH7M0PrPVbHza
MbmGwUDjBeTCvat3SHcTnm5epZGWq3gP4Jfpt6W5nkwWI6mcCSXvaL3VfkU82kxWnaXb+5h9
zLihIsvFmdPEeONCwYEtNgw8u+0//9xOHDmXs9Ocq94kD1DeIeJPC7jMKd/4XzyAtNIJNZbU
2lv8sXaXbuh0zlGWZqA1vOTCwlVKYJPj0w3fCIJLtXUW04Qfzyw/DZYrewcS3ZO4am6Gztai
PyZ9ZizC53tHkvbGsJaQONVjd4xRIg4c6bnPPuiCnYPeb4gy138AwqXDc4HlK1IYeJGnVIQ+
OCMsNDqK1/gx23/5owhRX1HlJdQO4HhJWdYx/G7v+h8ZTzC+YSGnRuMZfz7+aSYOrqI9ExH3
P+D3j6OUkGzzH8EYDpqlhjEk+IJwJWPFvbxCuCKYV2ALyytk4UfxitnYKW98MBOnx54vwptl
wEPS7EcGLe1hRlAtwZLkPNOURaOYZkmseE6TpFuGF/KyY7lYpM4ahbbbh2jmTzS/9hAXa4/n
YvFI0kHA+7lY+0Iu5mjh/3Oxl3ExsR/+Ab9/FNFsMRuLcupQvKANVnr7VtFdefMF8pu2ecCr
N95hxe+hGh4Y4+0ZutIBuuN11TxwCBa1xyuPGX48ynxADYzHmWCL0sp5hh/OO9LoM2ZdZ5O/
Jj94RLEckfkffWMp6R1I5IqyXMteOTHd06HuXUn3hKL+g3Q1e0YRfs+WFizQK+kTkYbzjt12
xtnnai0mLxlgt9i947MXEvZ+z05Si8/9jc6UT8QbYTIpjkMOhTJ69weKL+n72LMEdAWcvi+H
byaw7uUvidW2dN/nlMilsq0vCy4E+NvA0+fhSwdCrMESz6HFUEz80gTnMMNbvox5iO67xUJc
4BvxCut3KmO/U5nyO03w7fdz9ynRhL2shM97IhdQvHd9UO2znOATH7Dncrnawd0LouV9XsVg
DW4THsbwznrkaro9wFBCWx9HCT3cpr5nPYqzin1SAYiD/HMi3ioe6v7vwfguF/syFsgg7KSq
F0cxCLjno7BBuVlNRaGEkg0/YonRgKXiOLnHD+9zD21qpx+z2/1kn3NbIA3E9h8GCkixLxza
vCN80FOJSaCMCmkuDB9HDvZeGpOBDaSJfazsXgUO7z7zHLBy2Iwgaxx9UNhTTCB2z7fiPnPC
24pdhEGrqL/JY+cJfsi5KY3sdnLd3VUaD8gPRGpViFnvvFUzdtj663m8FQOX6TyZYOGmaq5A
TnZAff3jqiN9v8o+6GKOdyHswR/rTBwNRgX28x4Jt3AYO8Zc1s3Phe0unpNmIQ4aOJRnIWHp
Jry9x2eRQOEVwkwf+kR1ps58giAwn6QhKfq8aFsbtZthT3sBJiUk84/joSTkaNTKIdyDXsrR
JsyJvSRH18OoEXeUCgZ4mu2necdHXaMk3cdETV0/k6oDH1gXUvWkt9Dkf5h2E/rzUJff9GSx
xHb8YYyRrQ0lYuCjjxId5ybEjAxJmsaCyaQSKdv3GXbvyOKw1OM1Y76XJaCQCLHlLsZepDfr
72VSoaP3TyTI3RiP3TmhbeSav2zHmIip/bsAT0W+aDDDwfU1xpv5r2p4haystKEl++4EcUPH
qrss14o2g3/sHredO74bf6gjYBEn8unEjHzcRlp/YE6Jp+k2AUJP5NOJPzAxbGAH7Xq6tzYH
mivzddmAadhSlg4MAOZfgeJDNzIocM/5STWwBX846gEB46h/ymCIvLP5I2JAbayWILrOziQe
lonrHnoRpZnbA8fOU8BxiBjBMXNbMQp4qHPD+fmduFxgERFekUQ3pRph0w39WIyOrv2M/M+o
21FCU2T8mrlMCs1qGj+SdpYjz8IzcEM8cvJeEBmHqatBM0E+E5eE8NFcjvRk6TB/SsVShsHW
B24eEy++bDl4vUuRLmeu1CbsfGRaSLYqghilZh4HIJrdZ4QTf8q4w6tegPkElTOGuQos0twK
J1Mn+uaQLZ0Eawe8DyzHZompjcAGxM6YY0MJpeaUaWRGvFSJ99LUiZcstUP2LNtof0Q7g8ko
r3TWzhcTqzLGnST/KdwlHHApJJpLiAYAgN+llt3d+7VEa/Hs5uD6DPe6M1TQ3llLTGBoW+bz
JGfJnDJTqONgBEYTxo5lmAeqQ5CGC/jVKWu037pmaFHMtfkcKmIscyC/fPW+udN1+RNmiGju
MLNvVG4WG//MoYbHvqcMfPQ24nsEQklXM4wzQF/Wt9/96fnocg8fgzdqO9Qg8u/4AhX/RsT5
sChbbsYYD8QW+ylOzmPGURDpeUTSIumhoPHSLKeFCdFCE9BC03XRqhkhtoMN3nVCTvpFa/18
oDv8SDD0jbVXAHS++ISTClfywOyoDi1VutulKiyFgtr9Tt38VO7eYSO+xmbXmVd5qcTK8iyD
wcxdMcz1d+U1+ue//vv7v/zr+u9/ff/D+odvv//he3hf59UAKvHJAIbcGoM3u9VmcyIKjImH
L8PLXq43Sh2Hs3YUj6pyUNxRXOi6o2xbp4r+2iNtfuDr1fDr7SW0nn/93Xff8yDX33z1/bfz
1wE4y8x/BzIbDHFQokcz+2+6B5HmaKIAAA==
_ATEOF


cat >left.gz.b64 <<'_ATEOF'
H4sIAOYMGEICA+09a2/kNpLf+1cwXsyM2tPTyS4W+8Ee+y7JZRcD5JIFktwDuaAhS7Jbtlrq
1cMeJ/F/v3rwUaSofngmuTvgAmTcEskiWSzWi8XSp5+qrNk+tuXNulfJl3P1p88++7O6adPH
vKnVuknbQr3Vj/+8ba6a98us2VzOPv1UpVWlqF2n2qIr2vsiX+L7qsyKuity1TeqXxdqO1zB
KzXUedHSi75oN51qrunhb9/8oP72969Vcnmh/jTH9l1RUMl1WRXqy2///p/vvvmbum5alRd9
WlbdbPaHss6qIYeRZVn/uC0u5Zuuz6vySr4qm65vi3Qj323SrXz8x1AMHpiu6L3HMYSuT7M7
/0Vb1jdexzDTtG9a+e56qLO+bOq0upQTuWpgkJ9WxfsyS6tVlnb9cr31hsg18sc63ZTZ6qrs
YYjxOt0aVi1fbfuWy12Fk6u0g8Zls1yvT8TrbJ3WN8WKIPoFTQ3zrPsueF8Pm6IFSPdNll4F
ZW1xX3Yww+B1l9Zl/xi87Nu07mBtN2EHQxm8cD3N7psyV6YXHPTZWbYusrsVdFEkc0WDnv0y
U+pd8kk9VNWqzJO6eFhtYAjXRdfP5+czKDWP8H6rrtv0ZlPU/TkUILElRQ4YgRIAjvBWZjFV
qS4UFnbLq+KmrJP5Obz6xLwr6hzfvH5dzgGSUr/Qv0o5FPP41EuVdRrSigu7pJyfm+rdUs7J
vC6vVfLJTdVcAZFohLZFlb4v8rmu4XrE/2A7IQJUUzmMdTCATaEeyn7tCg0uOtFYYI9GCfVW
BggMda5+/VWNKhhAWMEOW6kn/YtQ63BxdpYXVZ9G8XwL2AE0UAWB61vEtXtv8X0bx4Bc5FEX
d9CFWfjldQmgeDjw2D6utmm/Tm7lLHgBoJVoRgOYiyrKlZXAB9s+AZZ0drZJ7woAWbaxPhZe
+z3/yfY5YPp27o+xqLrCg/dLAP0QKrJtx/1HxvouGQ8KsWSxzwVAKHf+WH3qCJ/419PsaTbz
97t8SuSD3VwNiJB2TlyAfo62k2QIQAZcSb7ESrSnbSk9nYejsV0GY2y2TGUXv/sAFez1fmhr
ddqvSx4wCtbv2zSDyvAKRvWorkB+qVd5se3Xr1RV3APZAOU2G/UqW5ewk8v81UKBJB9QrIFE
TnsEwq1RSqmyRs6dojRTZUcTg0JYaeItZa2wd9UNV6A/bNekG3wPcp2gq80As7oqFFUrVJ72
KQinArQKELT5I9bGBidfWqgnKhvaFn5Uj2pTgNygMamHAvnZtoG2lokBlAbGDHOCeeIWU0lz
TTpL/QhTrW/69Zxboy5S1mkPeMEnM7wF1MyJWRVptlZNje9hebgRQuwQHD1162aACV2x1tKl
G5rUdZr1CrUn85JBcqfYTVplQwUd5wiIOSKoPjD2LK0RWLrdVqXTojwmjS8zwFPP4IEoEIgp
Nrj75osz9e9r1KJoIYzmodYprEpDw7xP2xLFO4647BUqFdU1jFRVTY8aGrxASNuhJQQDlFtc
N+i+eF+0WUkLVtEgPGBdmRdC5C2zbKnUdw3CAkXyVQ8EumnucWAE1jaFWsnnHTKox2aAeRU5
YCCtibqhTdqBWrFczkkFmLkNs9I07XYaaAhWzGpqjvLYEqiVtkC01FLlS5Vf8V79OvlrcvJv
oPxcP+K2MB2qFx3jFUZjd1gCeCLg6kU5/6/6hLnrCzsi+EnFrI6gJpsX14qUuLMzp8W9dYi8
VPp1Rtsc0JmkNWxq6G4hVQzax6aEqAW7xP61LNq+FahaOKiXGgpSIvYg1SQY8GZlxo6F+dXy
puitTuBkv0W5aEA8zVO5dJmAZAG4ZhYEI4mGD4OTw7/E6dZ9WbSkvOnfRvh6/dOEHmhPJIT6
N2/UpfrMV9XifdTF+34lOxKikLSaaLOo9miHaJQaSXukS9oarN7IcqtZhpLdo33mlPjzQp2W
57FqJIy4niwPFjVxoBamujcg4qo5W3oplnavOp9TYVFMvxQtHem+sk00NPPo6FKA2K2pkwbJ
Q176Gnu42Vmp9KqOMc/Yv53v1K3kKjS8y7WS76nPtyPQ/jYbN7V7Y9xUbHys2Tcrs2gaaaGd
MQZBKqFR5rnz+VgZ9PaA2WCN3F6TWiLxza/eg/FaI98EdvnmEv5FrghssDH8UOzWAABQy9WA
moNPL+NaMJXgpeVuFj3Ui8bGagvosVXQUBTgo4iSu+vCDXmErtPJ7uLLFPY1UuRjBOdP0EAc
93oeVdvdrmL7x01tTlvCFbOdE4My3afyIIQdvLnsCtixeRRmU2eg3qBmtnKr0SVxxB1jPp1O
D/coMPG1jRo3YxoFpXWd3hcBLZ+runlYoJYFuhjqnA/Fq3vUCgvUCIHXFf8Uo8YAw3o/Rpfv
IGqC8b27JnWwW+AIa4W2KyjyWpsl9VelN20Baimp73EgtvdllPROJwZuyAL31jFYfube4dmC
irlgNbnstPexRUW33HirgDWWcSDfNQqVrYIQV2uhtyUJhWo+qq/XBRBeVpzF6N3hIu40aLQ2
NIGQ6MbUAlZYLjC2h6a9685mkeqeckYqfwvmyUqoaZEO0KIjL5LVhFENLjbb/tECXKDKBWYU
ozYOBzTfdKiipHKYbBK6i1AjDdpG04kiDG2uR8Fvkgn6OxTeu2RUj7wik012O0KccguMNaKP
oqNEC18yKrWJifK2AtsJfQ+bDayQMQyI2FP0J5UZ25JQlex0/B9oBZ0IIDSH3pnaaQ1bBUiq
QcONbNtyswV1+iTawwkCwi2gLUhy+6dgvrc3YBBfFVk6dLxjOgXlXXlF1irbyLCXyIB+ILux
+McApuYjWoGwDlgvnI2xsBFW2+QDOjvSzVV5M5RAjLwnyU7G3pc0+LbogOgUWAFQnBJna6rm
htwbGRp+WAJWHRgM5HdIswysBkQosGc+rCA7ucjBUtaGRV52WdrmWElbrsjXe7CY0wxhPOD0
0Lx9AItXpQjlvmhp6wDb69sG7OmG/gFb2djyKZmzRXsPy3lPzoG2eV8658sDr8+rCscN/6Tq
xDheYJIo8mA8tBpff/k52Ow3TVv2683S8jx0CBCQqgReXzUZ0w0iyVvZvCF/SdMirLrJcRmB
PnCC/wA8A155NWGuvF7kMEjVPezJqkqp+65I22y9AIwgNq0jBZ0zxHBp7V8haQLp3IGJK71O
tHowwOau47HqWmjyIqhmAGoDfG6LDFG1IIaHU0F/1wMsjPZy0RZskac3xtSY49hBkULK4VEV
DBuqpAYBXFfdlym864AqkaUjDSCbfkCPCOG7w2XCpWBIjfataDmOBJoVBRKJXoKHEletekgf
6TitqVA7GHWLsNhx3zjSXqihroqOtIZr7BFGw4drbcNuHPxtnXAIY0DXXT+gegVLRNt4RC2O
Sog4cGU6ddMUaJE10BFRADkRYe8YlwfsF/KagaKPXKG81hsZKaKGbnnQzUBbdJveINuxKwca
z1UL23lNM+e9QxqIgqmXrRjkFkbJ6GONxMJqarNwUKPclrhUGiYMARhdXqC7o8Q104Sq+YHG
DJKP1hDV+nGLY+iMVqBdd6e0k09xR8K2xw0IG69lmsQRAQIWtFCoOuUNodKwPK1d8JbC7aNF
o95WyCBr5Kl5odfNMixiboxG69jRS8vO39nMeJCGuitv6iJX5AXN+vfns8C55B8jvr1U8AOk
/qiecEJxDeuAMg1mXQ+cIlN0KDcjdzFqLLSfVlWTAr4TGIF2q04o2NYpBTUXfg+X6qXZnlOt
yxrUq7posTVW5+ep2sA6VzhmdOrBb/bqoYqhe9FmCglo1KHNa6FAs3edLFQya3GauMrGY4E7
gNb2Ra7t270erHKzMVhDWQ4DW4beNV0sfZwJT3WJlDds9aDnCwmNO40qakBMyLZTw9JCOY2I
wGkxB5ppfVIL2+Vst9vLOmHQCBTjGblgtohkWcGe6G19txyukdECT7dCA/QatyC1E2MgPI19
Eh5xIdl3zvrnl+QB0D8N2K78uUj0MdvsKH/fR5s+bqJtjdB4zflPsn1zWdZA/MlcWOdElXpV
2dPik+PpFv7Z1t6xMsC+vCCEgAHG03V+FH4NcgkLtvXrP9qmugHoyhbek3G0minFLRp90IIA
cORPlpVcofYzK95vgeOtrL7RJc/nEntauj5ijQ9nL1HWQrMhAYratbYh0LMHororzg1HuAd1
pdF94GJ1tG/p11KH1yRunIYgzebepiD+/4hmCZ7ngz5mTmVo3ethcwUakRZTNySRQMJ2eNJE
ygdpXWnbDHXuUfcEykZEXsB0xODsWb3BUYFELipYGi+Yxnma26Fbr1ChSIo3l2R/m/1mZvgn
UHW2OSIYdUUt/Sxc1BLasui0neLNRKB3NHrcVDyC0cBrHDiX2THXwWlBjKG4uf54Wv8k9grW
6dJ7EIqnRPhyB8q9p95eqNN6Ht+Ap7V6rWJb8NRtaf0nLpBP64XdLoaeiWLPo5OyskdZcSin
5c+OwHUFHTV6UwqHRhuD3SwXqm+H4lyepvg6jOZlF+qzc8+5q9/jIpkxmu6IhdKr+HEJeRVk
sx49BrqF715As6yscYBBe0HSpDXo1mjjh9TuQxSlcebIkBbqmLgQNS3H5kGIiL++2zHVcv8/
jWbs0eglt7QL7A1265FsQAgB1G0AdhqqL4h2Q2UWsjsSRhArIAD0Cm9X2mMmTaWWZcc9NiOf
owf+ZQy+dQ5rfqB+vfBaSf5ANZDWiYG4icWEi9tPTy4cZFSRQ0NiYtfqec+XunsaOrfN7Pki
97eWuE7d/d8ncN3Y4vLWlX9UcWuNz48nbZ8rZe0Mf38h+zuKVw6ZRO1fCMH/YcEXYjHsb8yq
ebwSo4H1kOrIgqAnR8WhhA3o2+/cFWr5+gGi9QOlqqPS/+tCVciomCT7zSWVJ6iQHFZOVEJV
5CCJRv5Ldd3tWGNbq6vz6Vq+GDLxZGZDT7WSESAk5lgqaS8TDGtplwR6X8oFwWe9DK4e4RhV
C2rvmkB7UYna47NuL0Brrh7Rz1Em0pw6PoXHDmT5Evi+gf2L9C1co+RSL3IlF4BZuHYxeGAy
qN4LC8CytJK5Wane+g0cJyunmZjXotcx5zvVPVgM6HDagVaOz1E1QUr7ZCpK2VbWesYTncIp
4SCl53zYbLXjFU9atR+JLo9YGlvn7EKOK1RqrCIoR5+bDV2jgckzAFow7BQ7+PFF95NKYOG0
9J7r5YIO4d/NxtEMN/ZVk2jH0RA3gGQ9XWIeFNwGZfKWhCn+RVS0Y6YBnyGlyXAhHm2p1Rb4
mZwmpYkbmM9Fn0/0C1ZCMA32Z1oVdwVzXJGLPRo+WhXX/d7AkFhDuht1VEviFntbxB3YHqvi
p/PZXpqZOSOajk/tSaozBTX3wN1ajd2PiJ2l74DEmu24JqEjqDryx1a8Q3dI3PNRm/YZbSqY
39H9HNBmtlPzqEBq4AwZ+o6KKF5aW3HsLAhAQoX9NQmmrWmOLvgoVp9ahSfqCyL+ixcd0/KF
3X/4Gv7QWwNOR9WO7McYdUmdWP36q6P4sdPXNhdOWq99RDoF02C7C7Wvixf5At7iHwAHf37S
E5r5DiVj7kFJaAFizHbcDevcDlHF5BRXfqFOcQ3EDHCRoxJOyFntvF94B3+8Bh0dC+oRUUA6
3eTklfI4CU0ltnY7Jd1T4E40asjUJFueZPWRJmlmE85ST35ykrod1Tt0kk9WaIQS+sQSwYkg
YyFlRg0ciZxIyt3VRFPeiTUd5+cxjYIEGcsxOkQOpdnzZNjz5Ndxsusjyq0JsUXb8DcQVL+b
mPoNxEec0UeDtQ5l9x/A7CPMOjqUGMvWvPpwVn0cW6Y/H5ct/ya8+GOyqUN5DgD467v/+Nev
zth76QKDMDKmzoCgy6sKQ+yK6+syw6AbsOnwKse3ST3HOJi2ULUJ/8SoOVgf40/UoT02KkHH
KUljf1Z2u/mbVeXDW16xymCjZmB/6Dsts7GFNVR9Oboh5UVrGFA0VmRkk3Ed+LMvcsvSKNGA
X4VeEanSL/LLJmJG3o77hOtQfG1omU9eAOI2FCvqIg90Z8028feJf7nBQ5Yj4gh9eocfcseY
kKIDkTsyJ2+860sEBbnc25tyAWWXLpDvQtMORYquWvQbyesG5+G9oZuSTFXTfknGpL7Mb1/q
Kwq+J2LqUrVebXZVOoMUEWmKjojDF+TgYMXCjA1sLQh2VX46zocBip+2nX+3PRhVE1itxzh2
lGDAUOhC6IsuEhBnpZYYEF20lITsIrEO2O1EVVNRWdxL+5gwLxD8UyJMIieYvDINxVEcB9Ol
eW64dd+shhoP1H2domsnVC6/Wo7HoCbMDR6EUxgg+D5heqF9iKLq3LgHRQNoLmtQc3phXJAC
NjY/hUL0HZ9CQWS69ka00ycwvn2zIgQlx0X57aS+si73O2bi/Nxp1Ddptf8M4VkC5VCwk16d
3YeruyjlpeqbHpgnERvTzMdh39rJmWZ3vH5df6f34J3mcJ4OjiskVHBfBFKjqAREjX6ggD6o
0bNoG5MB/E7Wxfuizt7CgAMX8NDNheLoSRsUNu6kbixrAK47LkR3I05MHjzP7G0X9lu6a1V4
emxA452HHK8XjEWVC1F1ksqqwTFBJcWKd4QYoNtIjOU4lvADD+JCwWYX3B74+eUWZ2OPO2C1
LdK7aTf8TN4BfSgMrLR+pLMkfAXj3OItu6W5LIF5ECiInS9pUcw2rIYDJa8im6VZyrhJ6sRN
enRmGhxdH2AD/s8uu39DGy+44Om/BmEvcmFEOwY5GDWe0ntVj+ycAd6o/Lu5iCl6P9KNYC5c
cADx0GHpvnNnIpR9B8+6knfyPHlpE28f1dF9ygf+iNbGD46A1fQyKU3snnGYxmgBiBUj8A13
gxcUfOhHHs/cerEjcjjn3pBv46MTmlpEP7k1C7tQV7Ewp1ibq4UndUyrkYMjCJEbOuzDxVQg
Y3Es/0kfv33vpT7ha0N418jc3LJZsUTKF502pmzV5wv1Bd8c4+w32Kgb8IIKXgb5PKJ+frHA
eyUUht6pz5ecrWxGz2FQ1Ui5eOmNJqYHf0RhfIzie2iDssabbMVKNzxcZZbcjgWrn1tNC9sg
t5rX3QSVlI4gzXmh3mPPPDLzvY1+6XAAcz8yV4iliNHNAUKMKx4lnvMc9wcp1wt1Wi4kDR4W
IuMtg+f6G+xmnHSQ9Jvt+e+JFaEpkm9kJBHHGhDpcuvUmXOrkrOnXCCIt2qwEunlS3zgUITc
T9oXae/EFiDBkO9pKW5RzJTI2nfBuGK2ZpJplXmR8o3AsWcOhMVDWt2J645q2PLVOu3wRSj2
tmL1uMD7rcPG3Bk2IY0i/4JKu67JSkxbRb3SPWFE3abI8S2HgLCgOqX7fOWNaH9qbtllmG+M
MjrlFCdZ0r2ktEK/oLmRCoy1gUoVsBAYzZtuuNq2zVUFchC5ILsR+4FvwPLFX1D9MWUUzfyu
KLZ4t5kvuuENQSDPzQbnhTtV1+B7znQxE7h8VdZFSqegW8zE2dssZDqf1wI1SALcPzRnnKGB
9CGAyDm5oOWAuOF7xR1dKutLzOiJ2JvP9I1815JuxyLIzokkxDvjEbrr25R2F8WOGAcTua67
+VJfasaLlyX60HUeMgSPkyS6ADQW7wGKDovth+yOL1tyajNKzMd3eN/RBXCdKeCBgJGFgvLs
HtRiumOKS4a3r5fk4OU8sJSxja//quGmYrT50VqO/whqWlna2+lR2p+WYzLt1/6mgZjd30Ak
24FO9G65L2iF97eOp9/anfJLh1k7Ojqwm4h+4dHPc8EYDJvbuNoBLo1EmxdHXpjUJp1xJJm8
gPK+JTSz70cXLoUZ7c3Dy/TFQpaIri2Ay6SUJYYSL4j2XhIseJjw7pk7amzZGz9k8X5bNRyu
ZbN2MJM1pgG5IReYMuSOQ7/53rl2TcoscMJPadWD3alnYSzLWPpZ935K5vlIsTahd6khPENw
1WIpYEcHB7q6syd9P03UPpaZcbVdIEDZajqyg1ILtu62LTqBpddXDtq7d/vs3Rc1oOQppNuY
LsXRKjCpEEG32m4X9ZnG1VTu3jTIJUC5VaxE0KkueK46rwBKF0yThUZ7YMG+LzsS69jzkgVP
WwydzrcBU1tTfm6QF23xRncC9aUrYbw8mF7OGX3BGWZIafHQEhtT4m/qESoRe36VwGPwbOSx
+ONEBQ8p3or2IVEGUdrgZW/S0WFqBdjhMlUdnYa2ZtpL1d2V2+VOhAT3iZ5iR2njVvtkqcgI
6dBHBuWx98l8wTde/Q+Cd6RIm/7vSKG2Q9wZgebxtWABdoQFyGSgZWdXbqET1JILElUyZKVI
R1IeuNCAOAfbnxotuj5BevFFqLHEd6wRmKEPNvC/Ruk1uHtOvNmkGjAd7OTV1mBEDZ8yaukt
htTCuPPTm765NEl7aTtimqtr9FmyD51MHMPPMHkJ7ntegXXxiD5gYoXXRZ/pTS66W5FEZSgZ
qMvk+fWIQmg5Pmvfeen9YCLdKZsOhhIkNUxCInCZDbSm5U/PGJ2cRhj4Mhg2V49EDXm/fsOH
GRxgNOdkMmzIsBHz2AyviPtSRhtKjIJWKdp2aL/s4WboG5SJH3kn9cXMSzDnUrc1mBvmHilK
J4HREsBZxrTGfCfvIX2MJbEhgxKT6oCt9KhuBrR7KMEP6TbesSVH4hnGQaHkdogrRskH2jYf
Zt48x8LZYT9Ilf/ZyXg5OM6o+aMSc8zncuDGjvoOSdL7u+boPSAxrzA2xOKMjA7thPO6JK6a
5l6aGWateK9U49Jk9yi9pn7Yy+5suRHj4nbCuDgiD+4+QyKejtbkepE64Pikx5kTcVlu6Sui
lIc5Xe0Y3bnHYZE6IijwEKskWCA/qOqZqS3HBKKJA7eEpdXxcCIjiWb5nW7ynCyFszDkwzFN
IaY+iHE+n2keyzB9jxB/iyCXcUsiD6OdpxNeYLr1D5hcVEeNinhR5xzw9KPDQg1HFcyWOJ89
1w+lNRzi7PvlnsxMz99UQAtEKNnqGFNGgDA4XpgBHaRQafx4I9DBrd/1wzUeBdL3GHDTtAWp
HCa/XBCcqn4I0udphzW701FJrZvhBvT8tsVLNamxsR8K8k/DALaYFBTmkVOCQTArl6Pgrzqt
Hn8ubC5Tq8QfTp0yo7jZAfvttlirvVqrvwU6Jv4g2b/p2uaTnQWpXT0eLwSjTefqIMjb4uIz
RToBWuDN8z9LEHxQgPkmIZvPBvQHV0zmdP4iyovuFZoZ+Fez0JiLiVSMnR8coquRxkk2StvA
tyNN8ZQbb2cHt8qml2UPSvAFHvrekLjmyn4pl5M29Knwh5YK2KD4ObZ90Kwr5xOVjD/9U058
Egi/XxQPXemWnJGXPi400fkhG0AM4SDSl0MT5q5UqJ6OWG/G7NRyC7w/b7U1vRy53JLKvPXG
EI0dix3HdwzVMhIDmFs74Bdx6ozPiYlD2KeEfNPGRRkEP8zVGePMlOs25lEPCdokqVnfTfqe
73d8Zt7U7B9KTujPyUKd1PDPH3XjepWBltOtYIVO6BfYg1gn8+qAHOhWzdCTq4cSI2OdNgKH
KjEgXetLqgWVftEnu96UVzLIWPJ3fDX85c92QvypmDK7A/VKT+lcvjHT8F6acUdq0lupEEBn
CyEDODcO+pX0Ryg87UFUXEDDS6UrYX07Wg+0b64J0NowiiomFjS8PBI0fjDLA22iWLCFiO9E
bKxq+k4T/bxPq6FAnYfQNNGcxmXCWbQHhcQ37iEagY11wTXU8gd/GgHmmjy0pP1ib2xt6s8c
kiLi4LgiFG3Uh5VvCJhTMksh/hKf5oaO7MhQZfO+KxIT/DtbWvstensQDdgol51FdHPkDS5A
iAJTxphDfQ1WnW0HyzrOzg5FttPI64YDHHR9GSHBmQaMdPfyt1qpL+7ftY+7HX1Gpzm3Ro8Y
+HEr6FwusW0aFT3B1mURgS9pBu+S0iRekpVcoB88YYyL+05HZA4e2fpeIbulYBPhH9pF/Mta
laZKwkmaV/aFvqI5UTtPdacH1E2Hfo3myWG1+/Tm0KqsIlbN4Q2azYa+WnLgUJC+KJDEbzEZ
B3ggSxuRSlbab2P5+T5CrrqTyDSnjUdkhZWm1J0wTl/eZRrF5GflIisvFUXf47kYEqEXkV/K
xGZjb2BWstML65rganZ30RsXWj3xbVGLYEXrZY9Bl2GnSiyAgn9F1XB21h/FRME7FheeQir4
ZSRSOpqpCzulz0jij3Pvo6jApvjDDVSGHNyc2S8Uk8w9mtVkbhsI89hnxIjKYA0ITLQm2wPa
HrPrSwgh7adLqPGe0O/Xrz2NZeSxQeDbQQgRntdoNJ6/yiMKejIsbiZY3FgGE5/7Ox/5WUfB
i9xLgGQUNuqdZ0NfO04pEnl1M6QtyHD8N+Hh62Eiunyt0CBGz1LbY7YOKXd4DVvoDnpKlhWT
omIvZ5vLjQu1LtJcf3ZK7PyRjhPd91YAjj3kpQsdh/Kxf9wtrr1n6e4uhpsnyCI9vt3IC4qn
n3l5rb+xk1jAenRu1jyeqBkTJOle+Mnfo00IYzw02D2ET41WA8WG9Ltb1PqToXlDX1/Z2jM0
fUqZVgpjERYKL8KbTGj0sYuFAQQ99tAJOpmvCv4QpfaZLWfj047JNfQGGi4gF+5cvX26m/B0
8yqNtFzFewC/Kr8p9fVkshhJ5YwoeQfrreYL4MFmMuos3d7H7GPaDRVYLtacJsYbFgoObLCh
4Zlt//q1mThyLmunWVe9Th6gnEPEnRZwmVW+8b9wAHGlE2osqLWz+EPtLt7Q6pyjLM1Aa3jJ
hYWrlMA6x6cdvhYEl2pjLaYJP55efhosV3YOJLoncdXcDJ2pRX90+sxQhCc7RxL3xrCWEDnV
Y3eMViL2HOnZzz4UOTsHnd8QZa77AIRNh2cDy5ekMPAiT6kIvXdGmBfoKF7hh2j/8mcRor6k
yguo7cFxkrKsQ/jdzvU/MJ5gfMNCTo3GM/70+9NMHFwFeyYg7h/h90+jlJBs8x/AGPaapZox
RPiCcCVjxZ28QrgimFdgC8MrZOEH8YrZ2CmvfTATp8eOL8KbhcdD4uxHBi3tYEZQLcKS5Dzj
lEWjmGZJrHhOk6RdhmfyskO5WKDOaoW224Vo5k80v3YfF2sP52LhSOJBwLu5WPtMLmZp4f+5
2PO4mNgPP8Lvn0Q0W8jGgpw6FC9ogpXevFF0V15/PfymbR7w6o1zWPF7qIYHxnh7hq50gO54
XTUPHIJF7fHKY4ofj9IfUAPjcSbYorRyjvDDOUcafcas60zy1+gHjyiWIzD/g28sRb0DkVxR
hmuZKye6ezrUvSvpnlDQv5euZsco/G/R0oJ5eiV9/1Fz3rHbTjv7bK355CUD7Ba7t3z2QsLe
7dmJavGZu9EZ84k4I0wmxbHIoVBG5/5A8SV9HzuWgK6A0/fl8M0E1p38JbHalvYrohK5VLZx
ZbujEEafaBY39XYdmi9sP2KhFuo06+SAdZTTBH/Rk1g8j8WI/rv5XFzzG3EU450qQ+9UGfNO
TXD3d4n94GjEqlbCMz6RMSjc4S709ihX+cQn6rlc0oR3Q4Mofpfv0VuD24gf0r/ZHjikbvew
Hd8jgKOEHm5jX6weRWOFnisPxF4uOxGVFQ5191djXJfzXXkNZKh2VCEMYx0E3PNRcKHc0rqi
UFXJ0h8xzmDAUr38ME6wnxu4Lif5wSE8waHkmJsHcSA8ls7XO5RUIYRznPeNC6AqMaGUVkf1
5ePDiMbccWNiMUE5ob+WXbUgLezHlz2xAFsW5JalIgqhCsnIcIZW3I2OeG6xCz8AFnVBeYQ9
wTU5z6XWA6yOYO89jQfkBiI1NMSscwSrGTt/3VU/3rCe+zWJJmu4qZorkLkdkF//uOzIdqjS
90We4L0Kc4jI+hdHllGB+VRIxMXsx6ExL7bzsyHA82NSNoQBCPtyNkSs5ojn+PCMFCjifJjx
A6SgztT5kRdQ5hI+RAWkE4ArrcIz7GmPwqQcZQZyOJSItA1aWYQ70As52ohpspPk6KoZNeKO
YoEFT7PdNG8ZqW0UpfuQqKnrI6na86d1PlVPeh51Lolpl6M7W7W5Uk/mC2zHH9kY2e1QIgY+
+sDRYS5HzO4QpWksmExQEbOjj7ChR9aLoZ7zmTh54eN9A4VEiCm38foiVVp/LxMUHbx/AnFv
x3jozvHtLNv8eTtGR1/t3gV4wvJpg9kSrq8xds19ocOpbWVVaFoy704QN3REu02zQtFmcI/d
46azR4Hjj354LOJEPp3okY/bSEsSTDPxNN3GQ+iJfDpxhy+aDWyhXU934BKguTJblQ2YmS1l
/MBgYv7lKT50u4OCAK3PtQC24A5aHSBgHPXPKQyRdzZ/kAyojdUSRNfZmcTDInJ1pJgHKet2
wDHzFHAsIkZw9NyWjAIeaqI5P78TeqdBhH/dEl2eaoRNO/RDMTq6QjTyZaNuR8lRkfEXzGVi
aFbT+JG0sxh5KY7ADfHIyTtGZELGrhnNBPlMXDjCR33R0pGlxfwpFUsZBlsfuHlIvPiy5UD4
Lka6nAWz6OynBJ9hgEjeK6ImpfoeRjzqLaolGH87ucO7ZbA8ka3Ay8BVYCUTI8F0neAjR6Z0
EqwZ8C6wHAwmpjYC6+0IRq82p1C2ThlQesgLFXkvDaJwYWP7aMfijnZRsH+Y2LKqSNtkPrEs
Y+TJTTKFvIjLL4ZFfe1RAwDw29i625vGhrQNou0cbJ8+R7DmDFpFK4kJDKZLXWbmNJrFZgp1
HP7AaMJotRQzT3UIUu8FtzpljVZe1wwtCsM2S6AiRk97Us5V75u7oi5/xpwUzR3mEg7K9WLj
nwRqOOw7ysBHZ0m+QyCU5jXFyAb0i3317V+PR5d9+BC8UduhBsXgjq9s8W9EnAvEMuV6jOFA
TLGb4uQ8Zhx3EZ9HIFOifgwaL81yWuQQLTQeLTRdF6yaFnVb2OBdJ6SpW7TWzQe6w88SQ99Y
ewlAk/lHnJS/kntmR3VoqeLdLlRuKBSU87fq5udy+xYb8cU5s868ygslVpZn6Q0mscUw1z+U
13gi8MUP777+l9UP37z7fvX9V999/x28r7NqAMX5ZABzb4Xhot1yvT4RBdoQxJf+9TLbGyWr
w1lbikeF2ivuKBJ11VF+r1NFf80hOj/whW749eYSWidffPvtdzzI1Zeff/dV8tIDZ5j5H0Cy
g7kOqvZoZv8NiqQjkZaiAAA=
_ATEOF


cat >right.gz.b64 <<'_ATEOF'
H4sIAPcMGEICA+19a2/kNrLo9/4VjBcz0+30dLKLxflgj31vkpNdDLBns0Cy54G9QUOWaLds
tdSrhz1O4v9+6sFHkaK6255Jzr3ADZBxSyKLZLFYLxaLX3yh8mb32JY3m17Nv1moP3z55R/V
TZs9Fk2tNk3WavXOPP7vXXPVfFjlzfZy9sUXKqsqRfU61epOt/e6WOH7qsx13elC9Y3qN1rt
hit4pYa60C296HW77VRzTQ9//uvf1Z//9hc1v7xQf1hg/U5r+nJdVlp9893f/uv9X/+srptW
FbrPyqqbzX5X1nk1FNCzPO8fd/pSvun6oiqv5Kuy6fpWZ1v5bpvt5OM/Bz0EYDrdB49jCF2f
5Xfhi7asb4KGYaRZ37Ty3fVQ533Z1Fl1KQdy1UAnv6j0hzLPqnWedf1qswu6yCWKxzrblvn6
quyhi+ky3QZmrVjv+pa/+wInV1kHlctmtdmciNf5Jqtv9Joghh+aGsZZ9130vh62ugVI902e
XUXfWn1fdjDC6HWX1WX/GL3s26zuYG63cQNDGb3wLc3um7JQthXs9NlZvtH53Rqa0POFok7P
fp4p9X7+WT1U1bos5rV+WG+hC9e66xeL8xl8tY/wfqeu2+xmq+v+HD4gsc11ARiBLwAc4a3t
ZKpSXSj82K2u9E1Zzxfn8Ooz+07XBb75/PNyAZCU+pn+VcqjmPunXqu8M5DW/LGbl4tzW7xb
yTHZ1+W1mn92UzVXQCQGoa2usg+6WJgSvkX8D5YTIkA1lcdYBx3YavVQ9hv/0eKiE5UF9qiX
UG5tgUBXF+qXX9SogAWEBVy3lXoyvwi1HhdnZ4Wu+iyJ51vADqCBCghc3yKu/XuH79s0BuQk
j5q4gybsxK+uSwDF3YHH9nG9y/rN/FaOgicAaolq1IGFKKL8txL4YNvPgSWdnW2zOw0gyzbV
xjKof+A/Wb8ATN8uwj7qqtMBvJ8j6MdQkas7bj/R1/fzcacQSw77/AEI5S7sa0gd8RP/epo9
zWbhepdPc/ngFlcDIqRdEBegn6PlJBkCkAEXki+xEK1p95WezuPeuCajPjY7prKL37yDCtZ6
P7S1Ou03JXcYBesPbZZDYXgFvXpUVyC/1JtC7/rNG1XpeyAboNxmq97kmxJWclm8WSqQ5AOK
NZDIWY9AuDZKKVXWyLkzlGaq7Ghg8BFmmnhLWStsXXXDFegPuw3pBj+AXCfoajvAqK60omJa
FVmfgXDSoFWAoC0esTRWOPnGQT1R+dC28KN6VFsNcoP6pB408rNdA3UdEwMoDfQZxgTjxCWm
5s016Sz1Iwy1vuk3C66NukhZZz3gBZ9s95ZQsiBmpbN8o5oa38P0cCWE2CE4euo2zQADumKt
pcu2NKjrLO8Vak/2JYPkRrGZrMqHChouEBBzRFB9oO95ViOwbLerSq9FBUwaX+aAp57BA1Eg
EPvZ4u6vX5+p/9igFkUTYTUPtclgVhrq5n3Wlijescdlr1CpqK6hp6pqetTQ4AVC2g0tIRig
3OK8QfP6g27zkiasok4EwLqy0ELkrfJ8pdT3DcICRfJNDwS6be6xYwTWVYVS8686ZFCPzQDj
0gVgIKuJuqFO1oFasVotSAWY+QWzNjTtVxpoCE7MGmpO8tgSqJWWQPKro8rXqrjitfqX+Z/m
J/8Oys/1Iy4L26B61TFeoTduhc0BTwRcvSoX/6c+Ye76yvUIftJnVkdQky30tSIl7uzMa3Hv
PCIvlXmd0zIHdM6zGhY1NLeUKgatY/uFqAWbxPaNLNq9E6haeqiXBgpSIrYg1STo8HZt+44f
i6vVje6dTuBlv0O5qEA8LVC5zDcByQHw1RwIRhJ1Hzonu3+Jw637UrekvJnfVvgG7dOAHmhN
zAn1b9+qS/VlqKql26j1h34tGxKikLSaZLWk9ui6aJUaSXukS7oSrN7I706zjCV7QPvMKfHn
hTotz1PFSBhxOfk9mtS5B7W0xYMOEVct2NLL8Gv3pgs5FX5K6ZeipifdN66KgWYfPV0KEPs1
ddIgucurUGOPFzsrlUHRMeYZ+7eLvbqVnIWGV7lR8gP1+XYEOlxm46pubYyrioWPJftmbSfN
IC22M8YgSCW0yjw3vhgrg8EasAuskctrUkskvvntBzBea+SbwC7fXsK/yBWBDTaWH4rVGgEA
arkaUHMI6WVcCoYSvXTczaGHWjHYWO8APa4IGooCfBJRcnVd+C6P0HU62Vx6muK2Rop8iuDC
AVqI41bPk2q7X1Vs//ihLWhJ+M9s56SgTLepAghxA28vOw0rtkjCbOoc1BvUzNZ+Nrp5GnHP
MZ9Op7v7LDDpuU0aN2MaBaV1k93riJbPVd08LFHLAl0Mdc4H/eYetUKNGiHwOv2/UtQYYdis
x+T0HUVN0L/316QOdkvsYa3QdgVF3mizpP6q7KbVoJaS+p4G4lpfJUnvdKLjlixwbT0Hyy9c
OzxaUDGXrCaXnfE+tqjolttgFrDEKg3k+0ahsqUJcbURejuSUKjmo/p6rYHwcn2WonePi7TT
oDHa0ARCkgvTCFhhuUDfHpr2rjubJYpHyllTJVfmcZJCaBJCqWucStdUxVSX0UYkv5TTrVGx
1ttd/+i6uEQlDgwznqw0HNCls6FKEl8wUjJuWjDE1kIhjf9Da+xRcCIezHKKQI/iJKOGF2ke
PSpHnpXJKvudKV5BBuac0GnR2WIEOBmmxkxFmV2B/YX+i+0W5sQaF7RgMvRJlTnbo1CUbH38
H+gNHREgeIfem+tZDcsNyLJB44/s43K7A5X8JNnCCQLCZWSsUNo6yNRWtzdgVF/pPBs6XnWd
gu9deUUWL9vZsB7JCH8g21P/cwBz9REtSZgqLBePxlrpCKttigEdJtn2qrwZSiA/Xtdka2Pr
K+p8qzsgMwWWBHzOiDs2VXNDLpIcjUf8ApYhGB3ku8jyHCwPRCiweN7wIFtbF2BtG+OkKLs8
awssZKxflA09WN1ZjjAecHhoIj+A1awyhHKvW1oswDr7tgGbvKF/wN62/oCMTGLd3sN03pOD
oW0+lN6B88Dz86bCfsM/mTqxzhsYJIpN6A/Nxl+++Qrs/pumLfvNduX4JjoVCEhVgryompzp
BpEUzGzRkM+laRFW3RQ4jUAfOMB/Ap4BrzybMFaeL3I6ZOoelm1VZdR8p7M23ywBI4hN54xB
Bw8xbZr7N0iaQDp3YCZLzxXNHnSwueu4r6YUms0IqhmA2gCfO50jqpbENHEo6DN7gIkxnjJa
gi3KhcaaKwvsOyhjSDncK82woUhmEcBl1X2ZwbsOqBLFAtIAsvoH9KoQvjucJpwKhtQY/4zR
BZBAc62RSMwUPJQ4a9VD9khbck2FGsaoWYTFzv/Gk/ZSDXWlO9I8rrFF6A1v0LUNu4Lwt3Pk
IYwB3X/9gCoaTBEt4xG1eCoh4sCZ6dRNo9Gqa6AhogByRMLasW4TWC/keQNjAblCeW0WMlJE
Dc1yp5uBluguu0G242YOtKarFpbzhkbOa4e0GAVDL1vRyR30ktHHWo2D1dR24qBEuStxqgxM
6AIwukKjy6TEOTOEaviBwQySj9Ey1eZxh33orGZh3H+ntJJPcUXCsscFCAuvZZrEHgECljRR
qH4VDaHSsjyjofCSwuVjhKFZVsgga+SphTbz5hgWMTdGo3MOmallB/JsZr1QQ92VN7UuFHlS
8/7D+SxyUIVbke8uFfwAeToqJxxZXMI5sWyFWdcDp8gVbezNyOWMWg+tp3XVZIDvOfTAuGYn
RKtzbEHJZdjCpXptl+dU7bIGFa3WLdbG4vw8VRpY5xr7jI5B+M2eQVSMTCvG1CEBjXq4fS2U
cPbQk5VLpjEOE2fZej1wBdDcviqMjXzQC1ZutxZrKMuhY6vYQ2c+Sz/pnIe6QsobdqbTi6WE
xo0mVTMgJmTbmWVpsZxGROCwmAPNjE5qhO1qtt915hw5aEiK/ozcODtEsizgdgV3oWsP58jq
rqc7obcGlVuQ2nNrZDyN/RoBcSHZd96DwC/Ji2B+WrBd+ZOem6262bN8hp9s+LiIdjVC4znn
P/Pd28uyBuKfL4SFT1RpZpW9NSE5nu7gn10dbE0D7MsLQggYcTxc74vh1yCX8MOu/vz3rqqp
AFq1g/dknbV2SGmryGzWIADs+ZNjJVeo/cz0hx1wvLXTN7r5y7nEgZq+jVTl49lLkrXQaEiA
onZtzAz0DoKo7vS55Qj3oK40pg2crI7WLf1amRCdue+nJUi7uHcZiP/fL2H5YkwA6GN2Z4fm
vR62V6ARGTF1QxIJJGyHu1WkfJDWlbXNUBcBdU+gbETkGoYjOuf2+y2ONBK5KOBoXDON8zB3
Q7dZo0Ix128vyYa3682O8A+g6uwKRDDqikb6ObioJbSl7oydEoxEoHfUe1xU3INRx2vsOH9z
fa6jHYcUQ/Fj/cdp/aNYK1imy+5BKJ4S4csVKNeeenehTutFegGe1upzlVqCp35Jmz9pgXxa
L91ysfRMFHueHJSTPcqJQzmscHQErtO0XRkMKe4aLQx21Vyovh30udyRCXUYw8su1JfngYPY
vMdJsn20zRELpVfpLRfyhchqPfo5TI3QKYJmWVljB6P6gqRJazC10caPqT2EKL6mmSNDWqrn
xJaoaTm2iMJMwvndjamW2/9xNOKARi+5ppvgoLO7gGQjQoig7iKw01BDQbQfKrOQ/dE0glgB
AaBXBKvSbVUZKnUsO+2xGfktA/CvU/Cdg9nwA/XLRVBL8gcqgbRODMQPLCVc/Hp68iElo4Ic
XpISu07Pe7nUPVDRu21mLxe5v7bE9eru/30C1/ctLW/9908qbp3x+emk7UulrBvhby9kf0Px
ymGXqP0LIfg/LPhiLMbtjVk191diNLIeMhOdELXkqTiWsBF9h437j0a+foRo/Uip6qn0/3Wh
KmRUSpL96pIqEFRIDmsvKqEocpC5Qf5rdd3tmWNXqquL6VKhGLIxaXZBT9WSUSQk5lgqGS8T
dGvlpgRaX8kJwWczDb4c4RhVC6rvq0B9UYjq47OpL0Abrp7Qz1Em0pg63snHBuT3FfB9C/tn
6Vu4RsmlXhVKTgCzcONiCMDkULwXFoBjaSVzs1K9Cyt4TlZOM7GgRm/i1veqezAZ0OC0A60c
78UagpT2yVSksyts9Iwn2oVTwkFKz8Ww3RnHK+5hGj8SHUBxNLYp2IWcVqjUWEVQnj63WzqK
A4NnADRh2Cg28I9X3Y9qDhNnpPfCTBc0CP9ut55muHKomiQbTobJASTn6RLjoAA5+CZPWtjP
P4uCrs/U4TOkNBlyxL0tjdoCP+en89LGHiwWos0n+gUzIZgG+zOdiruGMa7JxZ4MQa30dX9w
SzhVkc5XPasmcYuDNdIO7IBV8dP57CDNzLwRTdunbifVm4KGe+BqrcbuR8TOKnRAYsl2XJLQ
ERUd+WMrXqF7JO75qE77gjoVjO/Z7RxRZ7ZX86hAauAIGfqegiheWldw7CyIQEKBwyUJpitp
ty54K9bsWsU76ksi/otXHdPyhVt/+Br+0FsLzkTmjuzHFHVJnVj98oun+LHT11UXTtqgfkI6
RcNguwu1r4tXxRLe4h8AB39+NAOahQ4la+7Bl9gCxLjvtBvWux2SiskpzvxSneIciBHgJCcl
nJCzxnm/DDb+eA462hY0PaKgdjoNyjMVcBIaSmru9kq6p8idaNWQqUG2PMjqEw3SjiYepRn8
5CBNPSp37CCfnNCIJfSJI4ITQcZCyowqeBI5kZS7r4qhvBNnOi7OUxoFCTKWY7SJHEuzl8mw
l8mv58muTyi3JsQWLcNfQVD9ZmLqVxAfaUafDNY6lt1/BLNPMOtkV1Is2/Dq41n189gy/fm0
bPlX4cWfkk0dy3MAwJ/e/+e/fXvG3ksfGISRMXUOBF1eVRhip6+vyxyDbsCmw+Mg383rBcbB
tFrVNuATo+Zgfqw/0YT2uKgEE6ckjf1Z2e3nb06Vj0+KpQqDjZqD/WHOxczGFtZQ9eXolFUQ
rWFBUV+RkU3GdeDPXheOpVGygrAIvSJSpV/kl52LEQUr7jMuQxG1sWU+eYiI61CsqI88MI01
u3m4TsIDEgGyPBEn6DPY/JArxoYUHYnckTl5ExyBIijI5d7dlEv4dukD+S4M7VCk6LpFv5E8
snAenz26KclUtfVXZEyahADupTnmEHoipg5mm9lmV6U3SBGR9tMzYvkFOXhYqTBjC9sIgn2F
n57nwwDFz9jOv9kaTKoJrNZjLDxKMGAodKj0VZcIiHNSS3SIDmtKQvaRWEesdqKqqagsbqV9
nDMvEPxTIkwiJxq8shXFVhwH02VFYbl136yHGjfUQ52iaydUrrBYgdugNswNHoRTGCCEPmF6
YXyIoujCugdFBaguS1B1emFdkAI2Vj+Fj+g7PoUPieG6U9Ven8D49u2aEDR/XpTfXuor6/Kw
YybNz71GfZNVh/cQXiRQjgU76dXZv7m6j1Jeq77pgXkSsTHNfBr2bZycWX7H89f1d2YN3hkO
F+jgOENCBQ9FIFVKSkDU6AcK6IMSPYu2MRnA7/lGf9B1/g46HLmAh24hFMdA2qCw8Tt1Y1kD
cP12IbobcWBy43nmzrew39IfzcLdYwsazzwUeLxgLKp8iKqXVE4NTgkqKVaCLcQI3VZirMax
hB+5ERcLNjfhbsMvPlhjcDb2uANWW53dTbvhZ/Ic6YO2sLL6kfaS8BX0c4cn9Vb2sATmUqAg
dj7oRTHbMBselDzObKdmJeMmqRE/6NGeabR1fYQN+D877eEpbzzggrv/BoQ7uoUR7RjkYNV4
ShFWPbJzBnijCs/3Iqbo/Ug3grHwhyOIhzZLD+07E6Ec2ng2hYKd58mDn3j6qE6uU97wR7Q2
YXAEzGaQjWli9YzDNEYTQKwYgW+5GTygEEJ/5vbMbRA7IrtzHnT5Nt07oakl9JNbO7FLdZUK
c0rVuVoGUsfWGjk4ohC5ocM2fEwFMhbP8p/M9tsPQfoUPjaEZ43syS2XWUukjTGpZ8pWfbVU
X/PJMc6gg5W6AQ+o4GGQrxLq59dLPFdCYeid+mrFGc9m9BwHVY2Ui9dBb1J68CcUxs9RfI+t
UNZ4kk2vTcXjVWbJ7ViwhvnZjLCN8rMFzU1QSekJ0u4XmjX2wi2z0NsYfh2OYO7PzDfiKGJ0
coAQ4z+PktcFjvujlOulOi2XkgaPC5EJpiFw/Q1uMU46SPrt7vy3xIrQFMk3MpKIYw2IdLlN
5s25dckZWC4QxDs1OIn0+jU+cChCESb+S9T3YguQYMn3tBSnKGZKZP67YFwxW7MJucpCZ3wi
cOyZA2HxkFV34rijGnZ8tM44fBGKO61YPS7xfOuwtWeGbUijyOGgsq5r8hJTX1GrdE4YUbfV
Bb7lEBAWVKd0nq+8EfVP7Sm7HHOWUVaoguIkSzqXlFXoF7QnUoGxNlCoAhYCvXnbDVe7trmq
QA4iF2Q3Yj/wCVg++AuqP6adopHfab3Ds8180A1PCAJ5brc4LlyppgSfc6aDmcDlq7LWGe2C
7jCbZ+8ymZmcYEvUIAlw/9CccZYH0ocAIuf1gpoD4obPFXd0qKwvMSsoYm8xM6f6fU06HYsg
Oy+SEO+MR2iubzNaXRQ7Yh1M5LruFitzqBkPXpboQze5zBA8DpLoAtCoPwAUExbbD/kdH7bk
9GiU3I/P8L6nA+Am28ADASMLBeXZPajFdMYUpwxPX6/Iwcu5ZCnrGx//VcNNxWgLo7U8/xHU
tHa0t9ejdPhA/mTqsMNVIzF7uIJI2AONmNVyr2mGD9dOp/DanzbMhFl7OjqymYR+EdDPS8FY
DNvTuMYBLo1El1tHHpg0Jp11JNncgvK8JVRz70cHLoUZHYwjyBbGQpaIrtXAZTLKNEOJF0T9
IJEWPEx49+wZNbbsrR9Sf9hVDYdrucwfzGStaUBuyCWmHbnj0G8+d25ckzKTnPBTOvVgf/pa
6MsqlcLWv5+SeSFSnE0YHGqI9xB8sVQa2dHGgSnu7cnQT5O0j2V2XWMXCFCumInsoPSErT9t
i05g6fWVnQ7O3b549SUNKLkL6RemT5O0jkwqRNCtsdtFeaZxNZX/N4tyCVA2FScRTKoLHqvJ
K4DSBVNtodEeWbAfyo7EOra8YsHT6qEz+TZgaBvK8Q3yotVvTSNQXroSxtODKeq80RftYcaU
lg4tcTEl4aIeoRKxFxaJPAYvRh6LP05U8JDhqegQEmUhpQVe9jalHaZWgBUu093Rbmhrh71S
3V25W+1FSHSe6Cm1lTaudUiWiqySHn1kUD73PFko+Maz/1HwninSpv97plDbI+6sQAv4WjQB
e8ICZELRsnMztzRJbskFiSoZslKkIykPfGhAmoMdTq+WnJ8oRfky1ljSK9YKzNgHG/lfk/Qa
nT0n3mxTDdgG9vJqZzCihk9ZucwSQ2ph3IUpUt9e2sS/tBwxVdY1+izZh04mjuVnmLwE1z3P
wEY/og+YWOG17nOzyEVza5KoDCUHdZk8vwFRCC0nZO17D70fTaR7ZdPRUKLEiPOYCHxmA6Np
hcOzRienIga+DIbN1SNRQ9Fv3vJmBgcYLTiZDBsybMQ8NsMb4r6U0YYSo6BVirYd2i8HuBn6
BmXySF5JvZ4FSep8+rcGc8PcI0WZJDBGAnjLmOaYz+Q9ZI+pJDZkUGJSHbCVHtXNgHYPJfgh
3SbYtuRIPMs4KJTcdXHNKPlI2+bjzJuXWDh77Aep8r84oS8Hx1k1f/TFbvP5PLqprb5jEv3+
pnl+j0juK4wNMTkjo8M44YImiatmRZBmhlkrnis1uLTZPcqgahj2sj/jbsK4uJ0wLp6RS/eQ
IZFOaWtzvUgdcLzT482JtCx39JVQyuO8sK6Pft/juEgdERR4jFUSTVAYVPXC9JhjAjHEgUvC
0eq4O4meJDMFT1d5SZbCWRzy4ZmmEFMfxThfzjSfyzBDjxDfZ1DIuCWRh9GN0wsvMN36B0xQ
aqJGRbyodw4E+tFxoYajAnZJnM9e6ocyGg5x9sNyT2a353sZ0AIRSrZ6jikjQFgcL22HjlKo
DH6CHpjg1u/74Rq3AulOB1w0rSaVw+aXi4JT1d+j9HnGYc3udFRS62a4AT2/bfFQTWZt7AdN
/mnowA6TgsI4CkowCGblahT8VWfV40/aZWB1Svzx1CmzktsVcNhuS9U6qLWGS6Bj4o9y0tqm
XabWWZSQNuDxQjC6JLQegjwtLq46MgnQIm9eeLVBdCkB801CNu8NmEtbbPZ1vlXlVfcGzQz8
a1hoysVEKsbeS4voaKR1ko3SNvDpSPt5yo23t4Fb5dLLsgclusWH7iwSx1zZL+Vz0sY+Fb6s
ScMCxSvdDkFzrpzP1Hx8fVA5ca0Q3oGUDl3pVpy7ly4ommj8mAUgunAU6cuuCXNXKlRPz5hv
xuzUdAu8v2y2Db08c7ollQXzjSEaeyY7je8UqmUkBjC3dsBbdeqc94mJQ7inOfmmrYsyCn5Y
qDPGmf1u6thH0yWoM8/s/G6zD3y+40v7pmb/0PyE/pws1UkN//zeVK7XOWg53Rpm6IR+gT2I
ZfKgDMiBbt0MPbl6KDEylmkTcKgQAzKlvqFSUOhns7MbDHktg4wlf8dXw7/80Q2Ir5sp8ztQ
r8yQzuUbO4zgpe13oiS9lQoBNLYUMoBz46BfyVxkEWgPouASKl4qUwjLu94GoENzTYA2hlFS
MXGg4eUzQeOlWwFoG8WCNUR8J2JjXdNdT/TzPqsGjToPoWmiOvXLhrMYDwqJb1xD1AMX64Jz
aOQP/rQCzFd5aEn7xdbY2jRXJZIi4uH4TyjaqA0n3xAwp2SWQvw1Pi0sHbmeocoW3E2SEvx7
azr7LXl6EA3YJJedJXRz5A0+QIgCU8aYQ30NZp1tB8c6zs6ORbbXyOuGAxxMeRkhwZkGrHQP
8rc6qS/O37WP+x19Vqc5d0aP6PjzZtC7XFLLNCl6oqXLIgJf0gjez0ubeEkW8oF+8IQxLv6u
j8QYArINvUJuScEiwj+0iviXsyptkTknaV67F+aI5kTpIjONHlE2G/oNmifHle6zm2OLsopY
NcdXaLZbuvnkyK4gfVEgSVhjMg7wSJY2IpW8dPdrhfk+Yq66l8gMp01HZMWFptSdOE5fnmUa
xeTn5TIvLxVF3+O+GBJhEJFfysRmY29gXrLTC8va4Gp2d9EbH1o9cT+pQ7Ci+XLboKu4USUm
QMG/omg8OuePYqLgFYsTTyEV/DIRKZ3M1IWN0lWU+OM8uFgV2BRf3EDfkIPbPfulYpK5R7Oa
zG0LYZG6ioyoDOaAwCRLsj1g7DE3v4QQ0n66OVU+EPr9+eeBxjLy2CDw3SCECI9r1JvAXxUQ
BT1ZFjcTLG4sg4nP/Y23/Jyj4FURJECyChu1zqOhG5MzikRe3wxZCzIc/51z9003EV2hVmgR
Y0Zp7DFXhpQ7PIYtdAczJMeKSVFxh7Pt4cal2uisMFdXiZU/0nGS694JwLGHvPSh4/B97B/3
k+vOWfqzi/HiibJIj0838oTi7mdRXpt7euYOsOmdHzX3J2nGREm6l2Hy92QVwhh3DVYP4dOg
1UJxIf3+FLW5drRo6PaVndtDM7uUWaUwFmGp8CC8zYRGl10sLSBosYdG0Ml8pfkyS+MzW83G
ux2Tcxh0NJ5A/rh39g7pbsLTzbM00nIVrwG8mX5bmuPJZDGSyplQ8o7WW+0t4tFisuosnd7H
7GPGDRVZLs6cJsYbfxQc2GLDwLPL/vPP7cCRczk7zbnqTfIA5R0ifreAvznlG/+LO5BWOqHE
kmp7iz/W7tIVnc45ytIMtIaHXFi4Sglscny67htBcKm2zmKa8OOZ6afOcmHvQKJzElfNzdDZ
UvTHpM+MRfh8b0/S3hjWEhK7euyOMUrEgS09d+2DLtg56P2GKHP9BRAuHZ4LLF+RwsCTPKUi
9MEeYaHRUbzGy2z/5Y8iRH1FhZdQOoDjJWVZx/C7vfN/ZDzB+ISFHBr1Z3x9/NNMbFxFayYi
7n/A7x9HKSHZ5j+CMRw0Sw1jSPAF4UrGgnt5hXBFMK/AGpZXyI8fxStmY6e88cFM7B57vghv
lgEPSbMfGbS0hxlBsQRLkuNMUxb1YpolseI5TZJuGl7Iy47lYpE6axTabh+imT/R+NpDXKw9
novFPUkHAe/nYu0LuZijhf/PxV7GxcR6+Af8/lFEs8VsLMqpQ/GCNljp7VtFZ+XNDeQ3bfOA
R2+8w4rfQzHcMMbTM3SkA3TH66p54BAsqo9HHjO8PMpcoAbG40ywRWnlPMMP5x1pdI1Z19nk
r8kLjyiWIzL/ozuWkt6BRK4oy7XskRPTPG3q3pV0TihqP0hXs6cX4X22NGGBXklXRBrOO3bb
GWefK7WYPGSAzWLzjs9eSNj7PTtJLT73JzpTPhFvhMmkOA45FMro3R8ovqTvY88U0BFwul8O
30xg3ctfEqtt6e7nlMilb1v/bX8UwuiaZ3FSb9+m+dK1IyZqqU7zTnbYRDlN8BcziOXLWIxo
v1ssxDG/EUex3qky9k6VKe/UBHd/P3cXjiasaiU84xMZg+IV7kNvn+Uqn7jmnr9LmghOaBDF
7/M9BnNwm/BDhifbI4fU7QG2E3oEsJfQwm3q1utRNFbsuQpAHOSyE1FZcVf33xrjm1zsy2sg
Q7WTCmEc6yDgno+CC+WSNgWFqkqW/ohxRh2W6uXHcYLD3MA3OckPjuEJHiXPOXmQBsJ96UK9
Q0kVQjjHed34AKoSE0oZddQcPj6OaOwZNyYWG5QT+2vZVQvSwl0ZHYgFWLIgtxwVUQhVTEaW
M7TibHTCc4tNhAGwqAvKLewJrsl5Lo0e4HQEd+5p3CHfEamhIWa9I1jN2Pnrj/rxgg3cr/Nk
soabqrkCmdsB+fWPq45shyr7oIs5nquwm4isf3FkGX2wV4UkXMxhHBrzYjc+FwK8eE7KhjgA
4VDOhoTVnPAcH5+RAkVcCDO9gRSVmdo/CgLKfMKHpID0AnBtVHiGPe1RmJSjzECOh5KQtlEt
h3APeil7mzBN9pIcHTWjStxQKrDgabaf5h0jdZWSdB8TNTX9TKoO/GldSNWTnkeTS2La5ej3
Vl2u1JPFEuvxJRsjux2+iI6PLjg6zuWI2R2SNI0fJhNUpOzoZ9jQI+vFUs/5TOy88Pa+hUIi
xH538foiVVp/LxMUHb1+InHv+njsygntLFf9ZSvGRF/tXwW4w/JFg9kSrq8xds3f0OHVtrLS
hpbsuxPEDW3R7rJcK1oM/rF73HZuK3B86UfAIk7k04np+biOtCTBNBNP03UChJ7IpxO/+WLY
wA7q9XQGbg40V+brsgEzs6WMHxhMzL8CxYdOd1AQoPO5amALfqPVAwLGUf+UQRd5ZfOFZEBt
rJYgus7OJB6WiaMjehGlrNsDx45TwHGIGMExY1sxCrirc8P5+Z3QOy0iwuOW6PJUI2y6rh+L
0dERopEvG3U7So6KjF8zl0mhWU3jR9LOcuSleAZuiEdOnjEiEzJ1zGgmyGfiwBE+moOWniwd
5k/ps5RhsPSBm8fEiy9bDoTvUqTLWTB1564SfIEBInmviJqU6nsc8WiWqJFgfHdyh2fLYHoS
S4GngYvATM6tBDNlokuO7NdJsLbD+8ByMJgY2ghssCIYvcacQtk6ZUCZLi9V4r00iOKJTa2j
PZM7WkXR+mFiyyudtfPFxLSMkScXyRTyEi6/FBbNsUcDAMDvUvPuThpb0raIdmNwbYYcwZkz
aBWtJSYwmC7zmZmzZBabKdRx+AOjCaPVMsw81SFIsxb87JQ1WnldM7QoDNt8DgUxejqQcr54
39zpuvwJc1I0d5hLOPpuJhv/zKGEx76nDHz0luR7BEJpXjOMbEC/2Lff/en56HIPH4M3qjvU
oBjc8ZEt/o2I84FY9rvpY9wR+9kPcXIcM467SI8jkilJPwb1l0Y5LXKIFpqAFpqui2bNiLod
LPCuE9LUT1rrxwPN4bXE0DaWXgHQ+eITDiqcyQOjozI0Velml6qwFArK+Tt181O5e4eV+OCc
nWee5aUSM8ujDDozd59hrL8rr3FH4Ou/v//Lv67//tf3P6x/+Pb7H76H93VeDaA4nwxg7q0x
XLRbbTYn4oMxBPFleLzMtUbJ6nDUjuJRoQ4+dxSJuu4ov9epor92E50f+EA3/Hp7CbXnX3/3
3ffcyfU3X33/7fx1AM4y89+BZAdzHVTt0cj+G9MlJMfaogAA
_ATEOF



$at_traceoff
echo "$at_srcdir/t_merge_4.at:566: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o ancestor.gz ancestor.gz.b64
else
  \$UNB64_COMMAND <ancestor.gz.b64 >ancestor.gz
fi
"
echo t_merge_4.at:566 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o ancestor.gz ancestor.gz.b64
else
  $UNB64_COMMAND <ancestor.gz.b64 >ancestor.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o ancestor.gz ancestor.gz.b64
else
  $UNB64_COMMAND <ancestor.gz.b64 >ancestor.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_4.at:566: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_4.at:566: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"ancestor.gz\" != \"ancestor.gz\"; then
    mv ancestor.gz ancestor.gz
  fi
  gunzip ancestor.gz
else
  \$UNGZ_COMMAND <ancestor.gz >ancestor
fi
"
echo t_merge_4.at:566 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "ancestor.gz" != "ancestor.gz"; then
    mv ancestor.gz ancestor.gz
  fi
  gunzip ancestor.gz
else
  $UNGZ_COMMAND <ancestor.gz >ancestor
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "ancestor.gz" != "ancestor.gz"; then
    mv ancestor.gz ancestor.gz
  fi
  gunzip ancestor.gz
else
  $UNGZ_COMMAND <ancestor.gz >ancestor
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_4.at:566: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_4.at:567: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o left.gz left.gz.b64
else
  \$UNB64_COMMAND <left.gz.b64 >left.gz
fi
"
echo t_merge_4.at:567 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o left.gz left.gz.b64
else
  $UNB64_COMMAND <left.gz.b64 >left.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o left.gz left.gz.b64
else
  $UNB64_COMMAND <left.gz.b64 >left.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_4.at:567: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_4.at:567: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"left.gz\" != \"left.gz\"; then
    mv left.gz left.gz
  fi
  gunzip left.gz
else
  \$UNGZ_COMMAND <left.gz >left
fi
"
echo t_merge_4.at:567 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "left.gz" != "left.gz"; then
    mv left.gz left.gz
  fi
  gunzip left.gz
else
  $UNGZ_COMMAND <left.gz >left
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "left.gz" != "left.gz"; then
    mv left.gz left.gz
  fi
  gunzip left.gz
else
  $UNGZ_COMMAND <left.gz >left
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_4.at:567: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_4.at:568: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o right.gz right.gz.b64
else
  \$UNB64_COMMAND <right.gz.b64 >right.gz
fi
"
echo t_merge_4.at:568 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o right.gz right.gz.b64
else
  $UNB64_COMMAND <right.gz.b64 >right.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o right.gz right.gz.b64
else
  $UNB64_COMMAND <right.gz.b64 >right.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_4.at:568: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_4.at:568: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"right.gz\" != \"right.gz\"; then
    mv right.gz right.gz
  fi
  gunzip right.gz
else
  \$UNGZ_COMMAND <right.gz >right
fi
"
echo t_merge_4.at:568 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "right.gz" != "right.gz"; then
    mv right.gz right.gz
  fi
  gunzip right.gz
else
  $UNGZ_COMMAND <right.gz >right
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "right.gz" != "right.gz"; then
    mv right.gz right.gz
  fi
  gunzip right.gz
else
  $UNGZ_COMMAND <right.gz >right
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_4.at:568: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



ANC=a2c50da63f01b242d8aaeb34d65e48edf0fef21b
LEFT=8d5a2273e0e3da4aa55ff731e7152a673b63f08a
RIGHT=6745b398ffecec36bc4fc45598e678b3391d91b2

AVER=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify ancestor`
LVER=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify left`
RVER=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify right`

$at_traceoff
echo "$at_srcdir/t_merge_4.at:578: test \$AVER = \$ANC"
echo t_merge_4.at:578 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $AVER = $ANC" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $AVER = $ANC ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $AVER = $ANC ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_4.at:578: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_4.at:579: test \$LVER = \$LEFT"
echo t_merge_4.at:579 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $LVER = $LEFT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $LVER = $LEFT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $LVER = $LEFT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_4.at:579: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_4.at:580: test \$RVER = \$RIGHT"
echo t_merge_4.at:580 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $RVER = $RIGHT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $RVER = $RIGHT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $RVER = $RIGHT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_4.at:580: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_4.at:582: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net fload <ancestor"
echo t_merge_4.at:582 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <ancestor" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <ancestor ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <ancestor ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_4.at:582: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_4.at:583: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net fload <left"
echo t_merge_4.at:583 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <left" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <left ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <left ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_4.at:583: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_4.at:584: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net fload <right"
echo t_merge_4.at:584 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <right" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <right ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload <right ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_4.at:584: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_4.at:586: diff3 -E --merge left ancestor right"
echo t_merge_4.at:586 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; diff3 -E --merge left ancestor right ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; diff3 -E --merge left ancestor right ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_4.at:586: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_4.at:587: mv stdout merge.diff3"
echo t_merge_4.at:587 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout merge.diff3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout merge.diff3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_4.at:587: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_4.at:589: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net fmerge \$ANC \$LEFT \$RIGHT"
echo t_merge_4.at:589 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fmerge $ANC $LEFT $RIGHT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fmerge $ANC $LEFT $RIGHT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fmerge $ANC $LEFT $RIGHT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_4.at:589: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_4.at:590: mv stdout merge.monotone"
echo t_merge_4.at:590 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout merge.monotone ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout merge.monotone ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_4.at:590: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_4.at:592: cmp merge.diff3 merge.monotone"
echo t_merge_4.at:592 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp merge.diff3 merge.monotone ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp merge.diff3 merge.monotone ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_4.at:592: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  126 ) # 126. t_db_missing.at:1: db missing
    at_setup_line='t_db_missing.at:1'
    at_desc='db missing'
    $at_quiet $ECHO_N "126: db missing                                   $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "126. t_db_missing.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_db_missing.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_db_missing.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_missing.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_missing.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_db_missing.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_missing.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_missing.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_db_missing.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_missing.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_missing.at:2: rm test_keys"
echo t_db_missing.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_missing.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_db_missing.at:4: mkdir foo"
echo t_db_missing.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_missing.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >foo/foo.db <<'_ATEOF'
foo file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_db_missing.at:9: (cd foo && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db= ls keys)"
echo t_db_missing.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd foo && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db= ls keys)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd foo && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db= ls keys) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd foo && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db= ls keys) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_db_missing.at:9: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_missing.at:10: (cd foo && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=foo.db ls keys)"
echo t_db_missing.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd foo && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=foo.db ls keys)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd foo && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=foo.db ls keys) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd foo && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=foo.db ls keys) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_db_missing.at:10: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_missing.at:11: (cd foo && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=missing.db ls keys)"
echo t_db_missing.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd foo && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=missing.db ls keys)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd foo && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=missing.db ls keys) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd foo && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=missing.db ls keys) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_db_missing.at:11: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  127 ) # 127. t_database_check.at:3: database check
    at_setup_line='t_database_check.at:3'
    at_desc='database check'
    $at_quiet $ECHO_N "127: database check                               $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "127. t_database_check.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_database_check.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_database_check.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_database_check.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_database_check.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:5: rm test_keys"
echo t_database_check.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >file1 <<'_ATEOF'
file 1
_ATEOF

cat >file2 <<'_ATEOF'
file 2
_ATEOF

cat >file3 <<'_ATEOF'
file 3
_ATEOF


cat >fileX <<'_ATEOF'
coopers
_ATEOF


cat >fileY <<'_ATEOF'
vitamin
_ATEOF


$at_traceoff
echo "$at_srcdir/t_database_check.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file1"
echo t_database_check.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --branch=test --message='add file1'"
echo t_database_check.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --branch=test --message='add file1'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --branch=test --message='add file1' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --branch=test --message='add file1' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REV1=`cat _MTN/revision`
ROST1=`$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --norc db execute "select id from rosters" | tail -n 1`

$at_traceoff
echo "$at_srcdir/t_database_check.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file2"
echo t_database_check.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --branch=test --message='add file2'"
echo t_database_check.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --branch=test --message='add file2'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --branch=test --message='add file2' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --branch=test --message='add file2' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REV2=`cat _MTN/revision`
FILE2=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify file2`

$at_traceoff
echo "$at_srcdir/t_database_check.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file3"
echo t_database_check.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --branch=test --message='add file3'"
echo t_database_check.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --branch=test --message='add file3'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --branch=test --message='add file3' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --branch=test --message='add file3' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

FILE3=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify file3`
REV3=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_database_check.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot"
echo t_database_check.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:36: grep 'database is good' stderr"
echo t_database_check.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'database is good' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'database is good' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# remove file2 from the database invalidating roster2 and roster3
# both of which include this file

$at_traceoff
echo "$at_srcdir/t_database_check.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db execute \"delete from files where id='\$FILE2'\""
echo t_database_check.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute \"delete from files where id='$FILE2'\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "delete from files where id='$FILE2'" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "delete from files where id='$FILE2'" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_database_check.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot"
echo t_database_check.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_database_check.at:43: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:44: grep 'database is good' stderr"
echo t_database_check.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'database is good' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'database is good' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_database_check.at:44: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:45: grep 'problems detected' stderr"
echo t_database_check.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'problems detected' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'problems detected' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:46: grep '1 missing file' stderr"
echo t_database_check.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '1 missing file' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '1 missing file' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:47: grep '2 incomplete roster' stderr"
echo t_database_check.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '2 incomplete roster' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '2 incomplete roster' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:48: grep '2 incomplete revision' stderr"
echo t_database_check.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '2 incomplete revision' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '2 incomplete revision' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:49: grep 'total problems detected: 5' stderr"
echo t_database_check.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'total problems detected: 5' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'total problems detected: 5' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:50: grep '5 serious' stderr"
echo t_database_check.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '5 serious' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '5 serious' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# add an unreferenced file
$at_traceoff
echo "$at_srcdir/t_database_check.at:54: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net fload < fileX"
echo t_database_check.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload < fileX" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload < fileX ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload < fileX ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# create an unreferenced roster by deleting the revision. Note that this will increment
# the "missing revision" count by one for further checks
$at_traceoff
echo "$at_srcdir/t_database_check.at:57: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add fileY"
echo t_database_check.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add fileY" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add fileY ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add fileY ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:58: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --branch=test --message='to be removed'"
echo t_database_check.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --branch=test --message='to be removed'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --branch=test --message='to be removed' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --branch=test --message='to be removed' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REV4=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_database_check.at:60: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db execute \"delete from revisions where id='\$REV4'\""
echo t_database_check.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute \"delete from revisions where id='$REV4'\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "delete from revisions where id='$REV4'" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "delete from revisions where id='$REV4'" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# revert to the old workspace state
$at_traceoff
echo "$at_srcdir/t_database_check.at:62: echo \$REV3 > _MTN/revision"
echo t_database_check.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV3 > _MTN/revision" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV3 > _MTN/revision ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV3 > _MTN/revision ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# remove another file too
$at_traceoff
echo "$at_srcdir/t_database_check.at:64: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db execute \"delete from files where id='\$FILE3'\""
echo t_database_check.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute \"delete from files where id='$FILE3'\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "delete from files where id='$FILE3'" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "delete from files where id='$FILE3'" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:64: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_database_check.at:66: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot"
echo t_database_check.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_database_check.at:66: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:67: grep '1 unreferenced file' stderr"
echo t_database_check.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '1 unreferenced file' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '1 unreferenced file' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:67: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:68: grep '1 unreferenced roster' stderr"
echo t_database_check.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '1 unreferenced roster' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '1 unreferenced roster' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:69: grep '2 missing files' stderr"
echo t_database_check.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '2 missing files' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '2 missing files' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_database_check.at:71: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db execute \"delete from revision_ancestry\""
echo t_database_check.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute \"delete from revision_ancestry\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "delete from revision_ancestry" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "delete from revision_ancestry" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:72: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot"
echo t_database_check.at:72 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_database_check.at:72: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:73: grep '2 mismatched parent' stderr"
echo t_database_check.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '2 mismatched parent' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '2 mismatched parent' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:73: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:74: grep '2 mismatched child' stderr"
echo t_database_check.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '2 mismatched child' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '2 mismatched child' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# bogus revision ancestry entries

XDELTA_CC="877cfe29db0f60dec63439857fe78673b9d55346"
XDELTA_HH="68d15dc01398c7bb375b1a90fbb420bebef1bac7"

$at_traceoff
echo "$at_srcdir/t_database_check.at:81: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db execute \"insert into revision_ancestry values('\$XDELTA_CC', '\$XDELTA_HH')\""
echo t_database_check.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute \"insert into revision_ancestry values('$XDELTA_CC', '$XDELTA_HH')\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "insert into revision_ancestry values('$XDELTA_CC', '$XDELTA_HH')" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "insert into revision_ancestry values('$XDELTA_CC', '$XDELTA_HH')" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:81: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:82: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot"
echo t_database_check.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_database_check.at:82: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:83: grep '3 mismatched parent' stderr"
echo t_database_check.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '3 mismatched parent' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '3 mismatched parent' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:84: grep '3 mismatched child' stderr"
echo t_database_check.at:84 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '3 mismatched child' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '3 mismatched child' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:84: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:85: grep '3 missing revision' stderr"
echo t_database_check.at:85 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '3 missing revision' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '3 missing revision' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:85: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_database_check.at:87: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db execute \"delete from roster_deltas where id='\$ROST1'\""
echo t_database_check.at:87 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute \"delete from roster_deltas where id='$ROST1'\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "delete from roster_deltas where id='$ROST1'" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "delete from roster_deltas where id='$ROST1'" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:87: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:88: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot"
echo t_database_check.at:88 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_database_check.at:88: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# ROSTER TODO: need check_sane_history equivalent in db check
#AT_CHECK(grep '3 revisions with bad history' stderr, [0], [ignore], [ignore])

$at_traceoff
echo "$at_srcdir/t_database_check.at:92: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db execute \"delete from revisions where id='\$REV1'\""
echo t_database_check.at:92 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute \"delete from revisions where id='$REV1'\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "delete from revisions where id='$REV1'" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "delete from revisions where id='$REV1'" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:92: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:93: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot"
echo t_database_check.at:93 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_database_check.at:93: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:94: grep '4 missing revision' stderr"
echo t_database_check.at:94 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '4 missing revision' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '4 missing revision' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:94: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# ROSTER TODO
#AT_CHECK(grep '2 revisions with bad history' stderr, [0], [ignore], [ignore])

echo "$REV2:comment:this is a test:tester@test.net:bogus sig" | sha1sum | read HASH

$at_traceoff
echo "$at_srcdir/t_database_check.at:100: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db execute \"insert into revision_certs values ('\$HASH', '\$REV2', 'comment', 'this is a test', 'tester@test.net', 'bogus sig')\""
echo t_database_check.at:100 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute \"insert into revision_certs values ('$HASH', '$REV2', 'comment', 'this is a test', 'tester@test.net', 'bogus sig')\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "insert into revision_certs values ('$HASH', '$REV2', 'comment', 'this is a test', 'tester@test.net', 'bogus sig')" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "insert into revision_certs values ('$HASH', '$REV2', 'comment', 'this is a test', 'tester@test.net', 'bogus sig')" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:100: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:101: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot"
echo t_database_check.at:101 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_database_check.at:101: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:102: grep '1 bad sig' stderr"
echo t_database_check.at:102 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '1 bad sig' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '1 bad sig' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:102: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_database_check.at:104: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db execute \"delete from revision_certs where name = 'date'\""
echo t_database_check.at:104 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute \"delete from revision_certs where name = 'date'\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "delete from revision_certs where name = 'date'" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "delete from revision_certs where name = 'date'" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:104: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:105: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot"
echo t_database_check.at:105 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_database_check.at:105: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:106: grep '2 missing certs' stderr"
echo t_database_check.at:106 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '2 missing certs' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '2 missing certs' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:106: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:107: grep '4 mismatched certs' stderr"
echo t_database_check.at:107 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '4 mismatched certs' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '4 mismatched certs' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:107: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_database_check.at:109: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db execute \"delete from public_keys\""
echo t_database_check.at:109 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute \"delete from public_keys\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "delete from public_keys" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "delete from public_keys" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:109: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:110: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot"
echo t_database_check.at:110 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check --ticker=dot ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_database_check.at:110: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:111: grep '1 missing key' stderr"
echo t_database_check.at:111 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '1 missing key' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '1 missing key' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:111: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check.at:112: grep '13 unchecked signatures' stderr"
echo t_database_check.at:112 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '13 unchecked signatures' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '13 unchecked signatures' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check.at:112: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  128 ) # 128. t_add_owndb.at:1: (minor) add own db
    at_setup_line='t_add_owndb.at:1'
    at_desc='(minor) add own db'
    $at_quiet $ECHO_N "128: (minor) add own db                           $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "128. t_add_owndb.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_add_owndb.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_add_owndb.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_owndb.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_owndb.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_add_owndb.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_owndb.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_owndb.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_add_owndb.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_owndb.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_owndb.at:2: rm test_keys"
echo t_add_owndb.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_owndb.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



#Adding the current in-use DB should fail
# <Sircus> ...It *really* seems like adding the db to the db is something that should be caught and an error message thrown...
# <Sircus> (What's revert supposed to do when you revert the db? :-)
# ...
# <njs> and add a note in a comment that "revert" is the case that really moves this
# from being "stupid user tricks" to "something we should protect users from" :-)
$at_traceoff
echo "$at_srcdir/t_add_owndb.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add test.db"
echo t_add_owndb.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add test.db" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add test.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add test.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_owndb.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_owndb.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls known"
echo t_add_owndb.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_owndb.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_owndb.at:12: grep 'test.db' stdout"
echo t_add_owndb.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'test.db' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'test.db' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_add_owndb.at:12: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add_owndb.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add ."
echo t_add_owndb.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_owndb.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_owndb.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls known"
echo t_add_owndb.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_owndb.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_owndb.at:16: grep 'test.db' stdout"
echo t_add_owndb.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'test.db' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'test.db' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_add_owndb.at:16: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add_owndb.at:18: mkdir subdir"
echo t_add_owndb.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir subdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir subdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_owndb.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_owndb.at:19: cp test.db subdir"
echo t_add_owndb.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db subdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db subdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_owndb.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add_owndb.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=subdir/test.db add subdir/test.db"
echo t_add_owndb.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=subdir/test.db add subdir/test.db" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=subdir/test.db add subdir/test.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=subdir/test.db add subdir/test.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_owndb.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_owndb.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=subdir/test.db ls known"
echo t_add_owndb.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=subdir/test.db ls known" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=subdir/test.db ls known ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=subdir/test.db ls known ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_owndb.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_owndb.at:23: grep 'subdir/test.db' stdout"
echo t_add_owndb.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'subdir/test.db' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'subdir/test.db' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_add_owndb.at:23: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# If it's not an in-use DB, it should work, though
$at_traceoff
echo "$at_srcdir/t_add_owndb.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add subdir/test.db"
echo t_add_owndb.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add subdir/test.db" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add subdir/test.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add subdir/test.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_owndb.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_owndb.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls known"
echo t_add_owndb.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_owndb.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_owndb.at:28: grep 'subdir/test.db' stdout"
echo t_add_owndb.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'subdir/test.db' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'subdir/test.db' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_owndb.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  129 ) # 129. t_can_execute.at:1: can execute things
    at_setup_line='t_can_execute.at:1'
    at_desc='can execute things'
    $at_quiet $ECHO_N "129: can execute things                           $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "129. t_can_execute.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_can_execute.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_can_execute.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_can_execute.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_can_execute.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_can_execute.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_can_execute.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_can_execute.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_can_execute.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_can_execute.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_can_execute.at:2: rm test_keys"
echo t_can_execute.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_can_execute.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
blah blah
_ATEOF


cat >cphook.lua <<'_ATEOF'
function note_commit(new_id, certs)
	local pid
	local ret = -1
	pid = spawn("cp", "testfile", "testfile.copied")
	if (pid == -1) then
		return nil
	end
	ret, pid = wait(pid)
end
_ATEOF

$at_traceoff
echo "$at_srcdir/t_can_execute.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add cphook.lua"
echo t_can_execute.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add cphook.lua" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add cphook.lua ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add cphook.lua ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_can_execute.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_can_execute.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=cphook.lua commit --message 'test'"
echo t_can_execute.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=cphook.lua commit --message 'test'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=cphook.lua commit --message 'test' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=cphook.lua commit --message 'test' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_can_execute.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_can_execute.at:19: test -f testfile.copied"
echo t_can_execute.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f testfile.copied ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f testfile.copied ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_can_execute.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  130 ) # 130. t_diff_binary.at:1: diff a binary file
    at_setup_line='t_diff_binary.at:1'
    at_desc='diff a binary file'
    $at_quiet $ECHO_N "130: diff a binary file                           $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "130. t_diff_binary.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_diff_binary.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_diff_binary.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_binary.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_binary.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_diff_binary.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_binary.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_binary.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_diff_binary.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_binary.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_binary.at:2: rm test_keys"
echo t_diff_binary.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_binary.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_diff_binary.at:3: echo \$UNB64_COMMAND"
echo t_diff_binary.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_binary.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test -n "`command -v gunzip`" 2>/dev/null; then
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  UNGZ_COMMAND="gunzip -c"
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_diff_binary.at:3: echo \$UNGZ_COMMAND"
echo t_diff_binary.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNGZ_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_binary.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# diff should probably not display the contents of binary files

cat >binary.gz.b64 <<'_ATEOF'
H4sICIXmI0IAA2JpbmFyeQCdk9suA1EUhte0U6Y0lGpRwQgapIeEJgQRQZ1Vm4zzuUrapOEC
iTv1EC68gCfxEH0Bb9EL/5pZTSejLljJl3+v9e+9V/fe05fU9qqiKFQLF7mJs8V3VUtCfRHL
S5JOXhqjPgpTk5mDMuYAHVMYD2oqcAMDufGqakwAeUA8RTADa5nPkEIMrye/5Zu1D4/G5LFh
tJnMvuy7IBX4FXgmnJPlq0IBmxTQm9GR6zYv8/WYrwYVqr55NCaKWtTmZ+FTg6jtXw6qN418
XI/pJ0rFXKKUj5WKd0/P8Yf7+KRV98vZ19J7ctf1uAK3Mp4DsyDu2N4AC2BC8n6wLmvnpcbn
GAKD3AdwpxnxYo79dsEKOJX8ELSBE3ABNkELOAJnIFQ/phmjol5wLOMdcAB6ybqv2ltPifLF
8rezZfsd+7bxkuilaFr0HGRARPKw4yxZgGumYTAAUvQzcqL8eNPgWnJ8WrQMNkBPg3X/Cf4P
8Ht32mquX+ZyBES7/tinXXTEUddBt4x9YFzGHaKt0ucbE4RMjAAEAAA=
_ATEOF



$at_traceoff
echo "$at_srcdir/t_diff_binary.at:18: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o binary.gz binary.gz.b64
else
  \$UNB64_COMMAND <binary.gz.b64 >binary.gz
fi
"
echo t_diff_binary.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o binary.gz binary.gz.b64
else
  $UNB64_COMMAND <binary.gz.b64 >binary.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o binary.gz binary.gz.b64
else
  $UNB64_COMMAND <binary.gz.b64 >binary.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_binary.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_binary.at:18: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"binary.gz\" != \"binary.gz\"; then
    mv binary.gz binary.gz
  fi
  gunzip binary.gz
else
  \$UNGZ_COMMAND <binary.gz >binary
fi
"
echo t_diff_binary.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "binary.gz" != "binary.gz"; then
    mv binary.gz binary.gz
  fi
  gunzip binary.gz
else
  $UNGZ_COMMAND <binary.gz >binary
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "binary.gz" != "binary.gz"; then
    mv binary.gz binary.gz
  fi
  gunzip binary.gz
else
  $UNGZ_COMMAND <binary.gz >binary
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_binary.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_diff_binary.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add binary"
echo t_diff_binary.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add binary" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add binary ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add binary ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_binary.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_binary.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_diff_binary.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_binary.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_binary.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff"
echo t_diff_binary.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_binary.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_binary.at:23: grep [^[:print:]] stdout"
echo t_diff_binary.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep [^[:print:]] stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep [^[:print:]] stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_diff_binary.at:23: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  131 ) # 131. t_command_completion.at:1: command completion
    at_setup_line='t_command_completion.at:1'
    at_desc='command completion'
    $at_quiet $ECHO_N "131: command completion                           $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "131. t_command_completion.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_command_completion.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_command_completion.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_command_completion.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_command_completion.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_command_completion.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_command_completion.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_command_completion.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_command_completion.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_command_completion.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_command_completion.at:2: rm test_keys"
echo t_command_completion.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_command_completion.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_command_completion.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_command_completion.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_command_completion.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_command_completion.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net st"
echo t_command_completion.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net st" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net st ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net st ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_command_completion.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_command_completion.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net s"
echo t_command_completion.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net s" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net s ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net s ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_command_completion.at:6: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_command_completion.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff"
echo t_command_completion.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_command_completion.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_command_completion.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net dif"
echo t_command_completion.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net dif" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net dif ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net dif ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_command_completion.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_command_completion.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net di"
echo t_command_completion.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net di" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net di ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net di ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_command_completion.at:10: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  132 ) # 132. t_merge_rename_file_and_rename_dir.at:3: merge rename file and rename dir
    at_setup_line='t_merge_rename_file_and_rename_dir.at:3'
    at_desc='merge rename file and rename dir'
    $at_quiet $ECHO_N "132: merge rename file and rename dir             $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "132. t_merge_rename_file_and_rename_dir.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_merge_rename_file_and_rename_dir.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_merge_rename_file_and_rename_dir.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_merge_rename_file_and_rename_dir.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:5: rm test_keys"
echo t_merge_rename_file_and_rename_dir.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:7: mkdir foo"
echo t_merge_rename_file_and_rename_dir.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >foo/bar <<'_ATEOF'
foo bar file
_ATEOF


# common ancestor

$at_traceoff
echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_merge_rename_file_and_rename_dir.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge_rename_file_and_rename_dir.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


BASE=`cat _MTN/revision`

# rename directory

$at_traceoff
echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:19: mv foo foof"
echo t_merge_rename_file_and_rename_dir.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv foo foof ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv foo foof ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename foo foof"
echo t_merge_rename_file_and_rename_dir.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo foof" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo foof ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo foof ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge_rename_file_and_rename_dir.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# rename file in directory


$at_traceoff
echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:25: rm -rf _MTN.old"
echo t_merge_rename_file_and_rename_dir.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:25: mv  _MTN _MTN.old"
echo t_merge_rename_file_and_rename_dir.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE ."
echo t_merge_rename_file_and_rename_dir.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:25: test \$PROBE_R_SHA = \$BASE"
echo t_merge_rename_file_and_rename_dir.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:26: mv foo/bar foo/barf"
echo t_merge_rename_file_and_rename_dir.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv foo/bar foo/barf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv foo/bar foo/barf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename foo/bar foo/barf"
echo t_merge_rename_file_and_rename_dir.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo/bar foo/barf" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo/bar foo/barf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo/bar foo/barf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge_rename_file_and_rename_dir.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# merge heads to arrive at foof/barf

$at_traceoff
echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge"
echo t_merge_rename_file_and_rename_dir.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net co dir"
echo t_merge_rename_file_and_rename_dir.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co dir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:34: test -d dir/foof"
echo t_merge_rename_file_and_rename_dir.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -d dir/foof ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -d dir/foof ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:35: test -f dir/foof/barf"
echo t_merge_rename_file_and_rename_dir.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f dir/foof/barf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f dir/foof/barf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_rename_file_and_rename_dir.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


find dir

      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  133 ) # 133. t_diff_restrict.at:1: diff respects restrictions
    at_setup_line='t_diff_restrict.at:1'
    at_desc='diff respects restrictions'
    $at_quiet $ECHO_N "133: diff respects restrictions                   $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "133. t_diff_restrict.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_diff_restrict.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_diff_restrict.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_restrict.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_restrict.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_diff_restrict.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_restrict.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_restrict.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_diff_restrict.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_restrict.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_restrict.at:2: rm test_keys"
echo t_diff_restrict.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_restrict.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >file1 <<'_ATEOF'
1: data 1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_diff_restrict.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file1"
echo t_diff_restrict.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_restrict.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >file2 <<'_ATEOF'
2: data 1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_diff_restrict.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file2"
echo t_diff_restrict.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_restrict.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_diff_restrict.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_diff_restrict.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_restrict.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV0=`cat _MTN/revision`

cat >file1 <<'_ATEOF'
1: data 2
_ATEOF

cat >file2 <<'_ATEOF'
2: data 2
_ATEOF


$at_traceoff
echo "$at_srcdir/t_diff_restrict.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_diff_restrict.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_restrict.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV1=`cat _MTN/revision`

cat >file1 <<'_ATEOF'
1: data 3
_ATEOF

cat >file2 <<'_ATEOF'
2: data 3
_ATEOF


$at_traceoff
echo "$at_srcdir/t_diff_restrict.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff file1"
echo t_diff_restrict.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff file1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_restrict.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_restrict.at:24: grep file1 stdout"
echo t_diff_restrict.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file1 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file1 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_restrict.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_restrict.at:25: grep file2 stdout >/dev/null"
echo t_diff_restrict.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file2 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file2 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_diff_restrict.at:25: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_diff_restrict.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff --revision=\$REV0 file1"
echo t_diff_restrict.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision=$REV0 file1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision=$REV0 file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision=$REV0 file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_restrict.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_restrict.at:28: grep file1 stdout"
echo t_diff_restrict.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file1 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file1 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_restrict.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_restrict.at:29: grep file2 stdout >/dev/null"
echo t_diff_restrict.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file2 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file2 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_diff_restrict.at:29: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_diff_restrict.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff --revision=\$REV0 --revision=\$REV1 file1"
echo t_diff_restrict.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision=$REV0 --revision=$REV1 file1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision=$REV0 --revision=$REV1 file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision=$REV0 --revision=$REV1 file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_restrict.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_restrict.at:32: grep file1 stdout"
echo t_diff_restrict.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file1 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file1 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_restrict.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_restrict.at:33: grep file2 stdout >/dev/null"
echo t_diff_restrict.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file2 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file2 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_diff_restrict.at:33: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_diff_restrict.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff --revision=\$REV1 --revision=\$REV0 file1"
echo t_diff_restrict.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision=$REV1 --revision=$REV0 file1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision=$REV1 --revision=$REV0 file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision=$REV1 --revision=$REV0 file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_restrict.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_restrict.at:36: grep file1 stdout"
echo t_diff_restrict.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file1 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file1 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_restrict.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_restrict.at:37: grep file2 stdout >/dev/null"
echo t_diff_restrict.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep file2 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep file2 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_diff_restrict.at:37: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  134 ) # 134. t_cat_file_by_name.at:1: cat -r REV PATH
    at_setup_line='t_cat_file_by_name.at:1'
    at_desc='cat -r REV PATH'
    $at_quiet $ECHO_N "134: cat -r REV PATH                              $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "134. t_cat_file_by_name.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_cat_file_by_name.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_cat_file_by_name.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_cat_file_by_name.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:2: rm test_keys"
echo t_cat_file_by_name.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >r0testfile <<'_ATEOF'
r0 test file
_ATEOF

cat >r0otherfile <<'_ATEOF'
r0 other file
_ATEOF

cat >r1testfile <<'_ATEOF'
r1 test file
_ATEOF

cat >subfile <<'_ATEOF'
data in subfile
_ATEOF


$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:13: cp r0testfile testfile"
echo t_cat_file_by_name.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp r0testfile testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp r0testfile testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:14: cp r0otherfile otherfile"
echo t_cat_file_by_name.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp r0otherfile otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp r0otherfile otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:15: mkdir subdir"
echo t_cat_file_by_name.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir subdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir subdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:16: cp subfile subdir/testfile"
echo t_cat_file_by_name.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp subfile subdir/testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp subfile subdir/testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile otherfile subdir/testfile"
echo t_cat_file_by_name.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile otherfile subdir/testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile otherfile subdir/testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile otherfile subdir/testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_cat_file_by_name.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


R0=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:21: cp r1testfile testfile"
echo t_cat_file_by_name.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp r1testfile testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp r1testfile testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_cat_file_by_name.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


R1=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net cat -r \$R0 testfile"
echo t_cat_file_by_name.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cat -r $R0 testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cat -r $R0 testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cat -r $R0 testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:26:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_cat_file_by_name.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:27: cmp stdout r0testfile"
echo t_cat_file_by_name.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout r0testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout r0testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net cat -r \$R0 otherfile"
echo t_cat_file_by_name.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cat -r $R0 otherfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cat -r $R0 otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cat -r $R0 otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:30:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_cat_file_by_name.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:31: cmp stdout r0otherfile"
echo t_cat_file_by_name.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout r0otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout r0otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net cat -r \$R1 testfile"
echo t_cat_file_by_name.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cat -r $R1 testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cat -r $R1 testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cat -r $R1 testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:34:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_cat_file_by_name.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:35: cmp stdout r1testfile"
echo t_cat_file_by_name.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout r1testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout r1testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:37: cd subdir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net cat -r \$R0 testfile"
echo t_cat_file_by_name.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cat -r $R0 testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cat -r $R0 testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd subdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cat -r $R0 testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:37: mv stdout output1"
echo t_cat_file_by_name.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:37:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_cat_file_by_name.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:37: cat subfile"
echo t_cat_file_by_name.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat subfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat subfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:37: mv stdout output2"
echo t_cat_file_by_name.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:37:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_cat_file_by_name.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:37: cmp output1 output2"
echo t_cat_file_by_name.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:39: rm -rf _MTN"
echo t_cat_file_by_name.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net cat -r \$R0 testfile"
echo t_cat_file_by_name.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cat -r $R0 testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cat -r $R0 testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cat -r $R0 testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:41: mv stdout output1"
echo t_cat_file_by_name.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:41:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_cat_file_by_name.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:41: cat r0testfile"
echo t_cat_file_by_name.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat r0testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat r0testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:41: mv stdout output2"
echo t_cat_file_by_name.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:41:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_cat_file_by_name.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:41: cmp output1 output2"
echo t_cat_file_by_name.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net cat -r \$R0 no_such_file"
echo t_cat_file_by_name.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cat -r $R0 no_such_file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cat -r $R0 no_such_file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cat -r $R0 no_such_file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:43: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cat_file_by_name.at:44: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net cat -r \$R0 \"\""
echo t_cat_file_by_name.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cat -r $R0 \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cat -r $R0 "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cat -r $R0 "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_cat_file_by_name.at:44: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  135 ) # 135. t_epoch.at:1: client absorbs and checks epochs
    at_setup_line='t_epoch.at:1'
    at_desc='client absorbs and checks epochs'
    $at_quiet $ECHO_N "135: client absorbs and checks epochs             $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "135. t_epoch.at:1: testing ..."
      $at_traceon





# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_epoch.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_epoch.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_epoch.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_epoch.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch.at:4: rm test_keys"
echo t_epoch.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_epoch.at:5: cp test.db test2.db"
echo t_epoch.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch.at:5: cp -r keys/ keys2"
echo t_epoch.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch.at:5: cp test.db test3.db"
echo t_epoch.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch.at:5: cp -r keys/ keys3"
echo t_epoch.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT




cat >testfile <<'_ATEOF'
version 0 data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_epoch.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_epoch.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_epoch.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_epoch.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


VER0=`cat _MTN/revision`




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4



$at_traceoff
echo "$at_srcdir/t_epoch.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_epoch.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null




# check that the second db got our epoch

$at_traceoff
echo "$at_srcdir/t_epoch.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net list epochs"
echo t_epoch.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch.at:15: mv stdout expout"
echo t_epoch.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs"
echo t_epoch.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# check that epochs are only sent for netsync'ed branches
$at_traceoff
echo "$at_srcdir/t_epoch.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs"
echo t_epoch.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch.at:19: mv stdout orig-epochs"
echo t_epoch.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout orig-epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout orig-epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >testfile2 <<'_ATEOF'
other data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_epoch.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile2"
echo t_epoch.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_epoch.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah"
echo t_epoch.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Run an irrelevant netsync, just to force epochs to be regenerated


# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve otherbranch &
sleep 4


$at_traceoff
echo "$at_srcdir/t_epoch.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua sync localhost:\$_PORT otherbranch"
echo t_epoch.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua sync localhost:$_PORT otherbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua sync localhost:$_PORT otherbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua sync localhost:$_PORT otherbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null


# Run the real netsync



# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4



$at_traceoff
echo "$at_srcdir/t_epoch.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_epoch.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



$at_traceoff
echo "$at_srcdir/t_epoch.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs"
echo t_epoch.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch.at:30: mv stdout new-epochs"
echo t_epoch.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout new-epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout new-epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch.at:31: cmp orig-epochs new-epochs"
echo t_epoch.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp orig-epochs new-epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp orig-epochs new-epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_epoch.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net list epochs"
echo t_epoch.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch.at:32: mv stdout firstout"
echo t_epoch.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout firstout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout firstout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs"
echo t_epoch.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch.at:32: mv stdout secondout"
echo t_epoch.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout secondout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout secondout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch.at:32: cmp firstout secondout"
echo t_epoch.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp firstout secondout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp firstout secondout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_epoch.at:32: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile3 <<'_ATEOF'
some data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_epoch.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile3"
echo t_epoch.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_epoch.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_epoch.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


VER1=`cat _MTN/revision`

# change the epochs in the first db
$at_traceoff
echo "$at_srcdir/t_epoch.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db set_epoch testbranch 12345"
echo t_epoch.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch testbranch 12345" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch testbranch 12345 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch testbranch 12345 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_epoch.at:40: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db set_epoch testbranch aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
echo t_epoch.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch testbranch aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch testbranch aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch testbranch aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db set_epoch otherbranch aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
echo t_epoch.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch otherbranch aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch otherbranch aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch otherbranch aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# this should *fail* to sync


# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4

# This should probably expect an exit value of 1, but ATM the netsync
# client doesn't report errors in its exit value.
#NETSYNC_CLIENT_RUN(pull, testbranch, 1)


$at_traceoff
echo "$at_srcdir/t_epoch.at:49: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_epoch.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



$at_traceoff
echo "$at_srcdir/t_epoch.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net list epochs"
echo t_epoch.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch.at:53: grep testbranch stdout"
echo t_epoch.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testbranch stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testbranch stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch.at:54: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs"
echo t_epoch.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch.at:55: grep testbranch stdout"
echo t_epoch.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testbranch stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testbranch stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_epoch.at:56: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net list epochs"
echo t_epoch.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch.at:56: mv stdout firstout"
echo t_epoch.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout firstout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout firstout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch.at:56: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs"
echo t_epoch.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch.at:56: mv stdout secondout"
echo t_epoch.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout secondout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout secondout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch.at:56: cmp firstout secondout"
echo t_epoch.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp firstout secondout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp firstout secondout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_epoch.at:56: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# confirm, we did not get the new revision
$at_traceoff
echo "$at_srcdir/t_epoch.at:59: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$VER1"
echo t_epoch.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $VER1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $VER1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $VER1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_epoch.at:59: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  136 ) # 136. t_epoch_server.at:1: server absorbs and checks epochs
    at_setup_line='t_epoch_server.at:1'
    at_desc='server absorbs and checks epochs'
    $at_quiet $ECHO_N "136: server absorbs and checks epochs             $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "136. t_epoch_server.at:1: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_epoch_server.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_epoch_server.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_epoch_server.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_epoch_server.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:3: rm test_keys"
echo t_epoch_server.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_epoch_server.at:4: cp test.db test2.db"
echo t_epoch_server.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:4: cp -r keys/ keys2"
echo t_epoch_server.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:4: cp test.db test3.db"
echo t_epoch_server.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:4: cp -r keys/ keys3"
echo t_epoch_server.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT



cat >testfile <<'_ATEOF'
some data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add testfile"
echo t_epoch_server.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message=foo --branch=testbranch"
echo t_epoch_server.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message=foo --branch=testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message=foo --branch=testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message=foo --branch=testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

VER0=`cat _MTN/revision`




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4



$at_traceoff
echo "$at_srcdir/t_epoch_server.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:\$_PORT testbranch"
echo t_epoch_server.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null




# check that the first db got our epoch

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net list epochs"
echo t_epoch_server.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:15: mv stdout expout"
echo t_epoch_server.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs"
echo t_epoch_server.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# check that epochs are only sent for netsync'ed branches
$at_traceoff
echo "$at_srcdir/t_epoch_server.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net list epochs"
echo t_epoch_server.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:19: mv stdout orig-epochs"
echo t_epoch_server.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout orig-epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout orig-epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >otherfile <<'_ATEOF'
other data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add otherfile"
echo t_epoch_server.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add otherfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message=foo --branch=otherbranch"
echo t_epoch_server.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message=foo --branch=otherbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message=foo --branch=otherbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message=foo --branch=otherbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# Run an irrelevant netsync, just to force epochs to be regenerated


# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve otherbranch &
sleep 4


$at_traceoff
echo "$at_srcdir/t_epoch_server.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua sync localhost:\$_PORT otherbranch"
echo t_epoch_server.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua sync localhost:$_PORT otherbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua sync localhost:$_PORT otherbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua sync localhost:$_PORT otherbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null


# Run the real netsync



# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4



$at_traceoff
echo "$at_srcdir/t_epoch_server.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:\$_PORT testbranch"
echo t_epoch_server.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



$at_traceoff
echo "$at_srcdir/t_epoch_server.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net list epochs"
echo t_epoch_server.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:31: mv stdout new-epochs"
echo t_epoch_server.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout new-epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout new-epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:32: cmp orig-epochs new-epochs"
echo t_epoch_server.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp orig-epochs new-epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp orig-epochs new-epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_epoch_server.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net list epochs"
echo t_epoch_server.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:33: mv stdout firstout"
echo t_epoch_server.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout firstout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout firstout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs"
echo t_epoch_server.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:33: mv stdout secondout"
echo t_epoch_server.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout secondout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout secondout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:33: cmp firstout secondout"
echo t_epoch_server.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp firstout secondout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp firstout secondout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_epoch_server.at:33: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
new version of data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message=foo --branch=testbranch"
echo t_epoch_server.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message=foo --branch=testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message=foo --branch=testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message=foo --branch=testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

VER1=`cat _MTN/revision`

# change the epochs in the second db
$at_traceoff
echo "$at_srcdir/t_epoch_server.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db set_epoch testbranch aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
echo t_epoch_server.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch testbranch aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch testbranch aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch testbranch aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db set_epoch otherbranch aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
echo t_epoch_server.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch otherbranch aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch otherbranch aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch otherbranch aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# this should *fail* to sync


# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4

# This should probably expect an exit value of 1, but ATM the netsync
# client doesn't report errors in its exit value.
#NETSYNC_CLIENT_RUN(pull, testbranch, 1)


$at_traceoff
echo "$at_srcdir/t_epoch_server.at:49: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_epoch_server.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



$at_traceoff
echo "$at_srcdir/t_epoch_server.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net list epochs"
echo t_epoch_server.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:53: grep testbranch stdout"
echo t_epoch_server.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testbranch stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testbranch stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:54: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs"
echo t_epoch_server.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:55: grep testbranch stdout"
echo t_epoch_server.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testbranch stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testbranch stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_epoch_server.at:56: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net list epochs"
echo t_epoch_server.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:56: mv stdout firstout"
echo t_epoch_server.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout firstout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout firstout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:56: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs"
echo t_epoch_server.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:56: mv stdout secondout"
echo t_epoch_server.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout secondout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout secondout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_server.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_server.at:56: cmp firstout secondout"
echo t_epoch_server.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp firstout secondout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp firstout secondout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_epoch_server.at:56: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# confirm, we did not get the new revision
$at_traceoff
echo "$at_srcdir/t_epoch_server.at:59: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision \$VER1"
echo t_epoch_server.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $VER1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $VER1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $VER1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_epoch_server.at:59: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  137 ) # 137. t_epoch_unidirectional.at:1: epochs are not sent upstream by pull
    at_setup_line='t_epoch_unidirectional.at:1'
    at_desc='epochs are not sent upstream by pull'
    $at_quiet $ECHO_N "137: epochs are not sent upstream by pull         $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "137. t_epoch_unidirectional.at:1: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_epoch_unidirectional.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_epoch_unidirectional.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_unidirectional.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_unidirectional.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_epoch_unidirectional.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_unidirectional.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_unidirectional.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_epoch_unidirectional.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_unidirectional.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_unidirectional.at:3: rm test_keys"
echo t_epoch_unidirectional.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_unidirectional.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_epoch_unidirectional.at:4: cp test.db test2.db"
echo t_epoch_unidirectional.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_unidirectional.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_unidirectional.at:4: cp -r keys/ keys2"
echo t_epoch_unidirectional.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_unidirectional.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_unidirectional.at:4: cp test.db test3.db"
echo t_epoch_unidirectional.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_unidirectional.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_unidirectional.at:4: cp -r keys/ keys3"
echo t_epoch_unidirectional.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_unidirectional.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT



# This is important, because if I only have read-only access to your
# database, I shouldn't be able to clutter it with random epochs...


cat >testfile <<'_ATEOF'
some data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_epoch_unidirectional.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_epoch_unidirectional.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_unidirectional.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_epoch_unidirectional.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_epoch_unidirectional.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_unidirectional.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_epoch_unidirectional.at:13: rm -rf _MTN"
echo t_epoch_unidirectional.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_unidirectional.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_unidirectional.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 setup --branch=testbranch ."
echo t_epoch_unidirectional.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_unidirectional.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >otherfile <<'_ATEOF'
some data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_epoch_unidirectional.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add testfile"
echo t_epoch_unidirectional.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_unidirectional.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_unidirectional.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message=foo --branch=testbranch.subbranch"
echo t_epoch_unidirectional.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message=foo --branch=testbranch.subbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message=foo --branch=testbranch.subbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message=foo --branch=testbranch.subbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_unidirectional.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve 'testbranch.*' &
sleep 4



$at_traceoff
echo "$at_srcdir/t_epoch_unidirectional.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT 'testbranch.*'"
echo t_epoch_unidirectional.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT 'testbranch.*'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT 'testbranch.*' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT 'testbranch.*' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_unidirectional.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null





$at_traceoff
echo "$at_srcdir/t_epoch_unidirectional.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net list epochs"
echo t_epoch_unidirectional.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_unidirectional.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_unidirectional.at:22: mv stdout firstout"
echo t_epoch_unidirectional.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout firstout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout firstout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_unidirectional.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_unidirectional.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs"
echo t_epoch_unidirectional.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 list epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_unidirectional.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_unidirectional.at:22: mv stdout secondout"
echo t_epoch_unidirectional.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout secondout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout secondout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_epoch_unidirectional.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_epoch_unidirectional.at:22: cmp firstout secondout"
echo t_epoch_unidirectional.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp firstout secondout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp firstout secondout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_epoch_unidirectional.at:22: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  138 ) # 138. t_vars.at:1: vars
    at_setup_line='t_vars.at:1'
    at_desc='vars'
    $at_quiet $ECHO_N "138: vars                                         $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "138. t_vars.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_vars.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_vars.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_vars.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_vars.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_vars.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_vars.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_vars.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_vars.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_vars.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_vars.at:2: rm test_keys"
echo t_vars.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_vars.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_vars.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net set domain1 key1 orig_value"
echo t_vars.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net set domain1 key1 orig_value" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net set domain1 key1 orig_value ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net set domain1 key1 orig_value ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_vars.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_vars.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net set domain1 key1 overwritten_value"
echo t_vars.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net set domain1 key1 overwritten_value" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net set domain1 key1 overwritten_value ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net set domain1 key1 overwritten_value ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_vars.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_vars.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net set domain1 key2 other_value"
echo t_vars.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net set domain1 key2 other_value" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net set domain1 key2 other_value ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net set domain1 key2 other_value ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_vars.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_vars.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net set domain2 key1 other_domain_value"
echo t_vars.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net set domain2 key1 other_domain_value" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net set domain2 key1 other_domain_value ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net set domain2 key1 other_domain_value ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_vars.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_vars.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net set domain2 key2 yet_another_value"
echo t_vars.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net set domain2 key2 yet_another_value" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net set domain2 key2 yet_another_value ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net set domain2 key2 yet_another_value ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_vars.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_vars.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net unset domain2 key2"
echo t_vars.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net unset domain2 key2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net unset domain2 key2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net unset domain2 key2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_vars.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_vars.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net unset domain2 key2"
echo t_vars.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net unset domain2 key2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net unset domain2 key2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net unset domain2 key2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_vars.at:10: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# FIXME: use a less lame output format
cat >domain1_vars <<'_ATEOF'
domain1: key1 overwritten_value
domain1: key2 other_value
_ATEOF

cat >domain2_vars <<'_ATEOF'
domain2: key1 other_domain_value
_ATEOF

$at_traceoff
echo "$at_srcdir/t_vars.at:18: cat domain1_vars domain2_vars > all_vars"
echo t_vars.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat domain1_vars domain2_vars > all_vars ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat domain1_vars domain2_vars > all_vars ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_vars.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_vars.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls vars"
echo t_vars.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls vars" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls vars ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls vars ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_vars.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_vars.at:21:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_vars.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_vars.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_vars.at:22: cmp all_vars stdout"
echo t_vars.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp all_vars stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp all_vars stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_vars.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_vars.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls vars domain1"
echo t_vars.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls vars domain1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls vars domain1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls vars domain1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_vars.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_vars.at:24:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_vars.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_vars.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_vars.at:25: cmp domain1_vars stdout"
echo t_vars.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp domain1_vars stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp domain1_vars stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_vars.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_vars.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls vars domain2"
echo t_vars.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls vars domain2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls vars domain2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls vars domain2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_vars.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_vars.at:27:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_vars.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_vars.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_vars.at:28: cmp domain2_vars stdout"
echo t_vars.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp domain2_vars stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp domain2_vars stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_vars.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  139 ) # 139. t_netsync_defaults.at:1: default server/pattern
    at_setup_line='t_netsync_defaults.at:1'
    at_desc='default server/pattern'
    $at_quiet $ECHO_N "139: default server/pattern                       $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "139. t_netsync_defaults.at:1: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_netsync_defaults.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_netsync_defaults.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_netsync_defaults.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:3: rm test_keys"
echo t_netsync_defaults.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:4: cp test.db test2.db"
echo t_netsync_defaults.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:4: cp -r keys/ keys2"
echo t_netsync_defaults.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:4: cp test.db test3.db"
echo t_netsync_defaults.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:4: cp -r keys/ keys3"
echo t_netsync_defaults.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT




cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_netsync_defaults.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_netsync_defaults.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


TESTBRANCH_R=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
stuff stuff
_ATEOF



$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah"
echo t_netsync_defaults.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


OTHERBRANCH_R=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
nonsense nonsense
_ATEOF



$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=thirdbranch commit --message blah-blah"
echo t_netsync_defaults.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=thirdbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=thirdbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=thirdbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


THIRDBRANCH_R=`cat _MTN/revision`



# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch otherbranch thirdbranch &
sleep 4


# First make sure netsync with explicit server/pattern override defaults
$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 set database default-server nonsense"
echo t_netsync_defaults.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 set database default-server nonsense" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 set database default-server nonsense ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 set database default-server nonsense ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 set database default-include-pattern nonsense"
echo t_netsync_defaults.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 set database default-include-pattern nonsense" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 set database default-include-pattern nonsense ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 set database default-include-pattern nonsense ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_netsync_defaults.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --branch=testbranch --revision=\$TESTBRANCH_R testdir1"
echo t_netsync_defaults.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --branch=testbranch --revision=$TESTBRANCH_R testdir1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --branch=testbranch --revision=$TESTBRANCH_R testdir1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --branch=testbranch --revision=$TESTBRANCH_R testdir1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:28: test -f testdir1/testfile"
echo t_netsync_defaults.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f testdir1/testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f testdir1/testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Now make sure explicit server with default pattern works...
$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 set database default-server nonsense"
echo t_netsync_defaults.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 set database default-server nonsense" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 set database default-server nonsense ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 set database default-server nonsense ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 set database default-include-pattern otherbranch"
echo t_netsync_defaults.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 set database default-include-pattern otherbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 set database default-include-pattern otherbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 set database default-include-pattern otherbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT "
echo t_netsync_defaults.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT " in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT  ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT  ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --branch=otherbranch --revision=\$OTHERBRANCH_R testdir2"
echo t_netsync_defaults.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --branch=otherbranch --revision=$OTHERBRANCH_R testdir2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --branch=otherbranch --revision=$OTHERBRANCH_R testdir2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --branch=otherbranch --revision=$OTHERBRANCH_R testdir2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:35: test -f testdir2/testfile"
echo t_netsync_defaults.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f testdir2/testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f testdir2/testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# And finally, make sure that passing nothing at all also works (uses default)
$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 set database default-server 127.0.0.1:\$_PORT"
echo t_netsync_defaults.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 set database default-server 127.0.0.1:$_PORT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 set database default-server 127.0.0.1:$_PORT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 set database default-server 127.0.0.1:$_PORT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:39: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 set database default-include-pattern thirdbranch"
echo t_netsync_defaults.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 set database default-include-pattern thirdbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 set database default-include-pattern thirdbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 set database default-include-pattern thirdbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 sync"
echo t_netsync_defaults.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 sync" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 sync ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 sync ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --branch=thirdbranch --revision=\$THIRDBRANCH_R testdir3"
echo t_netsync_defaults.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --branch=thirdbranch --revision=$THIRDBRANCH_R testdir3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --branch=thirdbranch --revision=$THIRDBRANCH_R testdir3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --branch=thirdbranch --revision=$THIRDBRANCH_R testdir3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_defaults.at:42: test -f testdir3/testfile"
echo t_netsync_defaults.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f testdir3/testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f testdir3/testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_defaults.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  140 ) # 140. t_netsync_set_defaults.at:1: default server/pattern setting
    at_setup_line='t_netsync_set_defaults.at:1'
    at_desc='default server/pattern setting'
    $at_quiet $ECHO_N "140: default server/pattern setting               $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "140. t_netsync_set_defaults.at:1: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_netsync_set_defaults.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_netsync_set_defaults.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_set_defaults.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_set_defaults.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_netsync_set_defaults.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_set_defaults.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_set_defaults.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_netsync_set_defaults.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_set_defaults.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_set_defaults.at:3: rm test_keys"
echo t_netsync_set_defaults.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_set_defaults.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_netsync_set_defaults.at:4: cp test.db test2.db"
echo t_netsync_set_defaults.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_set_defaults.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_set_defaults.at:4: cp -r keys/ keys2"
echo t_netsync_set_defaults.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_set_defaults.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_set_defaults.at:4: cp test.db test3.db"
echo t_netsync_set_defaults.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_set_defaults.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_set_defaults.at:4: cp -r keys/ keys3"
echo t_netsync_set_defaults.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_set_defaults.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT




cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_set_defaults.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_netsync_set_defaults.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_set_defaults.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_set_defaults.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_netsync_set_defaults.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_set_defaults.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon






# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4



$at_traceoff
echo "$at_srcdir/t_netsync_set_defaults.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_netsync_set_defaults.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_set_defaults.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null





cat >testfile <<'_ATEOF'
other stuff
_ATEOF



$at_traceoff
echo "$at_srcdir/t_netsync_set_defaults.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_netsync_set_defaults.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_set_defaults.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


NEW_R=`cat _MTN/revision`



# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4

# Having done an explicit pull once, future ones should default to the
# same
$at_traceoff
echo "$at_srcdir/t_netsync_set_defaults.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pull"
echo t_netsync_set_defaults.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pull" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pull ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pull ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_set_defaults.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



$at_traceoff
echo "$at_srcdir/t_netsync_set_defaults.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=\$NEW_R testdir"
echo t_netsync_set_defaults.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$NEW_R testdir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$NEW_R testdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$NEW_R testdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_set_defaults.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_set_defaults.at:24: cmp testfile testdir/testfile"
echo t_netsync_set_defaults.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile testdir/testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile testdir/testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_set_defaults.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  141 ) # 141. t_netsync_absorbs.at:1: client absorbs server key
    at_setup_line='t_netsync_absorbs.at:1'
    at_desc='client absorbs server key'
    $at_quiet $ECHO_N "141: client absorbs server key                    $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "141. t_netsync_absorbs.at:1: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_netsync_absorbs.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_netsync_absorbs.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_absorbs.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_absorbs.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_netsync_absorbs.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_absorbs.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_absorbs.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_netsync_absorbs.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_absorbs.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_absorbs.at:3: rm test_keys"
echo t_netsync_absorbs.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_absorbs.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_netsync_absorbs.at:4: cp test.db test2.db"
echo t_netsync_absorbs.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_absorbs.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_absorbs.at:4: cp -r keys/ keys2"
echo t_netsync_absorbs.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_absorbs.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_absorbs.at:4: cp test.db test3.db"
echo t_netsync_absorbs.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_absorbs.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_absorbs.at:4: cp -r keys/ keys3"
echo t_netsync_absorbs.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_absorbs.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT




cat >testfile <<'_ATEOF'
foo bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_absorbs.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_netsync_absorbs.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_absorbs.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_absorbs.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_netsync_absorbs.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_absorbs.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_absorbs.at:10: (echo foo@bar; echo foo@bar) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net genkey foo@bar"
echo t_netsync_absorbs.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo foo@bar; echo foo@bar) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey foo@bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo foo@bar; echo foo@bar) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey foo@bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo foo@bar; echo foo@bar) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey foo@bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_absorbs.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_absorbs.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net pubkey foo@bar"
echo t_netsync_absorbs.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pubkey foo@bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pubkey foo@bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pubkey foo@bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_absorbs.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_absorbs.at:12:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_netsync_absorbs.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_absorbs.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_absorbs.at:13: cp stdout foo_public"
echo t_netsync_absorbs.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout foo_public ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout foo_public ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_absorbs.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve --key=foo@bar testbranch &
sleep 4



$at_traceoff
echo "$at_srcdir/t_netsync_absorbs.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_netsync_absorbs.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_absorbs.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



$at_traceoff
echo "$at_srcdir/t_netsync_absorbs.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pubkey foo@bar"
echo t_netsync_absorbs.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pubkey foo@bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pubkey foo@bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pubkey foo@bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_absorbs.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_absorbs.at:20:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_netsync_absorbs.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_absorbs.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_absorbs.at:21: cmp foo_public stdout"
echo t_netsync_absorbs.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp foo_public stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp foo_public stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_absorbs.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  142 ) # 142. t_netsync_checks_server_key.at:1: netsync verifies server keys
    at_setup_line='t_netsync_checks_server_key.at:1'
    at_desc='netsync verifies server keys'
    $at_quiet $ECHO_N "142: netsync verifies server keys                 $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "142. t_netsync_checks_server_key.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_netsync_checks_server_key.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_netsync_checks_server_key.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_checks_server_key.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_checks_server_key.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_netsync_checks_server_key.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_checks_server_key.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_checks_server_key.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_netsync_checks_server_key.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_checks_server_key.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_checks_server_key.at:2: rm test_keys"
echo t_netsync_checks_server_key.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_checks_server_key.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_netsync_checks_server_key.at:3: cp test.db test2.db"
echo t_netsync_checks_server_key.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_checks_server_key.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_checks_server_key.at:3: cp -r keys/ keys2"
echo t_netsync_checks_server_key.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_checks_server_key.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_checks_server_key.at:3: cp test.db test3.db"
echo t_netsync_checks_server_key.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_checks_server_key.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_checks_server_key.at:3: cp -r keys/ keys3"
echo t_netsync_checks_server_key.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_checks_server_key.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT



$at_traceoff
echo "$at_srcdir/t_netsync_checks_server_key.at:5: (echo foo@bar; echo foo@bar) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net genkey foo@bar"
echo t_netsync_checks_server_key.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo foo@bar; echo foo@bar) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey foo@bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo foo@bar; echo foo@bar) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey foo@bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo foo@bar; echo foo@bar) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey foo@bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_checks_server_key.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Once to let the client note down the key...



# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4



$at_traceoff
echo "$at_srcdir/t_netsync_checks_server_key.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_netsync_checks_server_key.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_checks_server_key.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null




# Then again with a different key; should fail.


# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve --key=foo@bar testbranch &
sleep 4




$at_traceoff
echo "$at_srcdir/t_netsync_checks_server_key.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_netsync_checks_server_key.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_checks_server_key.at:13: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# It shouldn't have absorbed the key, either.
$at_traceoff
echo "$at_srcdir/t_netsync_checks_server_key.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pubkey foo@bar"
echo t_netsync_checks_server_key.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pubkey foo@bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pubkey foo@bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pubkey foo@bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_checks_server_key.at:15: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# But if we then clear the client's known_hosts entry, it should be fine
$at_traceoff
echo "$at_srcdir/t_netsync_checks_server_key.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 unset known-servers localhost:\$_PORT"
echo t_netsync_checks_server_key.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 unset known-servers localhost:$_PORT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 unset known-servers localhost:$_PORT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 unset known-servers localhost:$_PORT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_checks_server_key.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Now it should succeed


$at_traceoff
echo "$at_srcdir/t_netsync_checks_server_key.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_netsync_checks_server_key.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_checks_server_key.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# And have absorbed the key
$at_traceoff
echo "$at_srcdir/t_netsync_checks_server_key.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pubkey foo@bar"
echo t_netsync_checks_server_key.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pubkey foo@bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pubkey foo@bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pubkey foo@bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_checks_server_key.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  143 ) # 143. t_merge_5.at:1: test a merge 5
    at_setup_line='t_merge_5.at:1'
    at_desc='test a merge 5'
    $at_quiet $ECHO_N "143: test a merge 5                               $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "143. t_merge_5.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge_5.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_merge_5.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_5.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_5.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_merge_5.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_5.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_5.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_merge_5.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_5.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_5.at:2: rm test_keys"
echo t_merge_5.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_5.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This test is a bug report.



if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_merge_5.at:7: echo \$UNB64_COMMAND"
echo t_merge_5.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_5.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# Another real merge error. This is the diff between the correct
# result and the file produced by the merge:
#
# --- correct
# +++ testfile
# @@ -99,6 +99,8 @@
#
#    void get_ids(std::string const & table, std::set< hexenc<id> > & ids);
#
# +  void get_ids(std::string const & table, std::set< hexenc<id> > & ids);
# +
#    void get(hexenc<id> const & new_id,
#             base64< gzip<data> > & dat,
#             std::string const & table);

# This seems to be a really nasty testcase somehow.  monotone and
# merge(1) give identical, incorrect output.  diff3(1) reports a
# conflict.  xxdiff merges cleanly, and, AFAICT, correctly.

cat >parent.b64 <<'_ATEOF'

I2lmbmRlZiBfX0RBVEFCQVNFX0hIX18KI2RlZmluZSBfX0RBVEFCQVNFX0hIX18KCi8vIGNvcHly
aWdodCAoQykgMjAwMiwgMjAwMyBncmF5ZG9uIGhvYXJlIDxncmF5ZG9uQHBvYm94LmNvbT4KLy8g
YWxsIHJpZ2h0cyByZXNlcnZlZC4KLy8gbGljZW5zZWQgdG8gdGhlIHB1YmxpYyB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBHUEwgKD49IDIpCi8vIHNlZSB0aGUgZmlsZSBDT1BZSU5HIGZvciBk
ZXRhaWxzCgpzdHJ1Y3Qgc3FsaXRlMzsKc3RydWN0IGNlcnQ7CgojaW5jbHVkZSA8dmVjdG9yPgoj
aW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8c3RyaW5nPgoKI2luY2x1ZGUgPGJvb3N0L2ZpbGVzeXN0
ZW0vcGF0aC5ocHA+CgojaW5jbHVkZSAiY29tbWFuZHMuaGgiCiNpbmNsdWRlICJtYW5pZmVzdC5o
aCIKI2luY2x1ZGUgIm51bWVyaWNfdm9jYWIuaGgiCiNpbmNsdWRlICJ2b2NhYi5oaCIKCnN0cnVj
dCByZXZpc2lvbl9zZXQ7CgovLyB0aGlzIGZpbGUgZGVmaW5lcyBhIHB1YmxpYywgdHlwZWQgaW50
ZXJmYWNlIHRvIHRoZSBkYXRhYmFzZS4KLy8gdGhlIGRhdGFiYXNlIGNsYXNzIGVuY2Fwc3VsYXRl
cyBhbGwga25vd2xlZGdlIGFib3V0IHNxbGl0ZSwKLy8gdGhlIHNjaGVtYSwgYW5kIGFsbCBTUUwg
c3RhdGVtZW50cyB1c2VkIHRvIGFjY2VzcyB0aGUgc2NoZW1hLgovLwovLyBvbmUgdGhpbmcgd2hp
Y2ggaXMgcmF0aGVyIGltcG9ydGFudCB0byBub3RlIGlzIHRoYXQgdGhpcyBmaWxlCi8vIGRlYWxz
IHdpdGggdHdvIHNvcnRzIG9mIHZlcnNpb24gcmVsYXRpb25zaGlwcy4gdGhlIHZlcnNpb25zCi8v
IHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UgYXJlIGFsbCAqYmFja3dhcmRzKiBmcm9tIHRob3NlIHRo
ZSBwcm9ncmFtCi8vIHNlZXMuIHNvIGZvciBleGFtcGxlIGlmIHlvdSBoYXZlIHR3byB2ZXJzaW9u
cyBvZiBhIGZpbGUKLy8gCi8vIGZpbGUuMSwgZmlsZS4yCi8vCi8vIHdoZXJlIGZpbGUuMiB3YXMg
YSBtb2RpZmljYXRpb24gb2YgZmlsZS4xLCB0aGVuIGFzIGZhciBhcyB0aGUgcmVzdCBvZgovLyB0
aGUgYXBwbGljYXRpb24gaXMgY29uY2VybmVkIC0tIGFuZCB0aGUgYW5jZXN0cnkgZ3JhcGggLS0g
ZmlsZS4xIGlzIHRoZQovLyAib2xkIiB2ZXJzaW9uIGFuZCBmaWxlLjIgaXMgdGhlICJuZXciIHZl
cnNpb24uIG5vdGUgdGhlIHVzZSBvZiB0ZXJtcwovLyB3aGljaCBkZXNjcmliZSB0aW1lLCBhbmQg
dGhlIHNlcXVlbmNlIG9mIGVkaXRzIGEgdXNlciBtYWtlcyB0byBhCi8vIGZpbGUuIHRob3NlIGFy
ZSBhbmNlc3RyeSB0ZXJtcy4gd2hlbiB0aGUgYXBwbGljYXRpb24gY29tcG9zZXMgYQovLyBwYXRj
aHNldCwgZm9yIGV4YW1wbGUsIGl0J2xsIGNvbnRhaW4gdGhlIGRpZmYgZGVsdGEoZmlsZS4xLCBm
aWxlLjIpCi8vCi8vIGZyb20gdGhlIGRhdGFiYXNlJ3MgcGVyc3BlY3RpdmUsIGhvd2V2ZXIsIGZp
bGUuMSBpcyB0aGUgZGVyaXZlZCB2ZXJzaW9uLAovLyBhbmQgZmlsZS4yIGlzIHRoZSBiYXNlIHZl
cnNpb24uIHRoZSBiYXNlIHZlcnNpb24gaXMgc3RvcmVkIGluIHRoZQovLyAiZmlsZXMiIHRhYmxl
LCBhbmQgdGhlICpyZXZlcnNlKiBkaWZmIGRlbHRhKGZpbGUuMiwgZmlsZS4xKSBpcyBzdG9yZWQg
aW4KLy8gdGhlICJmaWxlX2RlbHRhcyIgdGFibGUsIHVuZGVyIHRoZSBpZCBvZiBmaWxlLjEsIHdp
dGggdGhlIGlkIG9mIGZpbGUuMgovLyBsaXN0ZWQgYXMgaXRzIGJhc2UuIG5vdGUgdGhlIHVzZSBv
ZiB0aGUgdGVybXMgd2hpY2ggZGVzY3JpYmUKLy8gcmVjb25zdHJ1Y3Rpb247IHRob3NlIGFyZSBz
dG9yYWdlLXN5c3RlbSB0ZXJtcy4KLy8KLy8gdGhlIGludGVyZmFjZSAqdG8qIHRoZSBkYXRhYmFz
ZSwgYW5kIHRoZSBhbmNlc3RyeSB2ZXJzaW9uIGdyYXBocywgdXNlCi8vIHRoZSBvbGQgLyBuZXcg
bWV0YXBob3Igb2YgYW5jZXN0cnksIGJ1dCB3aXRoaW4gdGhlIGRhdGFiYXNlIChpbmNsdWRpbmcK
Ly8gdGhlIHByaXZhdGUgaGVscGVyIG1ldGhvZHMsIGFuZCB0aGUgc3RvcmFnZSB2ZXJzaW9uIGdy
YXBocykgdGhlCi8vIGJhc2UvZGVyaXZlZCBzdG9yYWdlIG1ldGFwaG9yIGlzIHVzZWQuIHRoZSBv
bmx5IHJlYWwgd2F5IHRvIHRlbGwgd2hpY2gKLy8gaXMgd2hpY2ggaXMgdG8gbG9vayBhdCB0aGUg
cGFyYW1ldGVyIG5hbWVzIGFuZCBjb2RlLiBJIG1pZ2h0IHRyeSB0bwovLyBleHByZXNzIHRoaXMg
aW4gdGhlIHR5cGUgc3lzdGVtIHNvbWUgZGF5LCBidXQgbm90IHByZXNlbnRseS4KLy8KLy8gdGhl
IGtleSBwaHJhc2UgdG8ga2VlcCByZXBlYXRpbmcgd2hlbiB3b3JraW5nIG9uIHRoaXMgY29kZSBp
czoKLy8gCi8vICJiYXNlIGZpbGVzIGFyZSBuZXcsIGRlcml2ZWQgZmlsZXMgYXJlIG9sZCIKLy8K
Ly8gaXQgbWFrZXMgdGhlIGNvZGUgY29uZnVzaW5nLCBJIGtub3cuIHRoaXMgaXMgcG9zc2libHkg
dGhlIHdvcnN0IHBhcnQgb2YKLy8gdGhlIHByb2dyYW0uIEkgZG9uJ3Qga25vdyBpZiB0aGVyZSdz
IGFueSB3YXkgdG8gbWFrZSBpdCBjbGVhcmVyLgoKY2xhc3MgdHJhbnNhY3Rpb25fZ3VhcmQ7CnN0
cnVjdCBwb3N0aW5nOwpzdHJ1Y3QgYXBwX3N0YXRlOwoKY2xhc3MgZGF0YWJhc2UKewogIGZzOjpw
YXRoIGZpbGVuYW1lOwogIHN0ZDo6c3RyaW5nIGNvbnN0IHNjaGVtYTsKICB2b2lkIGNoZWNrX3Nj
aGVtYSgpOwoKICBzdHJ1Y3QgYXBwX3N0YXRlICogX19hcHA7CiAgc3RydWN0IHNxbGl0ZTMgKiBf
X3NxbDsKICBzdHJ1Y3Qgc3FsaXRlMyAqIHNxbChib29sIGluaXQgPSBmYWxzZSk7CiAgaW50IHRy
YW5zYWN0aW9uX2xldmVsOwoKICB2b2lkIGluc3RhbGxfZnVuY3Rpb25zKGFwcF9zdGF0ZSAqIGFw
cCk7CiAgdm9pZCBpbnN0YWxsX3ZpZXdzKCk7CgogIHR5cGVkZWYgc3RkOjp2ZWN0b3I8IHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPiA+IHJlc3VsdHM7CiAgdm9pZCBleGVjdXRlKGNoYXIgY29uc3Qg
KiBxdWVyeSwgLi4uKTsKICB2b2lkIGZldGNoKHJlc3VsdHMgJiByZXMsIAogICAgICAgICAgICAg
aW50IGNvbnN0IHdhbnRfY29scywgCiAgICAgICAgICAgICBpbnQgY29uc3Qgd2FudF9yb3dzLCAK
ICAgICAgICAgICAgIGNoYXIgY29uc3QgKiBxdWVyeSwgLi4uKTsKCiAgYm9vbCBleGlzdHMoaGV4
ZW5jPGlkPiBjb25zdCAmIGlkZW50LCAKICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25zdCAm
IHRhYmxlKTsKICBib29sIGRlbHRhX2V4aXN0cyhoZXhlbmM8aWQ+IGNvbnN0ICYgaWRlbnQsCiAg
ICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QgJiB0YWJsZSk7CiAgYm9vbCBkZWx0
YV9leGlzdHMoaGV4ZW5jPGlkPiBjb25zdCAmIGlkZW50LAogICAgICAgICAgICAgICAgICAgIGhl
eGVuYzxpZD4gY29uc3QgJiBiYXNlLAogICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNv
bnN0ICYgdGFibGUpOwoKICBpbnQgY291bnQoc3RkOjpzdHJpbmcgY29uc3QgJiB0YWJsZSk7Cgog
IHZvaWQgZ2V0KGhleGVuYzxpZD4gY29uc3QgJiBuZXdfaWQsCiAgICAgICAgICAgYmFzZTY0PCBn
emlwPGRhdGE+ID4gJiBkYXQsCiAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QgJiB0YWJsZSk7
CiAgdm9pZCBnZXRfZGVsdGEoaGV4ZW5jPGlkPiBjb25zdCAmIGlkZW50LAogICAgICAgICAgICAg
ICAgIGhleGVuYzxpZD4gY29uc3QgJiBiYXNlLAogICAgICAgICAgICAgICAgIGJhc2U2NDwgZ3pp
cDxkZWx0YT4gPiAmIGRlbCwKICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25zdCAmIHRh
YmxlKTsKICB2b2lkIGdldF92ZXJzaW9uKGhleGVuYzxpZD4gY29uc3QgJiBpZCwKICAgICAgICAg
ICAgICAgICAgIGJhc2U2NDwgZ3ppcDxkYXRhPiA+ICYgZGF0LAogICAgICAgICAgICAgICAgICAg
c3RkOjpzdHJpbmcgY29uc3QgJiBkYXRhX3RhYmxlLAogICAgICAgICAgICAgICAgICAgc3RkOjpz
dHJpbmcgY29uc3QgJiBkZWx0YV90YWJsZSk7CiAgCiAgdm9pZCBwdXQoaGV4ZW5jPGlkPiBjb25z
dCAmIG5ld19pZCwKICAgICAgICAgICBiYXNlNjQ8IGd6aXA8ZGF0YT4gPiBjb25zdCAmIGRhdCwK
ICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25zdCAmIHRhYmxlKTsKICB2b2lkIGRyb3AoaGV4ZW5j
PGlkPiBjb25zdCAmIGJhc2UsCiAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0ICYgdGFibGUp
OwogIHZvaWQgcHV0X2RlbHRhKGhleGVuYzxpZD4gY29uc3QgJiBpZCwKICAgICAgICAgICAgICAg
ICBoZXhlbmM8aWQ+IGNvbnN0ICYgYmFzZSwKICAgICAgICAgICAgICAgICBiYXNlNjQ8IGd6aXA8
ZGVsdGE+ID4gY29uc3QgJiBkZWwsCiAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3Qg
JiB0YWJsZSk7CiAgdm9pZCBwdXRfdmVyc2lvbihoZXhlbmM8aWQ+IGNvbnN0ICYgb2xkX2lkLAog
ICAgICAgICAgICAgICAgICAgaGV4ZW5jPGlkPiBjb25zdCAmIG5ld19pZCwKICAgICAgICAgICAg
ICAgICAgIGJhc2U2NDwgZ3ppcDxkZWx0YT4gPiBjb25zdCAmIGRlbCwKICAgICAgICAgICAgICAg
ICAgIHN0ZDo6c3RyaW5nIGNvbnN0ICYgZGF0YV90YWJsZSwKICAgICAgICAgICAgICAgICAgIHN0
ZDo6c3RyaW5nIGNvbnN0ICYgZGVsdGFfdGFibGUpOwogIHZvaWQgcHV0X3JldmVyc2VfdmVyc2lv
bihoZXhlbmM8aWQ+IGNvbnN0ICYgbmV3X2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBo
ZXhlbmM8aWQ+IGNvbnN0ICYgb2xkX2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNl
NjQ8IGd6aXA8ZGVsdGE+ID4gY29uc3QgJiByZXZlcnNlX2RlbCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QgJiBkYXRhX3RhYmxlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25zdCAmIGRlbHRhX3RhYmxlKTsKCiAgYm9vbCBjZXJ0
X2V4aXN0cyhjZXJ0IGNvbnN0ICYgdCwKICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29u
c3QgJiB0YWJsZSk7CiAgdm9pZCBwdXRfY2VydChjZXJ0IGNvbnN0ICYgdCwgc3RkOjpzdHJpbmcg
Y29uc3QgJiB0YWJsZSk7ICAKICB2b2lkIHJlc3VsdHNfdG9fY2VydHMocmVzdWx0cyBjb25zdCAm
IHJlcywKICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxjZXJ0PiAmIGNlcnRzKTsK
CiAgdm9pZCBnZXRfY2VydHMoaGV4ZW5jPGlkPiBjb25zdCAmIGlkLCAKICAgICAgICAgICAgICAg
IHN0ZDo6dmVjdG9yPCBjZXJ0ID4gJiBjZXJ0cywKICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5n
IGNvbnN0ICYgdGFibGUpOyAgCgogIHZvaWQgZ2V0X2NlcnRzKGNlcnRfbmFtZSBjb25zdCAmIG5h
bWUsICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPCBjZXJ0ID4gJiBj
ZXJ0cywKICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0ICYgdGFibGUpOwoKICB2b2lk
IGdldF9jZXJ0cyhoZXhlbmM8aWQ+IGNvbnN0ICYgaWQsCiAgICAgICAgICAgICAgICBjZXJ0X25h
bWUgY29uc3QgJiBuYW1lLAogICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8IGNlcnQgPiAmIGNl
cnRzLAogICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QgJiB0YWJsZSk7ICAKCiAgdm9p
ZCBnZXRfY2VydHMoaGV4ZW5jPGlkPiBjb25zdCAmIGlkLAogICAgICAgICAgICAgICAgY2VydF9u
YW1lIGNvbnN0ICYgbmFtZSwKICAgICAgICAgICAgICAgIGJhc2U2NDxjZXJ0X3ZhbHVlPiBjb25z
dCAmIHZhbCwgCiAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjwgY2VydCA+ICYgY2VydHMsCiAg
ICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25zdCAmIHRhYmxlKTsgIAoKICB2b2lkIGdldF9j
ZXJ0cyhjZXJ0X25hbWUgY29uc3QgJiBuYW1lLAogICAgICAgICAgICAgICAgYmFzZTY0PGNlcnRf
dmFsdWU+IGNvbnN0ICYgdmFsLCAKICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGNlcnQ+ICYg
Y2VydHMsCiAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25zdCAmIHRhYmxlKTsKCiAgdm9p
ZCBiZWdpbl90cmFuc2FjdGlvbigpOwogIHZvaWQgY29tbWl0X3RyYW5zYWN0aW9uKCk7CiAgdm9p
ZCByb2xsYmFja190cmFuc2FjdGlvbigpOwogIGZyaWVuZCBjbGFzcyB0cmFuc2FjdGlvbl9ndWFy
ZDsKICBmcmllbmQgdm9pZCByY3NfcHV0X3Jhd19maWxlX2VkZ2UoaGV4ZW5jPGlkPiBjb25zdCAm
IG9sZF9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGV4ZW5jPGlkPiBj
b25zdCAmIG5ld19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0
PCBnemlwPGRlbHRhPiA+IGNvbnN0ICYgZGVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhYmFzZSAmIGRiKTsKICBmcmllbmQgdm9pZCByY3NfcHV0X3Jhd19tYW5pZmVz
dF9lZGdlKGhleGVuYzxpZD4gY29uc3QgJiBvbGRfaWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoZXhlbmM8aWQ+IGNvbnN0ICYgbmV3X2lkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0PCBnemlwPGRlbHRhPiA+IGNvbnN0ICYg
ZGVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YWJhc2UgJiBk
Yik7CgpwdWJsaWM6CgogIGRhdGFiYXNlKGZzOjpwYXRoIGNvbnN0ICYgZmlsZSk7CgogIHVuc2ln
bmVkIGxvbmcgZ2V0X3N0YXRpc3RpYyhzdGQ6OnN0cmluZyBjb25zdCAmIHF1ZXJ5KTsKICB2b2lk
IHNldF9maWxlbmFtZShmczo6cGF0aCBjb25zdCAmIGZpbGUpOwogIHZvaWQgaW5pdGlhbGl6ZSgp
OwogIHZvaWQgZGVidWcoc3RkOjpzdHJpbmcgY29uc3QgJiBzcWwsIHN0ZDo6b3N0cmVhbSAmIG91
dCk7CiAgdm9pZCBkdW1wKHN0ZDo6b3N0cmVhbSAmKTsKICB2b2lkIGxvYWQoc3RkOjppc3RyZWFt
ICYpOwogIHZvaWQgaW5mbyhzdGQ6Om9zdHJlYW0gJik7CiAgdm9pZCB2ZXJzaW9uKHN0ZDo6b3N0
cmVhbSAmKTsKICB2b2lkIG1pZ3JhdGUoKTsKICB2b2lkIHJlaGFzaCgpOwogIHZvaWQgZW5zdXJl
X29wZW4oKTsKICAKICBib29sIGZpbGVfdmVyc2lvbl9leGlzdHMoZmlsZV9pZCBjb25zdCAmIGlk
KTsKICBib29sIG1hbmlmZXN0X3ZlcnNpb25fZXhpc3RzKG1hbmlmZXN0X2lkIGNvbnN0ICYgaWQp
OwogIGJvb2wgcmV2aXNpb25fZXhpc3RzKHJldmlzaW9uX2lkIGNvbnN0ICYgaWQpOwogIHZvaWQg
c2V0X2FwcChhcHBfc3RhdGUgKiBhcHApOwogIAogIC8vIGdldCBwbGFpbiB2ZXJzaW9uIGlmIGl0
IGV4aXN0cywgb3IgcmVjb25zdHJ1Y3QgdmVyc2lvbgogIC8vIGZyb20gZGVsdGFzIChpZiB0aGV5
IGV4aXN0KQogIHZvaWQgZ2V0X2ZpbGVfdmVyc2lvbihmaWxlX2lkIGNvbnN0ICYgaWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgIGZpbGVfZGF0YSAmIGRhdCk7CgogIC8vIGdldCBmaWxlIGRlbHRh
IGlmIGl0IGV4aXN0cywgZWxzZSBjYWxjdWxhdGUgaXQuCiAgLy8gYm90aCBtYW5pZmVzdHMgbXVz
dCBleGlzdC4KICB2b2lkIGdldF9maWxlX2RlbHRhKGZpbGVfaWQgY29uc3QgJiBzcmMsCiAgICAg
ICAgICAgICAgICAgICAgICBmaWxlX2lkIGNvbnN0ICYgZHN0LAogICAgICAgICAgICAgICAgICAg
ICAgZmlsZV9kZWx0YSAmIGRlbCk7CgogIC8vIHB1dCBmaWxlIHcvbyBwcmVkZWNlc3NvciBpbnRv
IGRiCiAgdm9pZCBwdXRfZmlsZShmaWxlX2lkIGNvbnN0ICYgbmV3X2lkLAogICAgICAgICAgICAg
ICAgZmlsZV9kYXRhIGNvbnN0ICYgZGF0KTsKCiAgLy8gc3RvcmUgbmV3IHZlcnNpb24gYW5kIHVw
ZGF0ZSBvbGQgdmVyc2lvbiB0byBiZSBhIGRlbHRhCiAgdm9pZCBwdXRfZmlsZV92ZXJzaW9uKGZp
bGVfaWQgY29uc3QgJiBvbGRfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfaWQgY29u
c3QgJiBuZXdfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfZGVsdGEgY29uc3QgJiBk
ZWwpOwoKICAvLyBsb2FkIGluIGEgImRpcmVjdCIgbmV3IC0+IG9sZCByZXZlcnNlIGVkZ2UgKHVz
ZWQgZHVyaW5nCiAgLy8gbmV0c3luYyBhbmQgQ1ZTIGxvYWQtaW4pCiAgdm9pZCBwdXRfZmlsZV9y
ZXZlcnNlX3ZlcnNpb24oZmlsZV9pZCBjb25zdCAmIG9sZF9pZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmaWxlX2lkIGNvbnN0ICYgbmV3X2lkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbGVfZGVsdGEgY29uc3QgJiBkZWwpOwoKICAvLyBnZXQgcGxhaW4gdmVy
c2lvbiBpZiBpdCBleGlzdHMsIG9yIHJlY29uc3RydWN0IHZlcnNpb24KICAvLyBmcm9tIGRlbHRh
cyAoaWYgdGhleSBleGlzdCkuIAogIHZvaWQgZ2V0X21hbmlmZXN0X3ZlcnNpb24obWFuaWZlc3Rf
aWQgY29uc3QgJiBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X2RhdGEg
JiBkYXQpOwoKICAvLyBnZXQgYSBjb25zdHJ1Y3RlZCBtYW5pZmVzdAogIHZvaWQgZ2V0X21hbmlm
ZXN0KG1hbmlmZXN0X2lkIGNvbnN0ICYgaWQsCiAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3Rf
bWFwICYgbW0pOwoKICAvLyBnZXQgbWFuaWZlc3QgZGVsdGEgaWYgaXQgZXhpc3RzLCBlbHNlIGNh
bGN1bGF0ZSBpdC4KICAvLyBib3RoIG1hbmlmZXN0cyBtdXN0IGV4aXN0LgogIHZvaWQgZ2V0X21h
bmlmZXN0X2RlbHRhKG1hbmlmZXN0X2lkIGNvbnN0ICYgc3JjLAogICAgICAgICAgICAgICAgICAg
ICAgICAgIG1hbmlmZXN0X2lkIGNvbnN0ICYgZHN0LAogICAgICAgICAgICAgICAgICAgICAgICAg
IG1hbmlmZXN0X2RlbHRhICYgZGVsKTsKCiAgLy8gcHV0IG1hbmlmZXN0IHcvbyBwcmVkZWNlc3Nv
ciBpbnRvIGRiCiAgdm9pZCBwdXRfbWFuaWZlc3QobWFuaWZlc3RfaWQgY29uc3QgJiBuZXdfaWQs
CiAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfZGF0YSBjb25zdCAmIGRhdCk7CgogIC8vIHN0
b3JlIG5ldyB2ZXJzaW9uIGFuZCB1cGRhdGUgb2xkIHZlcnNpb24gdG8gYmUgYSBkZWx0YQogIHZv
aWQgcHV0X21hbmlmZXN0X3ZlcnNpb24obWFuaWZlc3RfaWQgY29uc3QgJiBvbGRfaWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdF9pZCBjb25zdCAmIG5ld19pZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X2RlbHRhIGNvbnN0ICYgZGVsKTsKCiAgLy8g
bG9hZCBpbiBhICJkaXJlY3QiIG5ldyAtPiBvbGQgcmV2ZXJzZSBlZGdlICh1c2VkIGR1cmluZwog
IC8vIG5ldHN5bmMgYW5kIENWUyBsb2FkLWluKQogIHZvaWQgcHV0X21hbmlmZXN0X3JldmVyc2Vf
dmVyc2lvbihtYW5pZmVzdF9pZCBjb25zdCAmIG9sZF9pZCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWFuaWZlc3RfaWQgY29uc3QgJiBuZXdfaWQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X2RlbHRhIGNvbnN0ICYgZGVsKTsKCgogIHZv
aWQgZ2V0X3JldmlzaW9uX2FuY2VzdHJ5KHN0ZDo6bXVsdGltYXA8cmV2aXNpb25faWQsIHJldmlz
aW9uX2lkPiAmIGdyYXBoKTsKCiAgdm9pZCBnZXRfcmV2aXNpb25fcGFyZW50cyhyZXZpc2lvbl9p
ZCBjb25zdCAmIGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnNldDxyZXZpc2lv
bl9pZD4gJiBwYXJlbnRzKTsKCiAgdm9pZCBnZXRfcmV2aXNpb25fY2hpbGRyZW4ocmV2aXNpb25f
aWQgY29uc3QgJiBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnNldDxyZXZp
c2lvbl9pZD4gJiBjaGlsZHJlbik7CgogIHZvaWQgZ2V0X3JldmlzaW9uX21hbmlmZXN0KHJldmlz
aW9uX2lkIGNvbnN0ICYgY2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3Rf
aWQgJiBtaWQpOwoKICB2b2lkIGdldF9yZXZpc2lvbihyZXZpc2lvbl9pZCBjb25zdCAmIGlkLAog
ICAgICAgICAgICAgICAgICAgcmV2aXNpb25fc2V0ICYgY3MpOwoKICB2b2lkIGdldF9yZXZpc2lv
bihyZXZpc2lvbl9pZCBjb25zdCAmIGlkLAogICAgICAgICAgICAgICAgICAgcmV2aXNpb25fZGF0
YSAmIGRhdCk7CgogIHZvaWQgcHV0X3JldmlzaW9uKHJldmlzaW9uX2lkIGNvbnN0ICYgbmV3X2lk
LAogICAgICAgICAgICAgICAgICAgcmV2aXNpb25fc2V0IGNvbnN0ICYgY3MpOwoKICB2b2lkIHB1
dF9yZXZpc2lvbihyZXZpc2lvbl9pZCBjb25zdCAmIG5ld19pZCwKICAgICAgICAgICAgICAgICAg
ICByZXZpc2lvbl9kYXRhIGNvbnN0ICYgZGF0KTsKICAKICB2b2lkIGRlbGV0ZV9leGlzdGluZ19y
ZXZzX2FuZF9jZXJ0cygpOwoKICAvLyBjcnlwdG8ga2V5IC8gY2VydCBvcGVyYXRpb25zCgogIHZv
aWQgZ2V0X2tleV9pZHMoc3RkOjpzdHJpbmcgY29uc3QgJiBwYXR0ZXJuLAogICAgICAgICAgICAg
ICAgICAgc3RkOjp2ZWN0b3I8cnNhX2tleXBhaXJfaWQ+ICYgcHVia2V5cywKICAgICAgICAgICAg
ICAgICAgIHN0ZDo6dmVjdG9yPHJzYV9rZXlwYWlyX2lkPiAmIHByaXZrZXlzKTsKCiAgdm9pZCBn
ZXRfcHJpdmF0ZV9rZXlzKHN0ZDo6dmVjdG9yPHJzYV9rZXlwYWlyX2lkPiAmIHByaXZrZXlzKTsK
CiAgYm9vbCBrZXlfZXhpc3RzKHJzYV9rZXlwYWlyX2lkIGNvbnN0ICYgaWQpOwoKICBib29sIHB1
YmxpY19rZXlfZXhpc3RzKGhleGVuYzxpZD4gY29uc3QgJiBoYXNoKTsKICBib29sIHB1YmxpY19r
ZXlfZXhpc3RzKHJzYV9rZXlwYWlyX2lkIGNvbnN0ICYgaWQpOwogIGJvb2wgcHJpdmF0ZV9rZXlf
ZXhpc3RzKHJzYV9rZXlwYWlyX2lkIGNvbnN0ICYgaWQpOwogIAogIHZvaWQgZ2V0X3B1YmtleSho
ZXhlbmM8aWQ+IGNvbnN0ICYgaGFzaCwgCiAgICAgICAgICAgICAgICAgIHJzYV9rZXlwYWlyX2lk
ICYgaWQsCiAgICAgICAgICAgICAgICAgIGJhc2U2NDxyc2FfcHViX2tleT4gJiBwdWJfZW5jb2Rl
ZCk7CgogIHZvaWQgZ2V0X2tleShyc2Ffa2V5cGFpcl9pZCBjb25zdCAmIGlkLCAKICAgICAgICAg
ICAgICAgYmFzZTY0PHJzYV9wdWJfa2V5PiAmIHB1Yl9lbmNvZGVkKTsKCiAgdm9pZCBnZXRfa2V5
KHJzYV9rZXlwYWlyX2lkIGNvbnN0ICYgaWQsIAogICAgICAgICAgICAgICBiYXNlNjQ8IGFyYzQ8
cnNhX3ByaXZfa2V5PiA+ICYgcHJpdl9lbmNvZGVkKTsKCiAgdm9pZCBwdXRfa2V5KHJzYV9rZXlw
YWlyX2lkIGNvbnN0ICYgaWQsIAogICAgICAgICAgICAgICBiYXNlNjQ8cnNhX3B1Yl9rZXk+IGNv
bnN0ICYgcHViX2VuY29kZWQpOwogIAogIHZvaWQgcHV0X2tleShyc2Ffa2V5cGFpcl9pZCBjb25z
dCAmIGlkLCAKICAgICAgICAgICAgICAgYmFzZTY0PCBhcmM0PHJzYV9wcml2X2tleT4gPiBjb25z
dCAmIHByaXZfZW5jb2RlZCk7CiAgCiAgdm9pZCBwdXRfa2V5X3BhaXIocnNhX2tleXBhaXJfaWQg
Y29uc3QgJiBwdWJfaWQsIAogICAgICAgICAgICAgICAgICAgIGJhc2U2NDxyc2FfcHViX2tleT4g
Y29uc3QgJiBwdWJfZW5jb2RlZCwKICAgICAgICAgICAgICAgICAgICBiYXNlNjQ8IGFyYzQ8cnNh
X3ByaXZfa2V5PiA+IGNvbnN0ICYgcHJpdl9lbmNvZGVkKTsKCiAgdm9pZCBkZWxldGVfcHJpdmF0
ZV9rZXkocnNhX2tleXBhaXJfaWQgY29uc3QgJiBwdWJfaWQpOwoKICAvLyBub3RlOiB0aGlzIHNl
Y3Rpb24gaXMgcmlkaWN1bG91cy4gcGxlYXNlIGRvIHNvbWV0aGluZyBhYm91dCBpdC4KCiAgYm9v
bCBtYW5pZmVzdF9jZXJ0X2V4aXN0cyhtYW5pZmVzdDxjZXJ0PiBjb25zdCAmIGNlcnQpOwogIGJv
b2wgbWFuaWZlc3RfY2VydF9leGlzdHMoaGV4ZW5jPGlkPiBjb25zdCAmIGhhc2gpOwogIHZvaWQg
cHV0X21hbmlmZXN0X2NlcnQobWFuaWZlc3Q8Y2VydD4gY29uc3QgJiBjZXJ0KTsKCiAgYm9vbCBy
ZXZpc2lvbl9jZXJ0X2V4aXN0cyhyZXZpc2lvbjxjZXJ0PiBjb25zdCAmIGNlcnQpOwogIGJvb2wg
cmV2aXNpb25fY2VydF9leGlzdHMoaGV4ZW5jPGlkPiBjb25zdCAmIGhhc2gpOwoKICB2b2lkIHB1
dF9yZXZpc2lvbl9jZXJ0KHJldmlzaW9uPGNlcnQ+IGNvbnN0ICYgY2VydCk7CgogIC8vIHRoaXMg
dmFyaWFudCBoYXMgdG8gYmUgcmF0aGVyIGNvYXJzZSBhbmQgZmFzdCwgZm9yIG5ldHN5bmMncyB1
c2UKICB2b2lkIGdldF9yZXZpc2lvbl9jZXJ0X2luZGV4KHN0ZDo6dmVjdG9yPCBzdGQ6OnBhaXI8
aGV4ZW5jPGlkPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6cGFpcjxyZXZp
c2lvbl9pZCwgcnNhX2tleXBhaXJfaWQ+ID4gPiAmIGlkeCk7CgogIHZvaWQgZ2V0X3JldmlzaW9u
X2NlcnRzKGNlcnRfbmFtZSBjb25zdCAmIG5hbWUsIAogICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjp2ZWN0b3I8IHJldmlzaW9uPGNlcnQ+ID4gJiBjZXJ0cyk7CgogIHZvaWQgZ2V0X3Jldmlz
aW9uX2NlcnRzKHJldmlzaW9uX2lkIGNvbnN0ICYgaWQsIAogICAgICAgICAgICAgICAgICAgICAg
ICAgY2VydF9uYW1lIGNvbnN0ICYgbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnZlY3RvcjwgcmV2aXNpb248Y2VydD4gPiAmIGNlcnRzKTsKCiAgdm9pZCBnZXRfcmV2aXNpb25f
Y2VydHMoY2VydF9uYW1lIGNvbnN0ICYgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGJh
c2U2NDxjZXJ0X3ZhbHVlPiBjb25zdCAmIHZhbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OnZlY3RvcjwgcmV2aXNpb248Y2VydD4gPiAmIGNlcnRzKTsKCiAgdm9pZCBnZXRfcmV2aXNp
b25fY2VydHMocmV2aXNpb25faWQgY29uc3QgJiBpZCwgCiAgICAgICAgICAgICAgICAgICAgICAg
ICBjZXJ0X25hbWUgY29uc3QgJiBuYW1lLCAKICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U2
NDxjZXJ0X3ZhbHVlPiBjb25zdCAmIHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
Ojp2ZWN0b3I8IHJldmlzaW9uPGNlcnQ+ID4gJiBjZXJ0cyk7CgogIHZvaWQgZ2V0X3JldmlzaW9u
X2NlcnRzKHJldmlzaW9uX2lkIGNvbnN0ICYgaWQsIAogICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjp2ZWN0b3I8IHJldmlzaW9uPGNlcnQ+ID4gJiBjZXJ0cyk7CgogIHZvaWQgZ2V0X3Jldmlz
aW9uX2NlcnQoaGV4ZW5jPGlkPiBjb25zdCAmIGhhc2gsCiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXZpc2lvbjxjZXJ0PiAmIGNlcnQpOwogIAogIHZvaWQgZ2V0X21hbmlmZXN0X2NlcnRzKG1h
bmlmZXN0X2lkIGNvbnN0ICYgaWQsIAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVj
dG9yPCBtYW5pZmVzdDxjZXJ0PiA+ICYgY2VydHMpOwoKICB2b2lkIGdldF9tYW5pZmVzdF9jZXJ0
cyhjZXJ0X25hbWUgY29uc3QgJiBuYW1lLCAKICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnZlY3RvcjwgbWFuaWZlc3Q8Y2VydD4gPiAmIGNlcnRzKTsKCiAgdm9pZCBnZXRfbWFuaWZlc3Rf
Y2VydHMobWFuaWZlc3RfaWQgY29uc3QgJiBpZCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2VydF9uYW1lIGNvbnN0ICYgbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2
ZWN0b3I8IG1hbmlmZXN0PGNlcnQ+ID4gJiBjZXJ0cyk7CiAgCiAgdm9pZCBnZXRfbWFuaWZlc3Rf
Y2VydChoZXhlbmM8aWQ+IGNvbnN0ICYgaGFzaCwKICAgICAgICAgICAgICAgICAgICAgICAgIG1h
bmlmZXN0PGNlcnQ+ICYgY2VydCk7CgogIAogIC8vIG1lcmtsZSB0cmVlIHN0dWZmCgogIGJvb2wg
bWVya2xlX25vZGVfZXhpc3RzKHN0ZDo6c3RyaW5nIGNvbnN0ICYgdHlwZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICB1dGY4IGNvbnN0ICYgY29sbGVjdGlvbiwgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgIGhleGVuYzxw
cmVmaXg+IGNvbnN0ICYgcHJlZml4KTsKICAKICB2b2lkIGdldF9tZXJrbGVfbm9kZShzdGQ6OnN0
cmluZyBjb25zdCAmIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgdXRmOCBjb25zdCAmIGNv
bGxlY3Rpb24sIAogICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKICAgICAgICAg
ICAgICAgICAgICAgICBoZXhlbmM8cHJlZml4PiBjb25zdCAmIHByZWZpeCwKICAgICAgICAgICAg
ICAgICAgICAgICBiYXNlNjQ8bWVya2xlPiAmIG5vZGUpOwoKICB2b2lkIHB1dF9tZXJrbGVfbm9k
ZShzdGQ6OnN0cmluZyBjb25zdCAmIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgdXRmOCBj
b25zdCAmIGNvbGxlY3Rpb24sIAogICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwK
ICAgICAgICAgICAgICAgICAgICAgICBoZXhlbmM8cHJlZml4PiBjb25zdCAmIHByZWZpeCwKICAg
ICAgICAgICAgICAgICAgICAgICBiYXNlNjQ8bWVya2xlPiBjb25zdCAmIG5vZGUpOwoKICB2b2lk
IGVyYXNlX21lcmtsZV9ub2RlcyhzdGQ6OnN0cmluZyBjb25zdCAmIHR5cGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgdXRmOCBjb25zdCAmIGNvbGxlY3Rpb24pOwoKICAvLyBjb21wbGV0aW9u
IHN0dWZmCgogIHZvaWQgY29tcGxldGUoc3RkOjpzdHJpbmcgY29uc3QgJiBwYXJ0aWFsLAogICAg
ICAgICAgICAgICAgc3RkOjpzZXQ8cmV2aXNpb25faWQ+ICYgY29tcGxldGlvbnMpOwoKICB2b2lk
IGNvbXBsZXRlKHN0ZDo6c3RyaW5nIGNvbnN0ICYgcGFydGlhbCwKICAgICAgICAgICAgICAgIHN0
ZDo6c2V0PG1hbmlmZXN0X2lkPiAmIGNvbXBsZXRpb25zKTsKICAKICB2b2lkIGNvbXBsZXRlKHN0
ZDo6c3RyaW5nIGNvbnN0ICYgcGFydGlhbCwKICAgICAgICAgICAgICAgIHN0ZDo6c2V0PGZpbGVf
aWQ+ICYgY29tcGxldGlvbnMpOwoKICB2b2lkIGNvbXBsZXRlKGNvbW1hbmRzOjpzZWxlY3Rvcl90
eXBlIHR5LAogICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QgJiBwYXJ0aWFsLAogICAg
ICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGNvbW1hbmRzOjpzZWxlY3Rvcl90eXBl
LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZz4gPiBj
b25zdCAmIGxpbWl0LAogICAgICAgICAgICAgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+ICYgY29t
cGxldGlvbnMpOwogIAogIH5kYXRhYmFzZSgpOwoKfTsKCi8vIHRyYW5zYWN0aW9uIGd1YXJkcyBu
ZXN0LiBhY3F1aXJlIG9uZSBpbiBhbnkgc2NvcGUgeW91J2QgbGlrZQovLyB0cmFuc2FjdGlvbi1w
cm90ZWN0ZWQsIGFuZCBpdCdsbCBtYWtlIHN1cmUgdGhlIGRiIGFib3J0cyBhCi8vIHR4biBpZiB0
aGVyZSdzIGFueSBleGNlcHRpb24gYmVmb3JlIHlvdSBjYWxsIGNvbW1pdCgpCgpjbGFzcyB0cmFu
c2FjdGlvbl9ndWFyZAp7CiAgYm9vbCBjb21taXR0ZWQ7CiAgZGF0YWJhc2UgJiBkYjsKcHVibGlj
OgogIHRyYW5zYWN0aW9uX2d1YXJkKGRhdGFiYXNlICYgZCk7CiAgfnRyYW5zYWN0aW9uX2d1YXJk
KCk7CiAgdm9pZCBjb21taXQoKTsKfTsKCgoKI2VuZGlmIC8vIF9fREFUQUJBU0VfSEhfXwo=
_ATEOF


cat >left.b64 <<'_ATEOF'

I2lmbmRlZiBfX0RBVEFCQVNFX0hIX18KI2RlZmluZSBfX0RBVEFCQVNFX0hIX18KCi8vIGNvcHly
aWdodCAoQykgMjAwMiwgMjAwMyBncmF5ZG9uIGhvYXJlIDxncmF5ZG9uQHBvYm94LmNvbT4KLy8g
YWxsIHJpZ2h0cyByZXNlcnZlZC4KLy8gbGljZW5zZWQgdG8gdGhlIHB1YmxpYyB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBHUEwgKD49IDIpCi8vIHNlZSB0aGUgZmlsZSBDT1BZSU5HIGZvciBk
ZXRhaWxzCgpzdHJ1Y3Qgc3FsaXRlMzsKc3RydWN0IGNlcnQ7CgojaW5jbHVkZSA8dmVjdG9yPgoj
aW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8c3RyaW5nPgoKI2luY2x1ZGUg
PGJvb3N0L2ZpbGVzeXN0ZW0vcGF0aC5ocHA+CgojaW5jbHVkZSAiY29tbWFuZHMuaGgiCiNpbmNs
dWRlICJtYW5pZmVzdC5oaCIKI2luY2x1ZGUgIm51bWVyaWNfdm9jYWIuaGgiCiNpbmNsdWRlICJ2
b2NhYi5oaCIKCnN0cnVjdCByZXZpc2lvbl9zZXQ7CgovLyB0aGlzIGZpbGUgZGVmaW5lcyBhIHB1
YmxpYywgdHlwZWQgaW50ZXJmYWNlIHRvIHRoZSBkYXRhYmFzZS4KLy8gdGhlIGRhdGFiYXNlIGNs
YXNzIGVuY2Fwc3VsYXRlcyBhbGwga25vd2xlZGdlIGFib3V0IHNxbGl0ZSwKLy8gdGhlIHNjaGVt
YSwgYW5kIGFsbCBTUUwgc3RhdGVtZW50cyB1c2VkIHRvIGFjY2VzcyB0aGUgc2NoZW1hLgovLwov
LyBvbmUgdGhpbmcgd2hpY2ggaXMgcmF0aGVyIGltcG9ydGFudCB0byBub3RlIGlzIHRoYXQgdGhp
cyBmaWxlCi8vIGRlYWxzIHdpdGggdHdvIHNvcnRzIG9mIHZlcnNpb24gcmVsYXRpb25zaGlwcy4g
dGhlIHZlcnNpb25zCi8vIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UgYXJlIGFsbCAqYmFja3dhcmRz
KiBmcm9tIHRob3NlIHRoZSBwcm9ncmFtCi8vIHNlZXMuIHNvIGZvciBleGFtcGxlIGlmIHlvdSBo
YXZlIHR3byB2ZXJzaW9ucyBvZiBhIGZpbGUKLy8gCi8vIGZpbGUuMSwgZmlsZS4yCi8vCi8vIHdo
ZXJlIGZpbGUuMiB3YXMgYSBtb2RpZmljYXRpb24gb2YgZmlsZS4xLCB0aGVuIGFzIGZhciBhcyB0
aGUgcmVzdCBvZgovLyB0aGUgYXBwbGljYXRpb24gaXMgY29uY2VybmVkIC0tIGFuZCB0aGUgYW5j
ZXN0cnkgZ3JhcGggLS0gZmlsZS4xIGlzIHRoZQovLyAib2xkIiB2ZXJzaW9uIGFuZCBmaWxlLjIg
aXMgdGhlICJuZXciIHZlcnNpb24uIG5vdGUgdGhlIHVzZSBvZiB0ZXJtcwovLyB3aGljaCBkZXNj
cmliZSB0aW1lLCBhbmQgdGhlIHNlcXVlbmNlIG9mIGVkaXRzIGEgdXNlciBtYWtlcyB0byBhCi8v
IGZpbGUuIHRob3NlIGFyZSBhbmNlc3RyeSB0ZXJtcy4gd2hlbiB0aGUgYXBwbGljYXRpb24gY29t
cG9zZXMgYQovLyBwYXRjaHNldCwgZm9yIGV4YW1wbGUsIGl0J2xsIGNvbnRhaW4gdGhlIGRpZmYg
ZGVsdGEoZmlsZS4xLCBmaWxlLjIpCi8vCi8vIGZyb20gdGhlIGRhdGFiYXNlJ3MgcGVyc3BlY3Rp
dmUsIGhvd2V2ZXIsIGZpbGUuMSBpcyB0aGUgZGVyaXZlZCB2ZXJzaW9uLAovLyBhbmQgZmlsZS4y
IGlzIHRoZSBiYXNlIHZlcnNpb24uIHRoZSBiYXNlIHZlcnNpb24gaXMgc3RvcmVkIGluIHRoZQov
LyAiZmlsZXMiIHRhYmxlLCBhbmQgdGhlICpyZXZlcnNlKiBkaWZmIGRlbHRhKGZpbGUuMiwgZmls
ZS4xKSBpcyBzdG9yZWQgaW4KLy8gdGhlICJmaWxlX2RlbHRhcyIgdGFibGUsIHVuZGVyIHRoZSBp
ZCBvZiBmaWxlLjEsIHdpdGggdGhlIGlkIG9mIGZpbGUuMgovLyBsaXN0ZWQgYXMgaXRzIGJhc2Uu
IG5vdGUgdGhlIHVzZSBvZiB0aGUgdGVybXMgd2hpY2ggZGVzY3JpYmUKLy8gcmVjb25zdHJ1Y3Rp
b247IHRob3NlIGFyZSBzdG9yYWdlLXN5c3RlbSB0ZXJtcy4KLy8KLy8gdGhlIGludGVyZmFjZSAq
dG8qIHRoZSBkYXRhYmFzZSwgYW5kIHRoZSBhbmNlc3RyeSB2ZXJzaW9uIGdyYXBocywgdXNlCi8v
IHRoZSBvbGQgLyBuZXcgbWV0YXBob3Igb2YgYW5jZXN0cnksIGJ1dCB3aXRoaW4gdGhlIGRhdGFi
YXNlIChpbmNsdWRpbmcKLy8gdGhlIHByaXZhdGUgaGVscGVyIG1ldGhvZHMsIGFuZCB0aGUgc3Rv
cmFnZSB2ZXJzaW9uIGdyYXBocykgdGhlCi8vIGJhc2UvZGVyaXZlZCBzdG9yYWdlIG1ldGFwaG9y
IGlzIHVzZWQuIHRoZSBvbmx5IHJlYWwgd2F5IHRvIHRlbGwgd2hpY2gKLy8gaXMgd2hpY2ggaXMg
dG8gbG9vayBhdCB0aGUgcGFyYW1ldGVyIG5hbWVzIGFuZCBjb2RlLiBJIG1pZ2h0IHRyeSB0bwov
LyBleHByZXNzIHRoaXMgaW4gdGhlIHR5cGUgc3lzdGVtIHNvbWUgZGF5LCBidXQgbm90IHByZXNl
bnRseS4KLy8KLy8gdGhlIGtleSBwaHJhc2UgdG8ga2VlcCByZXBlYXRpbmcgd2hlbiB3b3JraW5n
IG9uIHRoaXMgY29kZSBpczoKLy8gCi8vICJiYXNlIGZpbGVzIGFyZSBuZXcsIGRlcml2ZWQgZmls
ZXMgYXJlIG9sZCIKLy8KLy8gaXQgbWFrZXMgdGhlIGNvZGUgY29uZnVzaW5nLCBJIGtub3cuIHRo
aXMgaXMgcG9zc2libHkgdGhlIHdvcnN0IHBhcnQgb2YKLy8gdGhlIHByb2dyYW0uIEkgZG9uJ3Qg
a25vdyBpZiB0aGVyZSdzIGFueSB3YXkgdG8gbWFrZSBpdCBjbGVhcmVyLgoKY2xhc3MgdHJhbnNh
Y3Rpb25fZ3VhcmQ7CnN0cnVjdCBwb3N0aW5nOwpzdHJ1Y3QgYXBwX3N0YXRlOwoKY2xhc3MgZGF0
YWJhc2UKewogIGZzOjpwYXRoIGZpbGVuYW1lOwogIHN0ZDo6c3RyaW5nIGNvbnN0IHNjaGVtYTsK
ICB2b2lkIGNoZWNrX3NjaGVtYSgpOwoKICBzdHJ1Y3QgYXBwX3N0YXRlICogX19hcHA7CiAgc3Ry
dWN0IHNxbGl0ZTMgKiBfX3NxbDsKICBzdHJ1Y3Qgc3FsaXRlMyAqIHNxbChib29sIGluaXQgPSBm
YWxzZSk7CiAgaW50IHRyYW5zYWN0aW9uX2xldmVsOwoKICB2b2lkIGluc3RhbGxfZnVuY3Rpb25z
KGFwcF9zdGF0ZSAqIGFwcCk7CiAgdm9pZCBpbnN0YWxsX3ZpZXdzKCk7CgogIHR5cGVkZWYgc3Rk
Ojp2ZWN0b3I8IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiA+IHJlc3VsdHM7CiAgdm9pZCBleGVj
dXRlKGNoYXIgY29uc3QgKiBxdWVyeSwgLi4uKTsKICB2b2lkIGZldGNoKHJlc3VsdHMgJiByZXMs
IAogICAgICAgICAgICAgaW50IGNvbnN0IHdhbnRfY29scywgCiAgICAgICAgICAgICBpbnQgY29u
c3Qgd2FudF9yb3dzLCAKICAgICAgICAgICAgIGNoYXIgY29uc3QgKiBxdWVyeSwgLi4uKTsKCiAg
Ym9vbCBleGlzdHMoaGV4ZW5jPGlkPiBjb25zdCAmIGlkZW50LCAKICAgICAgICAgICAgICBzdGQ6
OnN0cmluZyBjb25zdCAmIHRhYmxlKTsKICBib29sIGRlbHRhX2V4aXN0cyhoZXhlbmM8aWQ+IGNv
bnN0ICYgaWRlbnQsCiAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QgJiB0YWJs
ZSk7CiAgYm9vbCBkZWx0YV9leGlzdHMoaGV4ZW5jPGlkPiBjb25zdCAmIGlkZW50LAogICAgICAg
ICAgICAgICAgICAgIGhleGVuYzxpZD4gY29uc3QgJiBiYXNlLAogICAgICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nIGNvbnN0ICYgdGFibGUpOwoKICB1bnNpZ25lZCBsb25nIGNvdW50KHN0ZDo6
c3RyaW5nIGNvbnN0ICYgdGFibGUpOwoKICB2b2lkIGdldF9pZHMoc3RkOjpzdHJpbmcgY29uc3Qg
JiB0YWJsZSwgc3RkOjpzZXQ8IGhleGVuYzxpZD4gPiAmIGlkcyk7IAoKICB2b2lkIGdldChoZXhl
bmM8aWQ+IGNvbnN0ICYgbmV3X2lkLAogICAgICAgICAgIGJhc2U2NDwgZ3ppcDxkYXRhPiA+ICYg
ZGF0LAogICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0ICYgdGFibGUpOwogIHZvaWQgZ2V0X2Rl
bHRhKGhleGVuYzxpZD4gY29uc3QgJiBpZGVudCwKICAgICAgICAgICAgICAgICBoZXhlbmM8aWQ+
IGNvbnN0ICYgYmFzZSwKICAgICAgICAgICAgICAgICBiYXNlNjQ8IGd6aXA8ZGVsdGE+ID4gJiBk
ZWwsCiAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QgJiB0YWJsZSk7CiAgdm9pZCBn
ZXRfdmVyc2lvbihoZXhlbmM8aWQ+IGNvbnN0ICYgaWQsCiAgICAgICAgICAgICAgICAgICBiYXNl
NjQ8IGd6aXA8ZGF0YT4gPiAmIGRhdCwKICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNv
bnN0ICYgZGF0YV90YWJsZSwKICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0ICYg
ZGVsdGFfdGFibGUpOwogIAogIHZvaWQgcHV0KGhleGVuYzxpZD4gY29uc3QgJiBuZXdfaWQsCiAg
ICAgICAgICAgYmFzZTY0PCBnemlwPGRhdGE+ID4gY29uc3QgJiBkYXQsCiAgICAgICAgICAgc3Rk
OjpzdHJpbmcgY29uc3QgJiB0YWJsZSk7CiAgdm9pZCBkcm9wKGhleGVuYzxpZD4gY29uc3QgJiBi
YXNlLAogICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25zdCAmIHRhYmxlKTsKICB2b2lkIHB1dF9k
ZWx0YShoZXhlbmM8aWQ+IGNvbnN0ICYgaWQsCiAgICAgICAgICAgICAgICAgaGV4ZW5jPGlkPiBj
b25zdCAmIGJhc2UsCiAgICAgICAgICAgICAgICAgYmFzZTY0PCBnemlwPGRlbHRhPiA+IGNvbnN0
ICYgZGVsLAogICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0ICYgdGFibGUpOwogIHZv
aWQgcHV0X3ZlcnNpb24oaGV4ZW5jPGlkPiBjb25zdCAmIG9sZF9pZCwKICAgICAgICAgICAgICAg
ICAgIGhleGVuYzxpZD4gY29uc3QgJiBuZXdfaWQsCiAgICAgICAgICAgICAgICAgICBiYXNlNjQ8
IGd6aXA8ZGVsdGE+ID4gY29uc3QgJiBkZWwsCiAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmlu
ZyBjb25zdCAmIGRhdGFfdGFibGUsCiAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25z
dCAmIGRlbHRhX3RhYmxlKTsKICB2b2lkIHB1dF9yZXZlcnNlX3ZlcnNpb24oaGV4ZW5jPGlkPiBj
b25zdCAmIG5ld19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaGV4ZW5jPGlkPiBjb25z
dCAmIG9sZF9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0PCBnemlwPGRlbHRh
PiA+IGNvbnN0ICYgcmV2ZXJzZV9kZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
c3RyaW5nIGNvbnN0ICYgZGF0YV90YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
OjpzdHJpbmcgY29uc3QgJiBkZWx0YV90YWJsZSk7CgogIHZvaWQgZ2V0X2tleXMoc3RkOjpzdHJp
bmcgY29uc3QgJiB0YWJsZSwgc3RkOjp2ZWN0b3I8cnNhX2tleXBhaXJfaWQ+ICYga2V5cyk7Cgog
IGJvb2wgY2VydF9leGlzdHMoY2VydCBjb25zdCAmIHQsCiAgICAgICAgICAgICAgICAgIHN0ZDo6
c3RyaW5nIGNvbnN0ICYgdGFibGUpOwogIHZvaWQgcHV0X2NlcnQoY2VydCBjb25zdCAmIHQsIHN0
ZDo6c3RyaW5nIGNvbnN0ICYgdGFibGUpOyAgCiAgdm9pZCByZXN1bHRzX3RvX2NlcnRzKHJlc3Vs
dHMgY29uc3QgJiByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8Y2VydD4g
JiBjZXJ0cyk7CgogIHZvaWQgZ2V0X2NlcnRzKHN0ZDo6dmVjdG9yPCBjZXJ0ID4gJiBjZXJ0cywK
ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25zdCAmIHRhYmxlKTsgIAoKICB2b2lkIGdl
dF9jZXJ0cyhoZXhlbmM8aWQ+IGNvbnN0ICYgaWQsIAogICAgICAgICAgICAgICAgIHN0ZDo6dmVj
dG9yPCBjZXJ0ID4gJiBjZXJ0cywKICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25zdCAm
IHRhYmxlKTsgIAoKICB2b2lkIGdldF9jZXJ0cyhjZXJ0X25hbWUgY29uc3QgJiBuYW1lLCAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8IGNlcnQgPiAmIGNlcnRzLAog
ICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0ICYgdGFibGUpOwoKICB2b2lkIGdldF9j
ZXJ0cyhoZXhlbmM8aWQ+IGNvbnN0ICYgaWQsCiAgICAgICAgICAgICAgICAgY2VydF9uYW1lIGNv
bnN0ICYgbmFtZSwKICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjwgY2VydCA+ICYgY2VydHMs
CiAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QgJiB0YWJsZSk7ICAKCiAgdm9pZCBn
ZXRfY2VydHMoaGV4ZW5jPGlkPiBjb25zdCAmIGlkLAogICAgICAgICAgICAgICAgIGNlcnRfbmFt
ZSBjb25zdCAmIG5hbWUsCiAgICAgICAgICAgICAgICAgYmFzZTY0PGNlcnRfdmFsdWU+IGNvbnN0
ICYgdmFsLCAKICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjwgY2VydCA+ICYgY2VydHMsCiAg
ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QgJiB0YWJsZSk7ICAKCiAgdm9pZCBnZXRf
Y2VydHMoY2VydF9uYW1lIGNvbnN0ICYgbmFtZSwKICAgICAgICAgICAgICAgICBiYXNlNjQ8Y2Vy
dF92YWx1ZT4gY29uc3QgJiB2YWwsIAogICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGNlcnQ+
ICYgY2VydHMsCiAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QgJiB0YWJsZSk7Cgog
IHZvaWQgYmVnaW5fdHJhbnNhY3Rpb24oKTsKICB2b2lkIGNvbW1pdF90cmFuc2FjdGlvbigpOwog
IHZvaWQgcm9sbGJhY2tfdHJhbnNhY3Rpb24oKTsKICBmcmllbmQgY2xhc3MgdHJhbnNhY3Rpb25f
Z3VhcmQ7CiAgZnJpZW5kIHZvaWQgcmNzX3B1dF9yYXdfZmlsZV9lZGdlKGhleGVuYzxpZD4gY29u
c3QgJiBvbGRfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhleGVuYzxp
ZD4gY29uc3QgJiBuZXdfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJh
c2U2NDwgZ3ppcDxkZWx0YT4gPiBjb25zdCAmIGRlbCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YWJhc2UgJiBkYik7CiAgZnJpZW5kIHZvaWQgcmNzX3B1dF9yYXdfbWFu
aWZlc3RfZWRnZShoZXhlbmM8aWQ+IGNvbnN0ICYgb2xkX2lkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaGV4ZW5jPGlkPiBjb25zdCAmIG5ld19pZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NDwgZ3ppcDxkZWx0YT4gPiBjb25z
dCAmIGRlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFiYXNl
ICYgZGIpOwoKcHVibGljOgoKICBkYXRhYmFzZShmczo6cGF0aCBjb25zdCAmIGZpbGUpOwoKICB2
b2lkIHNldF9maWxlbmFtZShmczo6cGF0aCBjb25zdCAmIGZpbGUpOwogIHZvaWQgaW5pdGlhbGl6
ZSgpOwogIHZvaWQgZGVidWcoc3RkOjpzdHJpbmcgY29uc3QgJiBzcWwsIHN0ZDo6b3N0cmVhbSAm
IG91dCk7CiAgdm9pZCBkdW1wKHN0ZDo6b3N0cmVhbSAmKTsKICB2b2lkIGxvYWQoc3RkOjppc3Ry
ZWFtICYpOwogIHZvaWQgaW5mbyhzdGQ6Om9zdHJlYW0gJik7CiAgdm9pZCB2ZXJzaW9uKHN0ZDo6
b3N0cmVhbSAmKTsKICB2b2lkIG1pZ3JhdGUoKTsKICB2b2lkIHJlaGFzaCgpOwogIHZvaWQgZW5z
dXJlX29wZW4oKTsKICAKICBib29sIGZpbGVfdmVyc2lvbl9leGlzdHMoZmlsZV9pZCBjb25zdCAm
IGlkKTsKICBib29sIG1hbmlmZXN0X3ZlcnNpb25fZXhpc3RzKG1hbmlmZXN0X2lkIGNvbnN0ICYg
aWQpOwogIGJvb2wgcmV2aXNpb25fZXhpc3RzKHJldmlzaW9uX2lkIGNvbnN0ICYgaWQpOwoKICB2
b2lkIGdldF9maWxlX2lkcyhzdGQ6OnNldDxmaWxlX2lkPiAmIGlkcyk7CiAgdm9pZCBnZXRfbWFu
aWZlc3RfaWRzKHN0ZDo6c2V0PG1hbmlmZXN0X2lkPiAmIGlkcyk7CiAgdm9pZCBnZXRfcmV2aXNp
b25faWRzKHN0ZDo6c2V0PHJldmlzaW9uX2lkPiAmIGlkcyk7CgogIHZvaWQgc2V0X2FwcChhcHBf
c3RhdGUgKiBhcHApOwogIAogIC8vIGdldCBwbGFpbiB2ZXJzaW9uIGlmIGl0IGV4aXN0cywgb3Ig
cmVjb25zdHJ1Y3QgdmVyc2lvbgogIC8vIGZyb20gZGVsdGFzIChpZiB0aGV5IGV4aXN0KQogIHZv
aWQgZ2V0X2ZpbGVfdmVyc2lvbihmaWxlX2lkIGNvbnN0ICYgaWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgIGZpbGVfZGF0YSAmIGRhdCk7CgogIC8vIGdldCBmaWxlIGRlbHRhIGlmIGl0IGV4aXN0
cywgZWxzZSBjYWxjdWxhdGUgaXQuCiAgLy8gYm90aCBtYW5pZmVzdHMgbXVzdCBleGlzdC4KICB2
b2lkIGdldF9maWxlX2RlbHRhKGZpbGVfaWQgY29uc3QgJiBzcmMsCiAgICAgICAgICAgICAgICAg
ICAgICBmaWxlX2lkIGNvbnN0ICYgZHN0LAogICAgICAgICAgICAgICAgICAgICAgZmlsZV9kZWx0
YSAmIGRlbCk7CgogIC8vIHB1dCBmaWxlIHcvbyBwcmVkZWNlc3NvciBpbnRvIGRiCiAgdm9pZCBw
dXRfZmlsZShmaWxlX2lkIGNvbnN0ICYgbmV3X2lkLAogICAgICAgICAgICAgICAgZmlsZV9kYXRh
IGNvbnN0ICYgZGF0KTsKCiAgLy8gc3RvcmUgbmV3IHZlcnNpb24gYW5kIHVwZGF0ZSBvbGQgdmVy
c2lvbiB0byBiZSBhIGRlbHRhCiAgdm9pZCBwdXRfZmlsZV92ZXJzaW9uKGZpbGVfaWQgY29uc3Qg
JiBvbGRfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfaWQgY29uc3QgJiBuZXdfaWQs
CiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfZGVsdGEgY29uc3QgJiBkZWwpOwoKICAvLyBs
b2FkIGluIGEgImRpcmVjdCIgbmV3IC0+IG9sZCByZXZlcnNlIGVkZ2UgKHVzZWQgZHVyaW5nCiAg
Ly8gbmV0c3luYyBhbmQgQ1ZTIGxvYWQtaW4pCiAgdm9pZCBwdXRfZmlsZV9yZXZlcnNlX3ZlcnNp
b24oZmlsZV9pZCBjb25zdCAmIG9sZF9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmaWxlX2lkIGNvbnN0ICYgbmV3X2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZpbGVfZGVsdGEgY29uc3QgJiBkZWwpOwoKICAvLyBnZXQgcGxhaW4gdmVyc2lvbiBpZiBpdCBl
eGlzdHMsIG9yIHJlY29uc3RydWN0IHZlcnNpb24KICAvLyBmcm9tIGRlbHRhcyAoaWYgdGhleSBl
eGlzdCkuIAogIHZvaWQgZ2V0X21hbmlmZXN0X3ZlcnNpb24obWFuaWZlc3RfaWQgY29uc3QgJiBp
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X2RhdGEgJiBkYXQpOwoKICAv
LyBnZXQgYSBjb25zdHJ1Y3RlZCBtYW5pZmVzdAogIHZvaWQgZ2V0X21hbmlmZXN0KG1hbmlmZXN0
X2lkIGNvbnN0ICYgaWQsCiAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfbWFwICYgbW0pOwoK
ICAvLyBnZXQgbWFuaWZlc3QgZGVsdGEgaWYgaXQgZXhpc3RzLCBlbHNlIGNhbGN1bGF0ZSBpdC4K
ICAvLyBib3RoIG1hbmlmZXN0cyBtdXN0IGV4aXN0LgogIHZvaWQgZ2V0X21hbmlmZXN0X2RlbHRh
KG1hbmlmZXN0X2lkIGNvbnN0ICYgc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmlm
ZXN0X2lkIGNvbnN0ICYgZHN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X2Rl
bHRhICYgZGVsKTsKCiAgLy8gcHV0IG1hbmlmZXN0IHcvbyBwcmVkZWNlc3NvciBpbnRvIGRiCiAg
dm9pZCBwdXRfbWFuaWZlc3QobWFuaWZlc3RfaWQgY29uc3QgJiBuZXdfaWQsCiAgICAgICAgICAg
ICAgICAgICAgbWFuaWZlc3RfZGF0YSBjb25zdCAmIGRhdCk7CgogIC8vIHN0b3JlIG5ldyB2ZXJz
aW9uIGFuZCB1cGRhdGUgb2xkIHZlcnNpb24gdG8gYmUgYSBkZWx0YQogIHZvaWQgcHV0X21hbmlm
ZXN0X3ZlcnNpb24obWFuaWZlc3RfaWQgY29uc3QgJiBvbGRfaWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYW5pZmVzdF9pZCBjb25zdCAmIG5ld19pZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hbmlmZXN0X2RlbHRhIGNvbnN0ICYgZGVsKTsKCiAgLy8gbG9hZCBpbiBhICJk
aXJlY3QiIG5ldyAtPiBvbGQgcmV2ZXJzZSBlZGdlICh1c2VkIGR1cmluZwogIC8vIG5ldHN5bmMg
YW5kIENWUyBsb2FkLWluKQogIHZvaWQgcHV0X21hbmlmZXN0X3JldmVyc2VfdmVyc2lvbihtYW5p
ZmVzdF9pZCBjb25zdCAmIG9sZF9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWFuaWZlc3RfaWQgY29uc3QgJiBuZXdfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hbmlmZXN0X2RlbHRhIGNvbnN0ICYgZGVsKTsKCgogIHZvaWQgZ2V0X3Jldmlz
aW9uX2FuY2VzdHJ5KHN0ZDo6bXVsdGltYXA8cmV2aXNpb25faWQsIHJldmlzaW9uX2lkPiAmIGdy
YXBoKTsKCiAgdm9pZCBnZXRfcmV2aXNpb25fcGFyZW50cyhyZXZpc2lvbl9pZCBjb25zdCAmIGlk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnNldDxyZXZpc2lvbl9pZD4gJiBwYXJl
bnRzKTsKCiAgdm9pZCBnZXRfcmV2aXNpb25fY2hpbGRyZW4ocmV2aXNpb25faWQgY29uc3QgJiBp
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnNldDxyZXZpc2lvbl9pZD4gJiBj
aGlsZHJlbik7CgogIHZvaWQgZ2V0X3JldmlzaW9uX21hbmlmZXN0KHJldmlzaW9uX2lkIGNvbnN0
ICYgY2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfaWQgJiBtaWQpOwoK
ICB2b2lkIGdldF9yZXZpc2lvbihyZXZpc2lvbl9pZCBjb25zdCAmIGlkLAogICAgICAgICAgICAg
ICAgICAgcmV2aXNpb25fc2V0ICYgY3MpOwoKICB2b2lkIGdldF9yZXZpc2lvbihyZXZpc2lvbl9p
ZCBjb25zdCAmIGlkLAogICAgICAgICAgICAgICAgICAgcmV2aXNpb25fZGF0YSAmIGRhdCk7Cgog
IHZvaWQgcHV0X3JldmlzaW9uKHJldmlzaW9uX2lkIGNvbnN0ICYgbmV3X2lkLAogICAgICAgICAg
ICAgICAgICAgcmV2aXNpb25fc2V0IGNvbnN0ICYgY3MpOwoKICB2b2lkIHB1dF9yZXZpc2lvbihy
ZXZpc2lvbl9pZCBjb25zdCAmIG5ld19pZCwKICAgICAgICAgICAgICAgICAgICByZXZpc2lvbl9k
YXRhIGNvbnN0ICYgZGF0KTsKICAKICB2b2lkIGRlbGV0ZV9leGlzdGluZ19yZXZzX2FuZF9jZXJ0
cygpOwoKICAvLyBjcnlwdG8ga2V5IC8gY2VydCBvcGVyYXRpb25zCgogIHZvaWQgZ2V0X2tleV9p
ZHMoc3RkOjpzdHJpbmcgY29uc3QgJiBwYXR0ZXJuLAogICAgICAgICAgICAgICAgICAgc3RkOjp2
ZWN0b3I8cnNhX2tleXBhaXJfaWQ+ICYgcHVia2V5cywKICAgICAgICAgICAgICAgICAgIHN0ZDo6
dmVjdG9yPHJzYV9rZXlwYWlyX2lkPiAmIHByaXZrZXlzKTsKCiAgdm9pZCBnZXRfcHJpdmF0ZV9r
ZXlzKHN0ZDo6dmVjdG9yPHJzYV9rZXlwYWlyX2lkPiAmIHByaXZrZXlzKTsKICB2b2lkIGdldF9w
dWJsaWNfa2V5cyhzdGQ6OnZlY3Rvcjxyc2Ffa2V5cGFpcl9pZD4gJiBwdWJrZXlzKTsKCiAgYm9v
bCBrZXlfZXhpc3RzKHJzYV9rZXlwYWlyX2lkIGNvbnN0ICYgaWQpOwoKICBib29sIHB1YmxpY19r
ZXlfZXhpc3RzKGhleGVuYzxpZD4gY29uc3QgJiBoYXNoKTsKICBib29sIHB1YmxpY19rZXlfZXhp
c3RzKHJzYV9rZXlwYWlyX2lkIGNvbnN0ICYgaWQpOwogIGJvb2wgcHJpdmF0ZV9rZXlfZXhpc3Rz
KHJzYV9rZXlwYWlyX2lkIGNvbnN0ICYgaWQpOwogIAogIHZvaWQgZ2V0X3B1YmtleShoZXhlbmM8
aWQ+IGNvbnN0ICYgaGFzaCwgCiAgICAgICAgICAgICAgICAgIHJzYV9rZXlwYWlyX2lkICYgaWQs
CiAgICAgICAgICAgICAgICAgIGJhc2U2NDxyc2FfcHViX2tleT4gJiBwdWJfZW5jb2RlZCk7Cgog
IHZvaWQgZ2V0X2tleShyc2Ffa2V5cGFpcl9pZCBjb25zdCAmIGlkLCAKICAgICAgICAgICAgICAg
YmFzZTY0PHJzYV9wdWJfa2V5PiAmIHB1Yl9lbmNvZGVkKTsKCiAgdm9pZCBnZXRfa2V5KHJzYV9r
ZXlwYWlyX2lkIGNvbnN0ICYgaWQsIAogICAgICAgICAgICAgICBiYXNlNjQ8IGFyYzQ8cnNhX3By
aXZfa2V5PiA+ICYgcHJpdl9lbmNvZGVkKTsKCiAgdm9pZCBwdXRfa2V5KHJzYV9rZXlwYWlyX2lk
IGNvbnN0ICYgaWQsIAogICAgICAgICAgICAgICBiYXNlNjQ8cnNhX3B1Yl9rZXk+IGNvbnN0ICYg
cHViX2VuY29kZWQpOwogIAogIHZvaWQgcHV0X2tleShyc2Ffa2V5cGFpcl9pZCBjb25zdCAmIGlk
LCAKICAgICAgICAgICAgICAgYmFzZTY0PCBhcmM0PHJzYV9wcml2X2tleT4gPiBjb25zdCAmIHBy
aXZfZW5jb2RlZCk7CiAgCiAgdm9pZCBwdXRfa2V5X3BhaXIocnNhX2tleXBhaXJfaWQgY29uc3Qg
JiBwdWJfaWQsIAogICAgICAgICAgICAgICAgICAgIGJhc2U2NDxyc2FfcHViX2tleT4gY29uc3Qg
JiBwdWJfZW5jb2RlZCwKICAgICAgICAgICAgICAgICAgICBiYXNlNjQ8IGFyYzQ8cnNhX3ByaXZf
a2V5PiA+IGNvbnN0ICYgcHJpdl9lbmNvZGVkKTsKCiAgdm9pZCBkZWxldGVfcHJpdmF0ZV9rZXko
cnNhX2tleXBhaXJfaWQgY29uc3QgJiBwdWJfaWQpOwoKICAvLyBub3RlOiB0aGlzIHNlY3Rpb24g
aXMgcmlkaWN1bG91cy4gcGxlYXNlIGRvIHNvbWV0aGluZyBhYm91dCBpdC4KCiAgYm9vbCBtYW5p
ZmVzdF9jZXJ0X2V4aXN0cyhtYW5pZmVzdDxjZXJ0PiBjb25zdCAmIGNlcnQpOwogIGJvb2wgbWFu
aWZlc3RfY2VydF9leGlzdHMoaGV4ZW5jPGlkPiBjb25zdCAmIGhhc2gpOwogIHZvaWQgcHV0X21h
bmlmZXN0X2NlcnQobWFuaWZlc3Q8Y2VydD4gY29uc3QgJiBjZXJ0KTsKCiAgYm9vbCByZXZpc2lv
bl9jZXJ0X2V4aXN0cyhyZXZpc2lvbjxjZXJ0PiBjb25zdCAmIGNlcnQpOwogIGJvb2wgcmV2aXNp
b25fY2VydF9leGlzdHMoaGV4ZW5jPGlkPiBjb25zdCAmIGhhc2gpOwoKICB2b2lkIHB1dF9yZXZp
c2lvbl9jZXJ0KHJldmlzaW9uPGNlcnQ+IGNvbnN0ICYgY2VydCk7CgogIC8vIHRoaXMgdmFyaWFu
dCBoYXMgdG8gYmUgcmF0aGVyIGNvYXJzZSBhbmQgZmFzdCwgZm9yIG5ldHN5bmMncyB1c2UKICB2
b2lkIGdldF9yZXZpc2lvbl9jZXJ0X2luZGV4KHN0ZDo6dmVjdG9yPCBzdGQ6OnBhaXI8aGV4ZW5j
PGlkPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6cGFpcjxyZXZpc2lvbl9p
ZCwgcnNhX2tleXBhaXJfaWQ+ID4gPiAmIGlkeCk7CgogIHZvaWQgZ2V0X3JldmlzaW9uX2NlcnRz
KHN0ZDo6dmVjdG9yPCByZXZpc2lvbjxjZXJ0PiA+ICYgY2VydHMpOwoKICB2b2lkIGdldF9yZXZp
c2lvbl9jZXJ0cyhjZXJ0X25hbWUgY29uc3QgJiBuYW1lLCAKICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OnZlY3RvcjwgcmV2aXNpb248Y2VydD4gPiAmIGNlcnRzKTsKCiAgdm9pZCBnZXRf
cmV2aXNpb25fY2VydHMocmV2aXNpb25faWQgY29uc3QgJiBpZCwgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2VydF9uYW1lIGNvbnN0ICYgbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjp2ZWN0b3I8IHJldmlzaW9uPGNlcnQ+ID4gJiBjZXJ0cyk7CgogIHZvaWQgZ2V0X3Jl
dmlzaW9uX2NlcnRzKGNlcnRfbmFtZSBjb25zdCAmIG5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgYmFzZTY0PGNlcnRfdmFsdWU+IGNvbnN0ICYgdmFsLCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6OnZlY3RvcjwgcmV2aXNpb248Y2VydD4gPiAmIGNlcnRzKTsKCiAgdm9pZCBn
ZXRfcmV2aXNpb25fY2VydHMocmV2aXNpb25faWQgY29uc3QgJiBpZCwgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2VydF9uYW1lIGNvbnN0ICYgbmFtZSwgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgYmFzZTY0PGNlcnRfdmFsdWU+IGNvbnN0ICYgdmFsdWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjp2ZWN0b3I8IHJldmlzaW9uPGNlcnQ+ID4gJiBjZXJ0cyk7CgogIHZvaWQg
Z2V0X3JldmlzaW9uX2NlcnRzKHJldmlzaW9uX2lkIGNvbnN0ICYgaWQsIAogICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPCByZXZpc2lvbjxjZXJ0PiA+ICYgY2VydHMpOwoKICB2
b2lkIGdldF9yZXZpc2lvbl9jZXJ0KGhleGVuYzxpZD4gY29uc3QgJiBoYXNoLAogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV2aXNpb248Y2VydD4gJiBjZXJ0KTsKICAKICB2b2lkIGdldF9tYW5p
ZmVzdF9jZXJ0cyhtYW5pZmVzdF9pZCBjb25zdCAmIGlkLCAKICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OnZlY3RvcjwgbWFuaWZlc3Q8Y2VydD4gPiAmIGNlcnRzKTsKCiAgdm9pZCBnZXRf
bWFuaWZlc3RfY2VydHMoY2VydF9uYW1lIGNvbnN0ICYgbmFtZSwgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjp2ZWN0b3I8IG1hbmlmZXN0PGNlcnQ+ID4gJiBjZXJ0cyk7CgogIHZvaWQg
Z2V0X21hbmlmZXN0X2NlcnRzKG1hbmlmZXN0X2lkIGNvbnN0ICYgaWQsIAogICAgICAgICAgICAg
ICAgICAgICAgICAgIGNlcnRfbmFtZSBjb25zdCAmIG5hbWUsIAogICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6dmVjdG9yPCBtYW5pZmVzdDxjZXJ0PiA+ICYgY2VydHMpOwogIAogIHZvaWQg
Z2V0X21hbmlmZXN0X2NlcnQoaGV4ZW5jPGlkPiBjb25zdCAmIGhhc2gsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBtYW5pZmVzdDxjZXJ0PiAmIGNlcnQpOwoKICAvLyBlcG9jaHMgCgogIHZvaWQg
Z2V0X2Vwb2NocyhzdGQ6Om1hcDxjZXJ0X3ZhbHVlLCBlcG9jaF9kYXRhPiAmIGVwb2Nocyk7Cgog
IHZvaWQgZ2V0X2Vwb2NoKGVwb2NoX2lkIGNvbnN0ICYgZWlkLCBjZXJ0X3ZhbHVlICYgYnJhbmNo
LCBlcG9jaF9kYXRhICYgZXBvKTsKICAKICBib29sIGVwb2NoX2V4aXN0cyhlcG9jaF9pZCBjb25z
dCAmIGVpZCk7CgogIHZvaWQgc2V0X2Vwb2NoKGNlcnRfdmFsdWUgY29uc3QgJiBicmFuY2gsIGVw
b2NoX2RhdGEgY29uc3QgJiBlcG8pOyAgCgogIHZvaWQgY2xlYXJfZXBvY2goY2VydF92YWx1ZSBj
b25zdCAmIGJyYW5jaCk7CiAKICAvLyBjb21wbGV0aW9uIHN0dWZmCgogIHZvaWQgY29tcGxldGUo
c3RkOjpzdHJpbmcgY29uc3QgJiBwYXJ0aWFsLAogICAgICAgICAgICAgICAgc3RkOjpzZXQ8cmV2
aXNpb25faWQ+ICYgY29tcGxldGlvbnMpOwoKICB2b2lkIGNvbXBsZXRlKHN0ZDo6c3RyaW5nIGNv
bnN0ICYgcGFydGlhbCwKICAgICAgICAgICAgICAgIHN0ZDo6c2V0PG1hbmlmZXN0X2lkPiAmIGNv
bXBsZXRpb25zKTsKICAKICB2b2lkIGNvbXBsZXRlKHN0ZDo6c3RyaW5nIGNvbnN0ICYgcGFydGlh
bCwKICAgICAgICAgICAgICAgIHN0ZDo6c2V0PGZpbGVfaWQ+ICYgY29tcGxldGlvbnMpOwoKICB2
b2lkIGNvbXBsZXRlKGNvbW1hbmRzOjpzZWxlY3Rvcl90eXBlIHR5LAogICAgICAgICAgICAgICAg
c3RkOjpzdHJpbmcgY29uc3QgJiBwYXJ0aWFsLAogICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8
c3RkOjpwYWlyPGNvbW1hbmRzOjpzZWxlY3Rvcl90eXBlLCAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZz4gPiBjb25zdCAmIGxpbWl0LAogICAgICAgICAg
ICAgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+ICYgY29tcGxldGlvbnMpOwogIAogIH5kYXRhYmFz
ZSgpOwoKfTsKCi8vIHRyYW5zYWN0aW9uIGd1YXJkcyBuZXN0LiBhY3F1aXJlIG9uZSBpbiBhbnkg
c2NvcGUgeW91J2QgbGlrZQovLyB0cmFuc2FjdGlvbi1wcm90ZWN0ZWQsIGFuZCBpdCdsbCBtYWtl
IHN1cmUgdGhlIGRiIGFib3J0cyBhCi8vIHR4biBpZiB0aGVyZSdzIGFueSBleGNlcHRpb24gYmVm
b3JlIHlvdSBjYWxsIGNvbW1pdCgpCgpjbGFzcyB0cmFuc2FjdGlvbl9ndWFyZAp7CiAgYm9vbCBj
b21taXR0ZWQ7CiAgZGF0YWJhc2UgJiBkYjsKcHVibGljOgogIHRyYW5zYWN0aW9uX2d1YXJkKGRh
dGFiYXNlICYgZCk7CiAgfnRyYW5zYWN0aW9uX2d1YXJkKCk7CiAgdm9pZCBjb21taXQoKTsKfTsK
CgoKI2VuZGlmIC8vIF9fREFUQUJBU0VfSEhfXwo=
_ATEOF


cat >right.b64 <<'_ATEOF'

I2lmbmRlZiBfX0RBVEFCQVNFX0hIX18KI2RlZmluZSBfX0RBVEFCQVNFX0hIX18KCi8vIGNvcHly
aWdodCAoQykgMjAwMiwgMjAwMyBncmF5ZG9uIGhvYXJlIDxncmF5ZG9uQHBvYm94LmNvbT4KLy8g
YWxsIHJpZ2h0cyByZXNlcnZlZC4KLy8gbGljZW5zZWQgdG8gdGhlIHB1YmxpYyB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBHUEwgKD49IDIpCi8vIHNlZSB0aGUgZmlsZSBDT1BZSU5HIGZvciBk
ZXRhaWxzCgpzdHJ1Y3Qgc3FsaXRlMzsKc3RydWN0IGNlcnQ7CgojaW5jbHVkZSA8dmVjdG9yPgoj
aW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8c3RyaW5nPgoKI2luY2x1ZGUgPGJvb3N0L2ZpbGVzeXN0
ZW0vcGF0aC5ocHA+CgojaW5jbHVkZSAiY29tbWFuZHMuaGgiCiNpbmNsdWRlICJtYW5pZmVzdC5o
aCIKI2luY2x1ZGUgIm51bWVyaWNfdm9jYWIuaGgiCiNpbmNsdWRlICJ2b2NhYi5oaCIKCnN0cnVj
dCByZXZpc2lvbl9zZXQ7CgovLyB0aGlzIGZpbGUgZGVmaW5lcyBhIHB1YmxpYywgdHlwZWQgaW50
ZXJmYWNlIHRvIHRoZSBkYXRhYmFzZS4KLy8gdGhlIGRhdGFiYXNlIGNsYXNzIGVuY2Fwc3VsYXRl
cyBhbGwga25vd2xlZGdlIGFib3V0IHNxbGl0ZSwKLy8gdGhlIHNjaGVtYSwgYW5kIGFsbCBTUUwg
c3RhdGVtZW50cyB1c2VkIHRvIGFjY2VzcyB0aGUgc2NoZW1hLgovLwovLyBvbmUgdGhpbmcgd2hp
Y2ggaXMgcmF0aGVyIGltcG9ydGFudCB0byBub3RlIGlzIHRoYXQgdGhpcyBmaWxlCi8vIGRlYWxz
IHdpdGggdHdvIHNvcnRzIG9mIHZlcnNpb24gcmVsYXRpb25zaGlwcy4gdGhlIHZlcnNpb25zCi8v
IHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UgYXJlIGFsbCAqYmFja3dhcmRzKiBmcm9tIHRob3NlIHRo
ZSBwcm9ncmFtCi8vIHNlZXMuIHNvIGZvciBleGFtcGxlIGlmIHlvdSBoYXZlIHR3byB2ZXJzaW9u
cyBvZiBhIGZpbGUKLy8gCi8vIGZpbGUuMSwgZmlsZS4yCi8vCi8vIHdoZXJlIGZpbGUuMiB3YXMg
YSBtb2RpZmljYXRpb24gb2YgZmlsZS4xLCB0aGVuIGFzIGZhciBhcyB0aGUgcmVzdCBvZgovLyB0
aGUgYXBwbGljYXRpb24gaXMgY29uY2VybmVkIC0tIGFuZCB0aGUgYW5jZXN0cnkgZ3JhcGggLS0g
ZmlsZS4xIGlzIHRoZQovLyAib2xkIiB2ZXJzaW9uIGFuZCBmaWxlLjIgaXMgdGhlICJuZXciIHZl
cnNpb24uIG5vdGUgdGhlIHVzZSBvZiB0ZXJtcwovLyB3aGljaCBkZXNjcmliZSB0aW1lLCBhbmQg
dGhlIHNlcXVlbmNlIG9mIGVkaXRzIGEgdXNlciBtYWtlcyB0byBhCi8vIGZpbGUuIHRob3NlIGFy
ZSBhbmNlc3RyeSB0ZXJtcy4gd2hlbiB0aGUgYXBwbGljYXRpb24gY29tcG9zZXMgYQovLyBwYXRj
aHNldCwgZm9yIGV4YW1wbGUsIGl0J2xsIGNvbnRhaW4gdGhlIGRpZmYgZGVsdGEoZmlsZS4xLCBm
aWxlLjIpCi8vCi8vIGZyb20gdGhlIGRhdGFiYXNlJ3MgcGVyc3BlY3RpdmUsIGhvd2V2ZXIsIGZp
bGUuMSBpcyB0aGUgZGVyaXZlZCB2ZXJzaW9uLAovLyBhbmQgZmlsZS4yIGlzIHRoZSBiYXNlIHZl
cnNpb24uIHRoZSBiYXNlIHZlcnNpb24gaXMgc3RvcmVkIGluIHRoZQovLyAiZmlsZXMiIHRhYmxl
LCBhbmQgdGhlICpyZXZlcnNlKiBkaWZmIGRlbHRhKGZpbGUuMiwgZmlsZS4xKSBpcyBzdG9yZWQg
aW4KLy8gdGhlICJmaWxlX2RlbHRhcyIgdGFibGUsIHVuZGVyIHRoZSBpZCBvZiBmaWxlLjEsIHdp
dGggdGhlIGlkIG9mIGZpbGUuMgovLyBsaXN0ZWQgYXMgaXRzIGJhc2UuIG5vdGUgdGhlIHVzZSBv
ZiB0aGUgdGVybXMgd2hpY2ggZGVzY3JpYmUKLy8gcmVjb25zdHJ1Y3Rpb247IHRob3NlIGFyZSBz
dG9yYWdlLXN5c3RlbSB0ZXJtcy4KLy8KLy8gdGhlIGludGVyZmFjZSAqdG8qIHRoZSBkYXRhYmFz
ZSwgYW5kIHRoZSBhbmNlc3RyeSB2ZXJzaW9uIGdyYXBocywgdXNlCi8vIHRoZSBvbGQgLyBuZXcg
bWV0YXBob3Igb2YgYW5jZXN0cnksIGJ1dCB3aXRoaW4gdGhlIGRhdGFiYXNlIChpbmNsdWRpbmcK
Ly8gdGhlIHByaXZhdGUgaGVscGVyIG1ldGhvZHMsIGFuZCB0aGUgc3RvcmFnZSB2ZXJzaW9uIGdy
YXBocykgdGhlCi8vIGJhc2UvZGVyaXZlZCBzdG9yYWdlIG1ldGFwaG9yIGlzIHVzZWQuIHRoZSBv
bmx5IHJlYWwgd2F5IHRvIHRlbGwgd2hpY2gKLy8gaXMgd2hpY2ggaXMgdG8gbG9vayBhdCB0aGUg
cGFyYW1ldGVyIG5hbWVzIGFuZCBjb2RlLiBJIG1pZ2h0IHRyeSB0bwovLyBleHByZXNzIHRoaXMg
aW4gdGhlIHR5cGUgc3lzdGVtIHNvbWUgZGF5LCBidXQgbm90IHByZXNlbnRseS4KLy8KLy8gdGhl
IGtleSBwaHJhc2UgdG8ga2VlcCByZXBlYXRpbmcgd2hlbiB3b3JraW5nIG9uIHRoaXMgY29kZSBp
czoKLy8gCi8vICJiYXNlIGZpbGVzIGFyZSBuZXcsIGRlcml2ZWQgZmlsZXMgYXJlIG9sZCIKLy8K
Ly8gaXQgbWFrZXMgdGhlIGNvZGUgY29uZnVzaW5nLCBJIGtub3cuIHRoaXMgaXMgcG9zc2libHkg
dGhlIHdvcnN0IHBhcnQgb2YKLy8gdGhlIHByb2dyYW0uIEkgZG9uJ3Qga25vdyBpZiB0aGVyZSdz
IGFueSB3YXkgdG8gbWFrZSBpdCBjbGVhcmVyLgoKY2xhc3MgdHJhbnNhY3Rpb25fZ3VhcmQ7CnN0
cnVjdCBwb3N0aW5nOwpzdHJ1Y3QgYXBwX3N0YXRlOwoKY2xhc3MgZGF0YWJhc2UKewogIGZzOjpw
YXRoIGZpbGVuYW1lOwogIHN0ZDo6c3RyaW5nIGNvbnN0IHNjaGVtYTsKICB2b2lkIGNoZWNrX3Nj
aGVtYSgpOwoKICBzdHJ1Y3QgYXBwX3N0YXRlICogX19hcHA7CiAgc3RydWN0IHNxbGl0ZTMgKiBf
X3NxbDsKICBzdHJ1Y3Qgc3FsaXRlMyAqIHNxbChib29sIGluaXQgPSBmYWxzZSk7CiAgaW50IHRy
YW5zYWN0aW9uX2xldmVsOwoKICB2b2lkIGluc3RhbGxfZnVuY3Rpb25zKGFwcF9zdGF0ZSAqIGFw
cCk7CiAgdm9pZCBpbnN0YWxsX3ZpZXdzKCk7CgogIHR5cGVkZWYgc3RkOjp2ZWN0b3I8IHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPiA+IHJlc3VsdHM7CiAgdm9pZCBleGVjdXRlKGNoYXIgY29uc3Qg
KiBxdWVyeSwgLi4uKTsKICB2b2lkIGZldGNoKHJlc3VsdHMgJiByZXMsIAogICAgICAgICAgICAg
aW50IGNvbnN0IHdhbnRfY29scywgCiAgICAgICAgICAgICBpbnQgY29uc3Qgd2FudF9yb3dzLCAK
ICAgICAgICAgICAgIGNoYXIgY29uc3QgKiBxdWVyeSwgLi4uKTsKCiAgYm9vbCBleGlzdHMoaGV4
ZW5jPGlkPiBjb25zdCAmIGlkZW50LCAKICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25zdCAm
IHRhYmxlKTsKICBib29sIGRlbHRhX2V4aXN0cyhoZXhlbmM8aWQ+IGNvbnN0ICYgaWRlbnQsCiAg
ICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QgJiB0YWJsZSk7CiAgYm9vbCBkZWx0
YV9leGlzdHMoaGV4ZW5jPGlkPiBjb25zdCAmIGlkZW50LAogICAgICAgICAgICAgICAgICAgIGhl
eGVuYzxpZD4gY29uc3QgJiBiYXNlLAogICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNv
bnN0ICYgdGFibGUpOwoKICBpbnQgY291bnQoc3RkOjpzdHJpbmcgY29uc3QgJiB0YWJsZSk7Cgog
IHZvaWQgZ2V0X2lkcyhzdGQ6OnN0cmluZyBjb25zdCAmIHRhYmxlLCBzdGQ6OnNldDwgaGV4ZW5j
PGlkPiA+ICYgaWRzKTsgCgogIHZvaWQgZ2V0KGhleGVuYzxpZD4gY29uc3QgJiBuZXdfaWQsCiAg
ICAgICAgICAgYmFzZTY0PCBnemlwPGRhdGE+ID4gJiBkYXQsCiAgICAgICAgICAgc3RkOjpzdHJp
bmcgY29uc3QgJiB0YWJsZSk7CiAgdm9pZCBnZXRfZGVsdGEoaGV4ZW5jPGlkPiBjb25zdCAmIGlk
ZW50LAogICAgICAgICAgICAgICAgIGhleGVuYzxpZD4gY29uc3QgJiBiYXNlLAogICAgICAgICAg
ICAgICAgIGJhc2U2NDwgZ3ppcDxkZWx0YT4gPiAmIGRlbCwKICAgICAgICAgICAgICAgICBzdGQ6
OnN0cmluZyBjb25zdCAmIHRhYmxlKTsKICB2b2lkIGdldF92ZXJzaW9uKGhleGVuYzxpZD4gY29u
c3QgJiBpZCwKICAgICAgICAgICAgICAgICAgIGJhc2U2NDwgZ3ppcDxkYXRhPiA+ICYgZGF0LAog
ICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QgJiBkYXRhX3RhYmxlLAogICAgICAg
ICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QgJiBkZWx0YV90YWJsZSk7CiAgCiAgdm9pZCBw
dXQoaGV4ZW5jPGlkPiBjb25zdCAmIG5ld19pZCwKICAgICAgICAgICBiYXNlNjQ8IGd6aXA8ZGF0
YT4gPiBjb25zdCAmIGRhdCwKICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25zdCAmIHRhYmxlKTsK
ICB2b2lkIGRyb3AoaGV4ZW5jPGlkPiBjb25zdCAmIGJhc2UsCiAgICAgICAgICAgIHN0ZDo6c3Ry
aW5nIGNvbnN0ICYgdGFibGUpOwogIHZvaWQgcHV0X2RlbHRhKGhleGVuYzxpZD4gY29uc3QgJiBp
ZCwKICAgICAgICAgICAgICAgICBoZXhlbmM8aWQ+IGNvbnN0ICYgYmFzZSwKICAgICAgICAgICAg
ICAgICBiYXNlNjQ8IGd6aXA8ZGVsdGE+ID4gY29uc3QgJiBkZWwsCiAgICAgICAgICAgICAgICAg
c3RkOjpzdHJpbmcgY29uc3QgJiB0YWJsZSk7CiAgdm9pZCBwdXRfdmVyc2lvbihoZXhlbmM8aWQ+
IGNvbnN0ICYgb2xkX2lkLAogICAgICAgICAgICAgICAgICAgaGV4ZW5jPGlkPiBjb25zdCAmIG5l
d19pZCwKICAgICAgICAgICAgICAgICAgIGJhc2U2NDwgZ3ppcDxkZWx0YT4gPiBjb25zdCAmIGRl
bCwKICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0ICYgZGF0YV90YWJsZSwKICAg
ICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0ICYgZGVsdGFfdGFibGUpOwogIHZvaWQg
cHV0X3JldmVyc2VfdmVyc2lvbihoZXhlbmM8aWQ+IGNvbnN0ICYgbmV3X2lkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICBoZXhlbmM8aWQ+IGNvbnN0ICYgb2xkX2lkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICBiYXNlNjQ8IGd6aXA8ZGVsdGE+ID4gY29uc3QgJiByZXZlcnNlX2RlbCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QgJiBkYXRhX3RhYmxl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25zdCAmIGRlbHRhX3Rh
YmxlKTsKCiAgYm9vbCBjZXJ0X2V4aXN0cyhjZXJ0IGNvbnN0ICYgdCwKICAgICAgICAgICAgICAg
ICAgc3RkOjpzdHJpbmcgY29uc3QgJiB0YWJsZSk7CiAgdm9pZCBwdXRfY2VydChjZXJ0IGNvbnN0
ICYgdCwgc3RkOjpzdHJpbmcgY29uc3QgJiB0YWJsZSk7ICAKICB2b2lkIHJlc3VsdHNfdG9fY2Vy
dHMocmVzdWx0cyBjb25zdCAmIHJlcywKICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3Rv
cjxjZXJ0PiAmIGNlcnRzKTsKCiAgdm9pZCBnZXRfY2VydHMoaGV4ZW5jPGlkPiBjb25zdCAmIGlk
LCAKICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPCBjZXJ0ID4gJiBjZXJ0cywKICAgICAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0ICYgdGFibGUpOyAgCgogIHZvaWQgZ2V0X2NlcnRzKGNl
cnRfbmFtZSBjb25zdCAmIG5hbWUsICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHN0ZDo6
dmVjdG9yPCBjZXJ0ID4gJiBjZXJ0cywKICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0
ICYgdGFibGUpOwoKICB2b2lkIGdldF9jZXJ0cyhoZXhlbmM8aWQ+IGNvbnN0ICYgaWQsCiAgICAg
ICAgICAgICAgICBjZXJ0X25hbWUgY29uc3QgJiBuYW1lLAogICAgICAgICAgICAgICAgc3RkOjp2
ZWN0b3I8IGNlcnQgPiAmIGNlcnRzLAogICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3Qg
JiB0YWJsZSk7ICAKCiAgdm9pZCBnZXRfY2VydHMoaGV4ZW5jPGlkPiBjb25zdCAmIGlkLAogICAg
ICAgICAgICAgICAgY2VydF9uYW1lIGNvbnN0ICYgbmFtZSwKICAgICAgICAgICAgICAgIGJhc2U2
NDxjZXJ0X3ZhbHVlPiBjb25zdCAmIHZhbCwgCiAgICAgICAgICAgICAgICBzdGQ6OnZlY3Rvcjwg
Y2VydCA+ICYgY2VydHMsCiAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25zdCAmIHRhYmxl
KTsgIAoKICB2b2lkIGdldF9jZXJ0cyhjZXJ0X25hbWUgY29uc3QgJiBuYW1lLAogICAgICAgICAg
ICAgICAgYmFzZTY0PGNlcnRfdmFsdWU+IGNvbnN0ICYgdmFsLCAKICAgICAgICAgICAgICAgIHN0
ZDo6dmVjdG9yPGNlcnQ+ICYgY2VydHMsCiAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25z
dCAmIHRhYmxlKTsKCiAgdm9pZCBiZWdpbl90cmFuc2FjdGlvbigpOwogIHZvaWQgY29tbWl0X3Ry
YW5zYWN0aW9uKCk7CiAgdm9pZCByb2xsYmFja190cmFuc2FjdGlvbigpOwogIGZyaWVuZCBjbGFz
cyB0cmFuc2FjdGlvbl9ndWFyZDsKICBmcmllbmQgdm9pZCByY3NfcHV0X3Jhd19maWxlX2VkZ2Uo
aGV4ZW5jPGlkPiBjb25zdCAmIG9sZF9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGV4ZW5jPGlkPiBjb25zdCAmIG5ld19pZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmFzZTY0PCBnemlwPGRlbHRhPiA+IGNvbnN0ICYgZGVsLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhYmFzZSAmIGRiKTsKICBmcmllbmQgdm9pZCBy
Y3NfcHV0X3Jhd19tYW5pZmVzdF9lZGdlKGhleGVuYzxpZD4gY29uc3QgJiBvbGRfaWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZXhlbmM8aWQ+IGNvbnN0ICYgbmV3
X2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0PCBnemlw
PGRlbHRhPiA+IGNvbnN0ICYgZGVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YWJhc2UgJiBkYik7CgpwdWJsaWM6CgogIGRhdGFiYXNlKGZzOjpwYXRoIGNvbnN0
ICYgZmlsZSk7CgogIHVuc2lnbmVkIGxvbmcgZ2V0X3N0YXRpc3RpYyhzdGQ6OnN0cmluZyBjb25z
dCAmIHF1ZXJ5KTsKICB2b2lkIHNldF9maWxlbmFtZShmczo6cGF0aCBjb25zdCAmIGZpbGUpOwog
IHZvaWQgaW5pdGlhbGl6ZSgpOwogIHZvaWQgZGVidWcoc3RkOjpzdHJpbmcgY29uc3QgJiBzcWws
IHN0ZDo6b3N0cmVhbSAmIG91dCk7CiAgdm9pZCBkdW1wKHN0ZDo6b3N0cmVhbSAmKTsKICB2b2lk
IGxvYWQoc3RkOjppc3RyZWFtICYpOwogIHZvaWQgaW5mbyhzdGQ6Om9zdHJlYW0gJik7CiAgdm9p
ZCB2ZXJzaW9uKHN0ZDo6b3N0cmVhbSAmKTsKICB2b2lkIG1pZ3JhdGUoKTsKICB2b2lkIHJlaGFz
aCgpOwogIHZvaWQgZW5zdXJlX29wZW4oKTsKICAKICBib29sIGZpbGVfdmVyc2lvbl9leGlzdHMo
ZmlsZV9pZCBjb25zdCAmIGlkKTsKICBib29sIG1hbmlmZXN0X3ZlcnNpb25fZXhpc3RzKG1hbmlm
ZXN0X2lkIGNvbnN0ICYgaWQpOwogIGJvb2wgcmV2aXNpb25fZXhpc3RzKHJldmlzaW9uX2lkIGNv
bnN0ICYgaWQpOwoKICB2b2lkIGdldF9maWxlX2lkcyhzdGQ6OnNldDxmaWxlX2lkPiAmIGlkcyk7
CiAgdm9pZCBnZXRfbWFuaWZlc3RfaWRzKHN0ZDo6c2V0PG1hbmlmZXN0X2lkPiAmIGlkcyk7CiAg
dm9pZCBnZXRfcmV2aXNpb25faWRzKHN0ZDo6c2V0PHJldmlzaW9uX2lkPiAmIGlkcyk7CgogIHZv
aWQgc2V0X2FwcChhcHBfc3RhdGUgKiBhcHApOwogIAogIC8vIGdldCBwbGFpbiB2ZXJzaW9uIGlm
IGl0IGV4aXN0cywgb3IgcmVjb25zdHJ1Y3QgdmVyc2lvbgogIC8vIGZyb20gZGVsdGFzIChpZiB0
aGV5IGV4aXN0KQogIHZvaWQgZ2V0X2ZpbGVfdmVyc2lvbihmaWxlX2lkIGNvbnN0ICYgaWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgIGZpbGVfZGF0YSAmIGRhdCk7CgogIC8vIGdldCBmaWxlIGRl
bHRhIGlmIGl0IGV4aXN0cywgZWxzZSBjYWxjdWxhdGUgaXQuCiAgLy8gYm90aCBtYW5pZmVzdHMg
bXVzdCBleGlzdC4KICB2b2lkIGdldF9maWxlX2RlbHRhKGZpbGVfaWQgY29uc3QgJiBzcmMsCiAg
ICAgICAgICAgICAgICAgICAgICBmaWxlX2lkIGNvbnN0ICYgZHN0LAogICAgICAgICAgICAgICAg
ICAgICAgZmlsZV9kZWx0YSAmIGRlbCk7CgogIC8vIHB1dCBmaWxlIHcvbyBwcmVkZWNlc3NvciBp
bnRvIGRiCiAgdm9pZCBwdXRfZmlsZShmaWxlX2lkIGNvbnN0ICYgbmV3X2lkLAogICAgICAgICAg
ICAgICAgZmlsZV9kYXRhIGNvbnN0ICYgZGF0KTsKCiAgLy8gc3RvcmUgbmV3IHZlcnNpb24gYW5k
IHVwZGF0ZSBvbGQgdmVyc2lvbiB0byBiZSBhIGRlbHRhCiAgdm9pZCBwdXRfZmlsZV92ZXJzaW9u
KGZpbGVfaWQgY29uc3QgJiBvbGRfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfaWQg
Y29uc3QgJiBuZXdfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfZGVsdGEgY29uc3Qg
JiBkZWwpOwoKICAvLyBsb2FkIGluIGEgImRpcmVjdCIgbmV3IC0+IG9sZCByZXZlcnNlIGVkZ2Ug
KHVzZWQgZHVyaW5nCiAgLy8gbmV0c3luYyBhbmQgQ1ZTIGxvYWQtaW4pCiAgdm9pZCBwdXRfZmls
ZV9yZXZlcnNlX3ZlcnNpb24oZmlsZV9pZCBjb25zdCAmIG9sZF9pZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmaWxlX2lkIGNvbnN0ICYgbmV3X2lkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZpbGVfZGVsdGEgY29uc3QgJiBkZWwpOwoKICAvLyBnZXQgcGxhaW4g
dmVyc2lvbiBpZiBpdCBleGlzdHMsIG9yIHJlY29uc3RydWN0IHZlcnNpb24KICAvLyBmcm9tIGRl
bHRhcyAoaWYgdGhleSBleGlzdCkuIAogIHZvaWQgZ2V0X21hbmlmZXN0X3ZlcnNpb24obWFuaWZl
c3RfaWQgY29uc3QgJiBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X2Rh
dGEgJiBkYXQpOwoKICAvLyBnZXQgYSBjb25zdHJ1Y3RlZCBtYW5pZmVzdAogIHZvaWQgZ2V0X21h
bmlmZXN0KG1hbmlmZXN0X2lkIGNvbnN0ICYgaWQsCiAgICAgICAgICAgICAgICAgICAgbWFuaWZl
c3RfbWFwICYgbW0pOwoKICAvLyBnZXQgbWFuaWZlc3QgZGVsdGEgaWYgaXQgZXhpc3RzLCBlbHNl
IGNhbGN1bGF0ZSBpdC4KICAvLyBib3RoIG1hbmlmZXN0cyBtdXN0IGV4aXN0LgogIHZvaWQgZ2V0
X21hbmlmZXN0X2RlbHRhKG1hbmlmZXN0X2lkIGNvbnN0ICYgc3JjLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hbmlmZXN0X2lkIGNvbnN0ICYgZHN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgIG1hbmlmZXN0X2RlbHRhICYgZGVsKTsKCiAgLy8gcHV0IG1hbmlmZXN0IHcvbyBwcmVkZWNl
c3NvciBpbnRvIGRiCiAgdm9pZCBwdXRfbWFuaWZlc3QobWFuaWZlc3RfaWQgY29uc3QgJiBuZXdf
aWQsCiAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfZGF0YSBjb25zdCAmIGRhdCk7CgogIC8v
IHN0b3JlIG5ldyB2ZXJzaW9uIGFuZCB1cGRhdGUgb2xkIHZlcnNpb24gdG8gYmUgYSBkZWx0YQog
IHZvaWQgcHV0X21hbmlmZXN0X3ZlcnNpb24obWFuaWZlc3RfaWQgY29uc3QgJiBvbGRfaWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdF9pZCBjb25zdCAmIG5ld19pZCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X2RlbHRhIGNvbnN0ICYgZGVsKTsKCiAg
Ly8gbG9hZCBpbiBhICJkaXJlY3QiIG5ldyAtPiBvbGQgcmV2ZXJzZSBlZGdlICh1c2VkIGR1cmlu
ZwogIC8vIG5ldHN5bmMgYW5kIENWUyBsb2FkLWluKQogIHZvaWQgcHV0X21hbmlmZXN0X3JldmVy
c2VfdmVyc2lvbihtYW5pZmVzdF9pZCBjb25zdCAmIG9sZF9pZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfaWQgY29uc3QgJiBuZXdfaWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X2RlbHRhIGNvbnN0ICYgZGVsKTsKCgog
IHZvaWQgZ2V0X3JldmlzaW9uX2FuY2VzdHJ5KHN0ZDo6bXVsdGltYXA8cmV2aXNpb25faWQsIHJl
dmlzaW9uX2lkPiAmIGdyYXBoKTsKCiAgdm9pZCBnZXRfcmV2aXNpb25fcGFyZW50cyhyZXZpc2lv
bl9pZCBjb25zdCAmIGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnNldDxyZXZp
c2lvbl9pZD4gJiBwYXJlbnRzKTsKCiAgdm9pZCBnZXRfcmV2aXNpb25fY2hpbGRyZW4ocmV2aXNp
b25faWQgY29uc3QgJiBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnNldDxy
ZXZpc2lvbl9pZD4gJiBjaGlsZHJlbik7CgogIHZvaWQgZ2V0X3JldmlzaW9uX21hbmlmZXN0KHJl
dmlzaW9uX2lkIGNvbnN0ICYgY2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZl
c3RfaWQgJiBtaWQpOwoKICB2b2lkIGdldF9yZXZpc2lvbihyZXZpc2lvbl9pZCBjb25zdCAmIGlk
LAogICAgICAgICAgICAgICAgICAgcmV2aXNpb25fc2V0ICYgY3MpOwoKICB2b2lkIGdldF9yZXZp
c2lvbihyZXZpc2lvbl9pZCBjb25zdCAmIGlkLAogICAgICAgICAgICAgICAgICAgcmV2aXNpb25f
ZGF0YSAmIGRhdCk7CgogIHZvaWQgcHV0X3JldmlzaW9uKHJldmlzaW9uX2lkIGNvbnN0ICYgbmV3
X2lkLAogICAgICAgICAgICAgICAgICAgcmV2aXNpb25fc2V0IGNvbnN0ICYgY3MpOwoKICB2b2lk
IHB1dF9yZXZpc2lvbihyZXZpc2lvbl9pZCBjb25zdCAmIG5ld19pZCwKICAgICAgICAgICAgICAg
ICAgICByZXZpc2lvbl9kYXRhIGNvbnN0ICYgZGF0KTsKICAKICB2b2lkIGRlbGV0ZV9leGlzdGlu
Z19yZXZzX2FuZF9jZXJ0cygpOwoKICAvLyBjcnlwdG8ga2V5IC8gY2VydCBvcGVyYXRpb25zCgog
IHZvaWQgZ2V0X2tleV9pZHMoc3RkOjpzdHJpbmcgY29uc3QgJiBwYXR0ZXJuLAogICAgICAgICAg
ICAgICAgICAgc3RkOjp2ZWN0b3I8cnNhX2tleXBhaXJfaWQ+ICYgcHVia2V5cywKICAgICAgICAg
ICAgICAgICAgIHN0ZDo6dmVjdG9yPHJzYV9rZXlwYWlyX2lkPiAmIHByaXZrZXlzKTsKCiAgdm9p
ZCBnZXRfcHJpdmF0ZV9rZXlzKHN0ZDo6dmVjdG9yPHJzYV9rZXlwYWlyX2lkPiAmIHByaXZrZXlz
KTsKCiAgYm9vbCBrZXlfZXhpc3RzKHJzYV9rZXlwYWlyX2lkIGNvbnN0ICYgaWQpOwoKICBib29s
IHB1YmxpY19rZXlfZXhpc3RzKGhleGVuYzxpZD4gY29uc3QgJiBoYXNoKTsKICBib29sIHB1Ymxp
Y19rZXlfZXhpc3RzKHJzYV9rZXlwYWlyX2lkIGNvbnN0ICYgaWQpOwogIGJvb2wgcHJpdmF0ZV9r
ZXlfZXhpc3RzKHJzYV9rZXlwYWlyX2lkIGNvbnN0ICYgaWQpOwogIAogIHZvaWQgZ2V0X3B1Ymtl
eShoZXhlbmM8aWQ+IGNvbnN0ICYgaGFzaCwgCiAgICAgICAgICAgICAgICAgIHJzYV9rZXlwYWly
X2lkICYgaWQsCiAgICAgICAgICAgICAgICAgIGJhc2U2NDxyc2FfcHViX2tleT4gJiBwdWJfZW5j
b2RlZCk7CgogIHZvaWQgZ2V0X2tleShyc2Ffa2V5cGFpcl9pZCBjb25zdCAmIGlkLCAKICAgICAg
ICAgICAgICAgYmFzZTY0PHJzYV9wdWJfa2V5PiAmIHB1Yl9lbmNvZGVkKTsKCiAgdm9pZCBnZXRf
a2V5KHJzYV9rZXlwYWlyX2lkIGNvbnN0ICYgaWQsIAogICAgICAgICAgICAgICBiYXNlNjQ8IGFy
YzQ8cnNhX3ByaXZfa2V5PiA+ICYgcHJpdl9lbmNvZGVkKTsKCiAgdm9pZCBwdXRfa2V5KHJzYV9r
ZXlwYWlyX2lkIGNvbnN0ICYgaWQsIAogICAgICAgICAgICAgICBiYXNlNjQ8cnNhX3B1Yl9rZXk+
IGNvbnN0ICYgcHViX2VuY29kZWQpOwogIAogIHZvaWQgcHV0X2tleShyc2Ffa2V5cGFpcl9pZCBj
b25zdCAmIGlkLCAKICAgICAgICAgICAgICAgYmFzZTY0PCBhcmM0PHJzYV9wcml2X2tleT4gPiBj
b25zdCAmIHByaXZfZW5jb2RlZCk7CiAgCiAgdm9pZCBwdXRfa2V5X3BhaXIocnNhX2tleXBhaXJf
aWQgY29uc3QgJiBwdWJfaWQsIAogICAgICAgICAgICAgICAgICAgIGJhc2U2NDxyc2FfcHViX2tl
eT4gY29uc3QgJiBwdWJfZW5jb2RlZCwKICAgICAgICAgICAgICAgICAgICBiYXNlNjQ8IGFyYzQ8
cnNhX3ByaXZfa2V5PiA+IGNvbnN0ICYgcHJpdl9lbmNvZGVkKTsKCiAgdm9pZCBkZWxldGVfcHJp
dmF0ZV9rZXkocnNhX2tleXBhaXJfaWQgY29uc3QgJiBwdWJfaWQpOwoKICAvLyBub3RlOiB0aGlz
IHNlY3Rpb24gaXMgcmlkaWN1bG91cy4gcGxlYXNlIGRvIHNvbWV0aGluZyBhYm91dCBpdC4KCiAg
Ym9vbCBtYW5pZmVzdF9jZXJ0X2V4aXN0cyhtYW5pZmVzdDxjZXJ0PiBjb25zdCAmIGNlcnQpOwog
IGJvb2wgbWFuaWZlc3RfY2VydF9leGlzdHMoaGV4ZW5jPGlkPiBjb25zdCAmIGhhc2gpOwogIHZv
aWQgcHV0X21hbmlmZXN0X2NlcnQobWFuaWZlc3Q8Y2VydD4gY29uc3QgJiBjZXJ0KTsKCiAgYm9v
bCByZXZpc2lvbl9jZXJ0X2V4aXN0cyhyZXZpc2lvbjxjZXJ0PiBjb25zdCAmIGNlcnQpOwogIGJv
b2wgcmV2aXNpb25fY2VydF9leGlzdHMoaGV4ZW5jPGlkPiBjb25zdCAmIGhhc2gpOwoKICB2b2lk
IHB1dF9yZXZpc2lvbl9jZXJ0KHJldmlzaW9uPGNlcnQ+IGNvbnN0ICYgY2VydCk7CgogIC8vIHRo
aXMgdmFyaWFudCBoYXMgdG8gYmUgcmF0aGVyIGNvYXJzZSBhbmQgZmFzdCwgZm9yIG5ldHN5bmMn
cyB1c2UKICB2b2lkIGdldF9yZXZpc2lvbl9jZXJ0X2luZGV4KHN0ZDo6dmVjdG9yPCBzdGQ6OnBh
aXI8aGV4ZW5jPGlkPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6cGFpcjxy
ZXZpc2lvbl9pZCwgcnNhX2tleXBhaXJfaWQ+ID4gPiAmIGlkeCk7CgogIHZvaWQgZ2V0X3Jldmlz
aW9uX2NlcnRzKGNlcnRfbmFtZSBjb25zdCAmIG5hbWUsIAogICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjp2ZWN0b3I8IHJldmlzaW9uPGNlcnQ+ID4gJiBjZXJ0cyk7CgogIHZvaWQgZ2V0X3Jl
dmlzaW9uX2NlcnRzKHJldmlzaW9uX2lkIGNvbnN0ICYgaWQsIAogICAgICAgICAgICAgICAgICAg
ICAgICAgY2VydF9uYW1lIGNvbnN0ICYgbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OnZlY3RvcjwgcmV2aXNpb248Y2VydD4gPiAmIGNlcnRzKTsKCiAgdm9pZCBnZXRfcmV2aXNp
b25fY2VydHMoY2VydF9uYW1lIGNvbnN0ICYgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg
IGJhc2U2NDxjZXJ0X3ZhbHVlPiBjb25zdCAmIHZhbCwgCiAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6OnZlY3RvcjwgcmV2aXNpb248Y2VydD4gPiAmIGNlcnRzKTsKCiAgdm9pZCBnZXRfcmV2
aXNpb25fY2VydHMocmV2aXNpb25faWQgY29uc3QgJiBpZCwgCiAgICAgICAgICAgICAgICAgICAg
ICAgICBjZXJ0X25hbWUgY29uc3QgJiBuYW1lLCAKICAgICAgICAgICAgICAgICAgICAgICAgIGJh
c2U2NDxjZXJ0X3ZhbHVlPiBjb25zdCAmIHZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjp2ZWN0b3I8IHJldmlzaW9uPGNlcnQ+ID4gJiBjZXJ0cyk7CgogIHZvaWQgZ2V0X3Jldmlz
aW9uX2NlcnRzKHJldmlzaW9uX2lkIGNvbnN0ICYgaWQsIAogICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjp2ZWN0b3I8IHJldmlzaW9uPGNlcnQ+ID4gJiBjZXJ0cyk7CgogIHZvaWQgZ2V0X3Jl
dmlzaW9uX2NlcnQoaGV4ZW5jPGlkPiBjb25zdCAmIGhhc2gsCiAgICAgICAgICAgICAgICAgICAg
ICAgICByZXZpc2lvbjxjZXJ0PiAmIGNlcnQpOwogIAogIHZvaWQgZ2V0X21hbmlmZXN0X2NlcnRz
KG1hbmlmZXN0X2lkIGNvbnN0ICYgaWQsIAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
dmVjdG9yPCBtYW5pZmVzdDxjZXJ0PiA+ICYgY2VydHMpOwoKICB2b2lkIGdldF9tYW5pZmVzdF9j
ZXJ0cyhjZXJ0X25hbWUgY29uc3QgJiBuYW1lLCAKICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OnZlY3RvcjwgbWFuaWZlc3Q8Y2VydD4gPiAmIGNlcnRzKTsKCiAgdm9pZCBnZXRfbWFuaWZl
c3RfY2VydHMobWFuaWZlc3RfaWQgY29uc3QgJiBpZCwgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2VydF9uYW1lIGNvbnN0ICYgbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
Ojp2ZWN0b3I8IG1hbmlmZXN0PGNlcnQ+ID4gJiBjZXJ0cyk7CiAgCiAgdm9pZCBnZXRfbWFuaWZl
c3RfY2VydChoZXhlbmM8aWQ+IGNvbnN0ICYgaGFzaCwKICAgICAgICAgICAgICAgICAgICAgICAg
IG1hbmlmZXN0PGNlcnQ+ICYgY2VydCk7CgogIAogIC8vIG1lcmtsZSB0cmVlIHN0dWZmCgogIGJv
b2wgbWVya2xlX25vZGVfZXhpc3RzKHN0ZDo6c3RyaW5nIGNvbnN0ICYgdHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICB1dGY4IGNvbnN0ICYgY29sbGVjdGlvbiwgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgIGhleGVu
YzxwcmVmaXg+IGNvbnN0ICYgcHJlZml4KTsKICAKICB2b2lkIGdldF9tZXJrbGVfbm9kZShzdGQ6
OnN0cmluZyBjb25zdCAmIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgdXRmOCBjb25zdCAm
IGNvbGxlY3Rpb24sIAogICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKICAgICAg
ICAgICAgICAgICAgICAgICBoZXhlbmM8cHJlZml4PiBjb25zdCAmIHByZWZpeCwKICAgICAgICAg
ICAgICAgICAgICAgICBiYXNlNjQ8bWVya2xlPiAmIG5vZGUpOwoKICB2b2lkIHB1dF9tZXJrbGVf
bm9kZShzdGQ6OnN0cmluZyBjb25zdCAmIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgdXRm
OCBjb25zdCAmIGNvbGxlY3Rpb24sIAogICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZl
bCwKICAgICAgICAgICAgICAgICAgICAgICBoZXhlbmM8cHJlZml4PiBjb25zdCAmIHByZWZpeCwK
ICAgICAgICAgICAgICAgICAgICAgICBiYXNlNjQ8bWVya2xlPiBjb25zdCAmIG5vZGUpOwoKICB2
b2lkIGVyYXNlX21lcmtsZV9ub2RlcyhzdGQ6OnN0cmluZyBjb25zdCAmIHR5cGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgdXRmOCBjb25zdCAmIGNvbGxlY3Rpb24pOwoKICAvLyBjb21wbGV0
aW9uIHN0dWZmCgogIHZvaWQgY29tcGxldGUoc3RkOjpzdHJpbmcgY29uc3QgJiBwYXJ0aWFsLAog
ICAgICAgICAgICAgICAgc3RkOjpzZXQ8cmV2aXNpb25faWQ+ICYgY29tcGxldGlvbnMpOwoKICB2
b2lkIGNvbXBsZXRlKHN0ZDo6c3RyaW5nIGNvbnN0ICYgcGFydGlhbCwKICAgICAgICAgICAgICAg
IHN0ZDo6c2V0PG1hbmlmZXN0X2lkPiAmIGNvbXBsZXRpb25zKTsKICAKICB2b2lkIGNvbXBsZXRl
KHN0ZDo6c3RyaW5nIGNvbnN0ICYgcGFydGlhbCwKICAgICAgICAgICAgICAgIHN0ZDo6c2V0PGZp
bGVfaWQ+ICYgY29tcGxldGlvbnMpOwoKICB2b2lkIGNvbXBsZXRlKGNvbW1hbmRzOjpzZWxlY3Rv
cl90eXBlIHR5LAogICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QgJiBwYXJ0aWFsLAog
ICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGNvbW1hbmRzOjpzZWxlY3Rvcl90
eXBlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZz4g
PiBjb25zdCAmIGxpbWl0LAogICAgICAgICAgICAgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+ICYg
Y29tcGxldGlvbnMpOwogIAogIH5kYXRhYmFzZSgpOwoKfTsKCi8vIHRyYW5zYWN0aW9uIGd1YXJk
cyBuZXN0LiBhY3F1aXJlIG9uZSBpbiBhbnkgc2NvcGUgeW91J2QgbGlrZQovLyB0cmFuc2FjdGlv
bi1wcm90ZWN0ZWQsIGFuZCBpdCdsbCBtYWtlIHN1cmUgdGhlIGRiIGFib3J0cyBhCi8vIHR4biBp
ZiB0aGVyZSdzIGFueSBleGNlcHRpb24gYmVmb3JlIHlvdSBjYWxsIGNvbW1pdCgpCgpjbGFzcyB0
cmFuc2FjdGlvbl9ndWFyZAp7CiAgYm9vbCBjb21taXR0ZWQ7CiAgZGF0YWJhc2UgJiBkYjsKcHVi
bGljOgogIHRyYW5zYWN0aW9uX2d1YXJkKGRhdGFiYXNlICYgZCk7CiAgfnRyYW5zYWN0aW9uX2d1
YXJkKCk7CiAgdm9pZCBjb21taXQoKTsKfTsKCgoKI2VuZGlmIC8vIF9fREFUQUJBU0VfSEhfXwo=
_ATEOF


cat >correct.b64 <<'_ATEOF'

I2lmbmRlZiBfX0RBVEFCQVNFX0hIX18KI2RlZmluZSBfX0RBVEFCQVNFX0hIX18KCi8vIGNvcHly
aWdodCAoQykgMjAwMiwgMjAwMyBncmF5ZG9uIGhvYXJlIDxncmF5ZG9uQHBvYm94LmNvbT4KLy8g
YWxsIHJpZ2h0cyByZXNlcnZlZC4KLy8gbGljZW5zZWQgdG8gdGhlIHB1YmxpYyB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBHUEwgKD49IDIpCi8vIHNlZSB0aGUgZmlsZSBDT1BZSU5HIGZvciBk
ZXRhaWxzCgpzdHJ1Y3Qgc3FsaXRlMzsKc3RydWN0IGNlcnQ7CgojaW5jbHVkZSA8dmVjdG9yPgoj
aW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8c3RyaW5nPgoKI2luY2x1ZGUg
PGJvb3N0L2ZpbGVzeXN0ZW0vcGF0aC5ocHA+CgojaW5jbHVkZSAiY29tbWFuZHMuaGgiCiNpbmNs
dWRlICJtYW5pZmVzdC5oaCIKI2luY2x1ZGUgIm51bWVyaWNfdm9jYWIuaGgiCiNpbmNsdWRlICJ2
b2NhYi5oaCIKCnN0cnVjdCByZXZpc2lvbl9zZXQ7CgovLyB0aGlzIGZpbGUgZGVmaW5lcyBhIHB1
YmxpYywgdHlwZWQgaW50ZXJmYWNlIHRvIHRoZSBkYXRhYmFzZS4KLy8gdGhlIGRhdGFiYXNlIGNs
YXNzIGVuY2Fwc3VsYXRlcyBhbGwga25vd2xlZGdlIGFib3V0IHNxbGl0ZSwKLy8gdGhlIHNjaGVt
YSwgYW5kIGFsbCBTUUwgc3RhdGVtZW50cyB1c2VkIHRvIGFjY2VzcyB0aGUgc2NoZW1hLgovLwov
LyBvbmUgdGhpbmcgd2hpY2ggaXMgcmF0aGVyIGltcG9ydGFudCB0byBub3RlIGlzIHRoYXQgdGhp
cyBmaWxlCi8vIGRlYWxzIHdpdGggdHdvIHNvcnRzIG9mIHZlcnNpb24gcmVsYXRpb25zaGlwcy4g
dGhlIHZlcnNpb25zCi8vIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UgYXJlIGFsbCAqYmFja3dhcmRz
KiBmcm9tIHRob3NlIHRoZSBwcm9ncmFtCi8vIHNlZXMuIHNvIGZvciBleGFtcGxlIGlmIHlvdSBo
YXZlIHR3byB2ZXJzaW9ucyBvZiBhIGZpbGUKLy8gCi8vIGZpbGUuMSwgZmlsZS4yCi8vCi8vIHdo
ZXJlIGZpbGUuMiB3YXMgYSBtb2RpZmljYXRpb24gb2YgZmlsZS4xLCB0aGVuIGFzIGZhciBhcyB0
aGUgcmVzdCBvZgovLyB0aGUgYXBwbGljYXRpb24gaXMgY29uY2VybmVkIC0tIGFuZCB0aGUgYW5j
ZXN0cnkgZ3JhcGggLS0gZmlsZS4xIGlzIHRoZQovLyAib2xkIiB2ZXJzaW9uIGFuZCBmaWxlLjIg
aXMgdGhlICJuZXciIHZlcnNpb24uIG5vdGUgdGhlIHVzZSBvZiB0ZXJtcwovLyB3aGljaCBkZXNj
cmliZSB0aW1lLCBhbmQgdGhlIHNlcXVlbmNlIG9mIGVkaXRzIGEgdXNlciBtYWtlcyB0byBhCi8v
IGZpbGUuIHRob3NlIGFyZSBhbmNlc3RyeSB0ZXJtcy4gd2hlbiB0aGUgYXBwbGljYXRpb24gY29t
cG9zZXMgYQovLyBwYXRjaHNldCwgZm9yIGV4YW1wbGUsIGl0J2xsIGNvbnRhaW4gdGhlIGRpZmYg
ZGVsdGEoZmlsZS4xLCBmaWxlLjIpCi8vCi8vIGZyb20gdGhlIGRhdGFiYXNlJ3MgcGVyc3BlY3Rp
dmUsIGhvd2V2ZXIsIGZpbGUuMSBpcyB0aGUgZGVyaXZlZCB2ZXJzaW9uLAovLyBhbmQgZmlsZS4y
IGlzIHRoZSBiYXNlIHZlcnNpb24uIHRoZSBiYXNlIHZlcnNpb24gaXMgc3RvcmVkIGluIHRoZQov
LyAiZmlsZXMiIHRhYmxlLCBhbmQgdGhlICpyZXZlcnNlKiBkaWZmIGRlbHRhKGZpbGUuMiwgZmls
ZS4xKSBpcyBzdG9yZWQgaW4KLy8gdGhlICJmaWxlX2RlbHRhcyIgdGFibGUsIHVuZGVyIHRoZSBp
ZCBvZiBmaWxlLjEsIHdpdGggdGhlIGlkIG9mIGZpbGUuMgovLyBsaXN0ZWQgYXMgaXRzIGJhc2Uu
IG5vdGUgdGhlIHVzZSBvZiB0aGUgdGVybXMgd2hpY2ggZGVzY3JpYmUKLy8gcmVjb25zdHJ1Y3Rp
b247IHRob3NlIGFyZSBzdG9yYWdlLXN5c3RlbSB0ZXJtcy4KLy8KLy8gdGhlIGludGVyZmFjZSAq
dG8qIHRoZSBkYXRhYmFzZSwgYW5kIHRoZSBhbmNlc3RyeSB2ZXJzaW9uIGdyYXBocywgdXNlCi8v
IHRoZSBvbGQgLyBuZXcgbWV0YXBob3Igb2YgYW5jZXN0cnksIGJ1dCB3aXRoaW4gdGhlIGRhdGFi
YXNlIChpbmNsdWRpbmcKLy8gdGhlIHByaXZhdGUgaGVscGVyIG1ldGhvZHMsIGFuZCB0aGUgc3Rv
cmFnZSB2ZXJzaW9uIGdyYXBocykgdGhlCi8vIGJhc2UvZGVyaXZlZCBzdG9yYWdlIG1ldGFwaG9y
IGlzIHVzZWQuIHRoZSBvbmx5IHJlYWwgd2F5IHRvIHRlbGwgd2hpY2gKLy8gaXMgd2hpY2ggaXMg
dG8gbG9vayBhdCB0aGUgcGFyYW1ldGVyIG5hbWVzIGFuZCBjb2RlLiBJIG1pZ2h0IHRyeSB0bwov
LyBleHByZXNzIHRoaXMgaW4gdGhlIHR5cGUgc3lzdGVtIHNvbWUgZGF5LCBidXQgbm90IHByZXNl
bnRseS4KLy8KLy8gdGhlIGtleSBwaHJhc2UgdG8ga2VlcCByZXBlYXRpbmcgd2hlbiB3b3JraW5n
IG9uIHRoaXMgY29kZSBpczoKLy8gCi8vICJiYXNlIGZpbGVzIGFyZSBuZXcsIGRlcml2ZWQgZmls
ZXMgYXJlIG9sZCIKLy8KLy8gaXQgbWFrZXMgdGhlIGNvZGUgY29uZnVzaW5nLCBJIGtub3cuIHRo
aXMgaXMgcG9zc2libHkgdGhlIHdvcnN0IHBhcnQgb2YKLy8gdGhlIHByb2dyYW0uIEkgZG9uJ3Qg
a25vdyBpZiB0aGVyZSdzIGFueSB3YXkgdG8gbWFrZSBpdCBjbGVhcmVyLgoKY2xhc3MgdHJhbnNh
Y3Rpb25fZ3VhcmQ7CnN0cnVjdCBwb3N0aW5nOwpzdHJ1Y3QgYXBwX3N0YXRlOwoKY2xhc3MgZGF0
YWJhc2UKewogIGZzOjpwYXRoIGZpbGVuYW1lOwogIHN0ZDo6c3RyaW5nIGNvbnN0IHNjaGVtYTsK
ICB2b2lkIGNoZWNrX3NjaGVtYSgpOwoKICBzdHJ1Y3QgYXBwX3N0YXRlICogX19hcHA7CiAgc3Ry
dWN0IHNxbGl0ZTMgKiBfX3NxbDsKICBzdHJ1Y3Qgc3FsaXRlMyAqIHNxbChib29sIGluaXQgPSBm
YWxzZSk7CiAgaW50IHRyYW5zYWN0aW9uX2xldmVsOwoKICB2b2lkIGluc3RhbGxfZnVuY3Rpb25z
KGFwcF9zdGF0ZSAqIGFwcCk7CiAgdm9pZCBpbnN0YWxsX3ZpZXdzKCk7CgogIHR5cGVkZWYgc3Rk
Ojp2ZWN0b3I8IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiA+IHJlc3VsdHM7CiAgdm9pZCBleGVj
dXRlKGNoYXIgY29uc3QgKiBxdWVyeSwgLi4uKTsKICB2b2lkIGZldGNoKHJlc3VsdHMgJiByZXMs
IAogICAgICAgICAgICAgaW50IGNvbnN0IHdhbnRfY29scywgCiAgICAgICAgICAgICBpbnQgY29u
c3Qgd2FudF9yb3dzLCAKICAgICAgICAgICAgIGNoYXIgY29uc3QgKiBxdWVyeSwgLi4uKTsKCiAg
Ym9vbCBleGlzdHMoaGV4ZW5jPGlkPiBjb25zdCAmIGlkZW50LCAKICAgICAgICAgICAgICBzdGQ6
OnN0cmluZyBjb25zdCAmIHRhYmxlKTsKICBib29sIGRlbHRhX2V4aXN0cyhoZXhlbmM8aWQ+IGNv
bnN0ICYgaWRlbnQsCiAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QgJiB0YWJs
ZSk7CiAgYm9vbCBkZWx0YV9leGlzdHMoaGV4ZW5jPGlkPiBjb25zdCAmIGlkZW50LAogICAgICAg
ICAgICAgICAgICAgIGhleGVuYzxpZD4gY29uc3QgJiBiYXNlLAogICAgICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nIGNvbnN0ICYgdGFibGUpOwoKICB1bnNpZ25lZCBsb25nIGNvdW50KHN0ZDo6
c3RyaW5nIGNvbnN0ICYgdGFibGUpOwoKICB2b2lkIGdldF9pZHMoc3RkOjpzdHJpbmcgY29uc3Qg
JiB0YWJsZSwgc3RkOjpzZXQ8IGhleGVuYzxpZD4gPiAmIGlkcyk7IAoKICB2b2lkIGdldChoZXhl
bmM8aWQ+IGNvbnN0ICYgbmV3X2lkLAogICAgICAgICAgIGJhc2U2NDwgZ3ppcDxkYXRhPiA+ICYg
ZGF0LAogICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0ICYgdGFibGUpOwogIHZvaWQgZ2V0X2Rl
bHRhKGhleGVuYzxpZD4gY29uc3QgJiBpZGVudCwKICAgICAgICAgICAgICAgICBoZXhlbmM8aWQ+
IGNvbnN0ICYgYmFzZSwKICAgICAgICAgICAgICAgICBiYXNlNjQ8IGd6aXA8ZGVsdGE+ID4gJiBk
ZWwsCiAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QgJiB0YWJsZSk7CiAgdm9pZCBn
ZXRfdmVyc2lvbihoZXhlbmM8aWQ+IGNvbnN0ICYgaWQsCiAgICAgICAgICAgICAgICAgICBiYXNl
NjQ8IGd6aXA8ZGF0YT4gPiAmIGRhdCwKICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNv
bnN0ICYgZGF0YV90YWJsZSwKICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0ICYg
ZGVsdGFfdGFibGUpOwogIAogIHZvaWQgcHV0KGhleGVuYzxpZD4gY29uc3QgJiBuZXdfaWQsCiAg
ICAgICAgICAgYmFzZTY0PCBnemlwPGRhdGE+ID4gY29uc3QgJiBkYXQsCiAgICAgICAgICAgc3Rk
OjpzdHJpbmcgY29uc3QgJiB0YWJsZSk7CiAgdm9pZCBkcm9wKGhleGVuYzxpZD4gY29uc3QgJiBi
YXNlLAogICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25zdCAmIHRhYmxlKTsKICB2b2lkIHB1dF9k
ZWx0YShoZXhlbmM8aWQ+IGNvbnN0ICYgaWQsCiAgICAgICAgICAgICAgICAgaGV4ZW5jPGlkPiBj
b25zdCAmIGJhc2UsCiAgICAgICAgICAgICAgICAgYmFzZTY0PCBnemlwPGRlbHRhPiA+IGNvbnN0
ICYgZGVsLAogICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0ICYgdGFibGUpOwogIHZv
aWQgcHV0X3ZlcnNpb24oaGV4ZW5jPGlkPiBjb25zdCAmIG9sZF9pZCwKICAgICAgICAgICAgICAg
ICAgIGhleGVuYzxpZD4gY29uc3QgJiBuZXdfaWQsCiAgICAgICAgICAgICAgICAgICBiYXNlNjQ8
IGd6aXA8ZGVsdGE+ID4gY29uc3QgJiBkZWwsCiAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmlu
ZyBjb25zdCAmIGRhdGFfdGFibGUsCiAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25z
dCAmIGRlbHRhX3RhYmxlKTsKICB2b2lkIHB1dF9yZXZlcnNlX3ZlcnNpb24oaGV4ZW5jPGlkPiBj
b25zdCAmIG5ld19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaGV4ZW5jPGlkPiBjb25z
dCAmIG9sZF9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0PCBnemlwPGRlbHRh
PiA+IGNvbnN0ICYgcmV2ZXJzZV9kZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
c3RyaW5nIGNvbnN0ICYgZGF0YV90YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
OjpzdHJpbmcgY29uc3QgJiBkZWx0YV90YWJsZSk7CgogIHZvaWQgZ2V0X2tleXMoc3RkOjpzdHJp
bmcgY29uc3QgJiB0YWJsZSwgc3RkOjp2ZWN0b3I8cnNhX2tleXBhaXJfaWQ+ICYga2V5cyk7Cgog
IGJvb2wgY2VydF9leGlzdHMoY2VydCBjb25zdCAmIHQsCiAgICAgICAgICAgICAgICAgIHN0ZDo6
c3RyaW5nIGNvbnN0ICYgdGFibGUpOwogIHZvaWQgcHV0X2NlcnQoY2VydCBjb25zdCAmIHQsIHN0
ZDo6c3RyaW5nIGNvbnN0ICYgdGFibGUpOyAgCiAgdm9pZCByZXN1bHRzX3RvX2NlcnRzKHJlc3Vs
dHMgY29uc3QgJiByZXMsCiAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8Y2VydD4g
JiBjZXJ0cyk7CgogIHZvaWQgZ2V0X2NlcnRzKHN0ZDo6dmVjdG9yPCBjZXJ0ID4gJiBjZXJ0cywK
ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25zdCAmIHRhYmxlKTsgIAoKICB2b2lkIGdl
dF9jZXJ0cyhoZXhlbmM8aWQ+IGNvbnN0ICYgaWQsIAogICAgICAgICAgICAgICAgIHN0ZDo6dmVj
dG9yPCBjZXJ0ID4gJiBjZXJ0cywKICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBjb25zdCAm
IHRhYmxlKTsgIAoKICB2b2lkIGdldF9jZXJ0cyhjZXJ0X25hbWUgY29uc3QgJiBuYW1lLCAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8IGNlcnQgPiAmIGNlcnRzLAog
ICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0ICYgdGFibGUpOwoKICB2b2lkIGdldF9j
ZXJ0cyhoZXhlbmM8aWQ+IGNvbnN0ICYgaWQsCiAgICAgICAgICAgICAgICAgY2VydF9uYW1lIGNv
bnN0ICYgbmFtZSwKICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjwgY2VydCA+ICYgY2VydHMs
CiAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QgJiB0YWJsZSk7ICAKCiAgdm9pZCBn
ZXRfY2VydHMoaGV4ZW5jPGlkPiBjb25zdCAmIGlkLAogICAgICAgICAgICAgICAgIGNlcnRfbmFt
ZSBjb25zdCAmIG5hbWUsCiAgICAgICAgICAgICAgICAgYmFzZTY0PGNlcnRfdmFsdWU+IGNvbnN0
ICYgdmFsLCAKICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjwgY2VydCA+ICYgY2VydHMsCiAg
ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QgJiB0YWJsZSk7ICAKCiAgdm9pZCBnZXRf
Y2VydHMoY2VydF9uYW1lIGNvbnN0ICYgbmFtZSwKICAgICAgICAgICAgICAgICBiYXNlNjQ8Y2Vy
dF92YWx1ZT4gY29uc3QgJiB2YWwsIAogICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGNlcnQ+
ICYgY2VydHMsCiAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgY29uc3QgJiB0YWJsZSk7Cgog
IHZvaWQgYmVnaW5fdHJhbnNhY3Rpb24oKTsKICB2b2lkIGNvbW1pdF90cmFuc2FjdGlvbigpOwog
IHZvaWQgcm9sbGJhY2tfdHJhbnNhY3Rpb24oKTsKICBmcmllbmQgY2xhc3MgdHJhbnNhY3Rpb25f
Z3VhcmQ7CiAgZnJpZW5kIHZvaWQgcmNzX3B1dF9yYXdfZmlsZV9lZGdlKGhleGVuYzxpZD4gY29u
c3QgJiBvbGRfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhleGVuYzxp
ZD4gY29uc3QgJiBuZXdfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJh
c2U2NDwgZ3ppcDxkZWx0YT4gPiBjb25zdCAmIGRlbCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YWJhc2UgJiBkYik7CiAgZnJpZW5kIHZvaWQgcmNzX3B1dF9yYXdfbWFu
aWZlc3RfZWRnZShoZXhlbmM8aWQ+IGNvbnN0ICYgb2xkX2lkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaGV4ZW5jPGlkPiBjb25zdCAmIG5ld19pZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NDwgZ3ppcDxkZWx0YT4gPiBjb25z
dCAmIGRlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFiYXNl
ICYgZGIpOwoKcHVibGljOgoKICBkYXRhYmFzZShmczo6cGF0aCBjb25zdCAmIGZpbGUpOwoKICB2
b2lkIHNldF9maWxlbmFtZShmczo6cGF0aCBjb25zdCAmIGZpbGUpOwogIHZvaWQgaW5pdGlhbGl6
ZSgpOwogIHZvaWQgZGVidWcoc3RkOjpzdHJpbmcgY29uc3QgJiBzcWwsIHN0ZDo6b3N0cmVhbSAm
IG91dCk7CiAgdm9pZCBkdW1wKHN0ZDo6b3N0cmVhbSAmKTsKICB2b2lkIGxvYWQoc3RkOjppc3Ry
ZWFtICYpOwogIHZvaWQgaW5mbyhzdGQ6Om9zdHJlYW0gJik7CiAgdm9pZCB2ZXJzaW9uKHN0ZDo6
b3N0cmVhbSAmKTsKICB2b2lkIG1pZ3JhdGUoKTsKICB2b2lkIHJlaGFzaCgpOwogIHZvaWQgZW5z
dXJlX29wZW4oKTsKICAKICBib29sIGZpbGVfdmVyc2lvbl9leGlzdHMoZmlsZV9pZCBjb25zdCAm
IGlkKTsKICBib29sIG1hbmlmZXN0X3ZlcnNpb25fZXhpc3RzKG1hbmlmZXN0X2lkIGNvbnN0ICYg
aWQpOwogIGJvb2wgcmV2aXNpb25fZXhpc3RzKHJldmlzaW9uX2lkIGNvbnN0ICYgaWQpOwoKICB2
b2lkIGdldF9maWxlX2lkcyhzdGQ6OnNldDxmaWxlX2lkPiAmIGlkcyk7CiAgdm9pZCBnZXRfbWFu
aWZlc3RfaWRzKHN0ZDo6c2V0PG1hbmlmZXN0X2lkPiAmIGlkcyk7CiAgdm9pZCBnZXRfcmV2aXNp
b25faWRzKHN0ZDo6c2V0PHJldmlzaW9uX2lkPiAmIGlkcyk7CgogIHZvaWQgc2V0X2FwcChhcHBf
c3RhdGUgKiBhcHApOwogIAogIC8vIGdldCBwbGFpbiB2ZXJzaW9uIGlmIGl0IGV4aXN0cywgb3Ig
cmVjb25zdHJ1Y3QgdmVyc2lvbgogIC8vIGZyb20gZGVsdGFzIChpZiB0aGV5IGV4aXN0KQogIHZv
aWQgZ2V0X2ZpbGVfdmVyc2lvbihmaWxlX2lkIGNvbnN0ICYgaWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgIGZpbGVfZGF0YSAmIGRhdCk7CgogIC8vIGdldCBmaWxlIGRlbHRhIGlmIGl0IGV4aXN0
cywgZWxzZSBjYWxjdWxhdGUgaXQuCiAgLy8gYm90aCBtYW5pZmVzdHMgbXVzdCBleGlzdC4KICB2
b2lkIGdldF9maWxlX2RlbHRhKGZpbGVfaWQgY29uc3QgJiBzcmMsCiAgICAgICAgICAgICAgICAg
ICAgICBmaWxlX2lkIGNvbnN0ICYgZHN0LAogICAgICAgICAgICAgICAgICAgICAgZmlsZV9kZWx0
YSAmIGRlbCk7CgogIC8vIHB1dCBmaWxlIHcvbyBwcmVkZWNlc3NvciBpbnRvIGRiCiAgdm9pZCBw
dXRfZmlsZShmaWxlX2lkIGNvbnN0ICYgbmV3X2lkLAogICAgICAgICAgICAgICAgZmlsZV9kYXRh
IGNvbnN0ICYgZGF0KTsKCiAgLy8gc3RvcmUgbmV3IHZlcnNpb24gYW5kIHVwZGF0ZSBvbGQgdmVy
c2lvbiB0byBiZSBhIGRlbHRhCiAgdm9pZCBwdXRfZmlsZV92ZXJzaW9uKGZpbGVfaWQgY29uc3Qg
JiBvbGRfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfaWQgY29uc3QgJiBuZXdfaWQs
CiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfZGVsdGEgY29uc3QgJiBkZWwpOwoKICAvLyBs
b2FkIGluIGEgImRpcmVjdCIgbmV3IC0+IG9sZCByZXZlcnNlIGVkZ2UgKHVzZWQgZHVyaW5nCiAg
Ly8gbmV0c3luYyBhbmQgQ1ZTIGxvYWQtaW4pCiAgdm9pZCBwdXRfZmlsZV9yZXZlcnNlX3ZlcnNp
b24oZmlsZV9pZCBjb25zdCAmIG9sZF9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmaWxlX2lkIGNvbnN0ICYgbmV3X2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZpbGVfZGVsdGEgY29uc3QgJiBkZWwpOwoKICAvLyBnZXQgcGxhaW4gdmVyc2lvbiBpZiBpdCBl
eGlzdHMsIG9yIHJlY29uc3RydWN0IHZlcnNpb24KICAvLyBmcm9tIGRlbHRhcyAoaWYgdGhleSBl
eGlzdCkuIAogIHZvaWQgZ2V0X21hbmlmZXN0X3ZlcnNpb24obWFuaWZlc3RfaWQgY29uc3QgJiBp
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X2RhdGEgJiBkYXQpOwoKICAv
LyBnZXQgYSBjb25zdHJ1Y3RlZCBtYW5pZmVzdAogIHZvaWQgZ2V0X21hbmlmZXN0KG1hbmlmZXN0
X2lkIGNvbnN0ICYgaWQsCiAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfbWFwICYgbW0pOwoK
ICAvLyBnZXQgbWFuaWZlc3QgZGVsdGEgaWYgaXQgZXhpc3RzLCBlbHNlIGNhbGN1bGF0ZSBpdC4K
ICAvLyBib3RoIG1hbmlmZXN0cyBtdXN0IGV4aXN0LgogIHZvaWQgZ2V0X21hbmlmZXN0X2RlbHRh
KG1hbmlmZXN0X2lkIGNvbnN0ICYgc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmlm
ZXN0X2lkIGNvbnN0ICYgZHN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X2Rl
bHRhICYgZGVsKTsKCiAgLy8gcHV0IG1hbmlmZXN0IHcvbyBwcmVkZWNlc3NvciBpbnRvIGRiCiAg
dm9pZCBwdXRfbWFuaWZlc3QobWFuaWZlc3RfaWQgY29uc3QgJiBuZXdfaWQsCiAgICAgICAgICAg
ICAgICAgICAgbWFuaWZlc3RfZGF0YSBjb25zdCAmIGRhdCk7CgogIC8vIHN0b3JlIG5ldyB2ZXJz
aW9uIGFuZCB1cGRhdGUgb2xkIHZlcnNpb24gdG8gYmUgYSBkZWx0YQogIHZvaWQgcHV0X21hbmlm
ZXN0X3ZlcnNpb24obWFuaWZlc3RfaWQgY29uc3QgJiBvbGRfaWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYW5pZmVzdF9pZCBjb25zdCAmIG5ld19pZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hbmlmZXN0X2RlbHRhIGNvbnN0ICYgZGVsKTsKCiAgLy8gbG9hZCBpbiBhICJk
aXJlY3QiIG5ldyAtPiBvbGQgcmV2ZXJzZSBlZGdlICh1c2VkIGR1cmluZwogIC8vIG5ldHN5bmMg
YW5kIENWUyBsb2FkLWluKQogIHZvaWQgcHV0X21hbmlmZXN0X3JldmVyc2VfdmVyc2lvbihtYW5p
ZmVzdF9pZCBjb25zdCAmIG9sZF9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWFuaWZlc3RfaWQgY29uc3QgJiBuZXdfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hbmlmZXN0X2RlbHRhIGNvbnN0ICYgZGVsKTsKCgogIHZvaWQgZ2V0X3Jldmlz
aW9uX2FuY2VzdHJ5KHN0ZDo6bXVsdGltYXA8cmV2aXNpb25faWQsIHJldmlzaW9uX2lkPiAmIGdy
YXBoKTsKCiAgdm9pZCBnZXRfcmV2aXNpb25fcGFyZW50cyhyZXZpc2lvbl9pZCBjb25zdCAmIGlk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnNldDxyZXZpc2lvbl9pZD4gJiBwYXJl
bnRzKTsKCiAgdm9pZCBnZXRfcmV2aXNpb25fY2hpbGRyZW4ocmV2aXNpb25faWQgY29uc3QgJiBp
ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnNldDxyZXZpc2lvbl9pZD4gJiBj
aGlsZHJlbik7CgogIHZvaWQgZ2V0X3JldmlzaW9uX21hbmlmZXN0KHJldmlzaW9uX2lkIGNvbnN0
ICYgY2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfaWQgJiBtaWQpOwoK
ICB2b2lkIGdldF9yZXZpc2lvbihyZXZpc2lvbl9pZCBjb25zdCAmIGlkLAogICAgICAgICAgICAg
ICAgICAgcmV2aXNpb25fc2V0ICYgY3MpOwoKICB2b2lkIGdldF9yZXZpc2lvbihyZXZpc2lvbl9p
ZCBjb25zdCAmIGlkLAogICAgICAgICAgICAgICAgICAgcmV2aXNpb25fZGF0YSAmIGRhdCk7Cgog
IHZvaWQgcHV0X3JldmlzaW9uKHJldmlzaW9uX2lkIGNvbnN0ICYgbmV3X2lkLAogICAgICAgICAg
ICAgICAgICAgcmV2aXNpb25fc2V0IGNvbnN0ICYgY3MpOwoKICB2b2lkIHB1dF9yZXZpc2lvbihy
ZXZpc2lvbl9pZCBjb25zdCAmIG5ld19pZCwKICAgICAgICAgICAgICAgICAgICByZXZpc2lvbl9k
YXRhIGNvbnN0ICYgZGF0KTsKICAKICB2b2lkIGRlbGV0ZV9leGlzdGluZ19yZXZzX2FuZF9jZXJ0
cygpOwoKICAvLyBjcnlwdG8ga2V5IC8gY2VydCBvcGVyYXRpb25zCgogIHZvaWQgZ2V0X2tleV9p
ZHMoc3RkOjpzdHJpbmcgY29uc3QgJiBwYXR0ZXJuLAogICAgICAgICAgICAgICAgICAgc3RkOjp2
ZWN0b3I8cnNhX2tleXBhaXJfaWQ+ICYgcHVia2V5cywKICAgICAgICAgICAgICAgICAgIHN0ZDo6
dmVjdG9yPHJzYV9rZXlwYWlyX2lkPiAmIHByaXZrZXlzKTsKCiAgdm9pZCBnZXRfcHJpdmF0ZV9r
ZXlzKHN0ZDo6dmVjdG9yPHJzYV9rZXlwYWlyX2lkPiAmIHByaXZrZXlzKTsKICB2b2lkIGdldF9w
dWJsaWNfa2V5cyhzdGQ6OnZlY3Rvcjxyc2Ffa2V5cGFpcl9pZD4gJiBwdWJrZXlzKTsKCiAgYm9v
bCBrZXlfZXhpc3RzKHJzYV9rZXlwYWlyX2lkIGNvbnN0ICYgaWQpOwoKICBib29sIHB1YmxpY19r
ZXlfZXhpc3RzKGhleGVuYzxpZD4gY29uc3QgJiBoYXNoKTsKICBib29sIHB1YmxpY19rZXlfZXhp
c3RzKHJzYV9rZXlwYWlyX2lkIGNvbnN0ICYgaWQpOwogIGJvb2wgcHJpdmF0ZV9rZXlfZXhpc3Rz
KHJzYV9rZXlwYWlyX2lkIGNvbnN0ICYgaWQpOwogIAogIHZvaWQgZ2V0X3B1YmtleShoZXhlbmM8
aWQ+IGNvbnN0ICYgaGFzaCwgCiAgICAgICAgICAgICAgICAgIHJzYV9rZXlwYWlyX2lkICYgaWQs
CiAgICAgICAgICAgICAgICAgIGJhc2U2NDxyc2FfcHViX2tleT4gJiBwdWJfZW5jb2RlZCk7Cgog
IHZvaWQgZ2V0X2tleShyc2Ffa2V5cGFpcl9pZCBjb25zdCAmIGlkLCAKICAgICAgICAgICAgICAg
YmFzZTY0PHJzYV9wdWJfa2V5PiAmIHB1Yl9lbmNvZGVkKTsKCiAgdm9pZCBnZXRfa2V5KHJzYV9r
ZXlwYWlyX2lkIGNvbnN0ICYgaWQsIAogICAgICAgICAgICAgICBiYXNlNjQ8IGFyYzQ8cnNhX3By
aXZfa2V5PiA+ICYgcHJpdl9lbmNvZGVkKTsKCiAgdm9pZCBwdXRfa2V5KHJzYV9rZXlwYWlyX2lk
IGNvbnN0ICYgaWQsIAogICAgICAgICAgICAgICBiYXNlNjQ8cnNhX3B1Yl9rZXk+IGNvbnN0ICYg
cHViX2VuY29kZWQpOwogIAogIHZvaWQgcHV0X2tleShyc2Ffa2V5cGFpcl9pZCBjb25zdCAmIGlk
LCAKICAgICAgICAgICAgICAgYmFzZTY0PCBhcmM0PHJzYV9wcml2X2tleT4gPiBjb25zdCAmIHBy
aXZfZW5jb2RlZCk7CiAgCiAgdm9pZCBwdXRfa2V5X3BhaXIocnNhX2tleXBhaXJfaWQgY29uc3Qg
JiBwdWJfaWQsIAogICAgICAgICAgICAgICAgICAgIGJhc2U2NDxyc2FfcHViX2tleT4gY29uc3Qg
JiBwdWJfZW5jb2RlZCwKICAgICAgICAgICAgICAgICAgICBiYXNlNjQ8IGFyYzQ8cnNhX3ByaXZf
a2V5PiA+IGNvbnN0ICYgcHJpdl9lbmNvZGVkKTsKCiAgdm9pZCBkZWxldGVfcHJpdmF0ZV9rZXko
cnNhX2tleXBhaXJfaWQgY29uc3QgJiBwdWJfaWQpOwoKICAvLyBub3RlOiB0aGlzIHNlY3Rpb24g
aXMgcmlkaWN1bG91cy4gcGxlYXNlIGRvIHNvbWV0aGluZyBhYm91dCBpdC4KCiAgYm9vbCBtYW5p
ZmVzdF9jZXJ0X2V4aXN0cyhtYW5pZmVzdDxjZXJ0PiBjb25zdCAmIGNlcnQpOwogIGJvb2wgbWFu
aWZlc3RfY2VydF9leGlzdHMoaGV4ZW5jPGlkPiBjb25zdCAmIGhhc2gpOwogIHZvaWQgcHV0X21h
bmlmZXN0X2NlcnQobWFuaWZlc3Q8Y2VydD4gY29uc3QgJiBjZXJ0KTsKCiAgYm9vbCByZXZpc2lv
bl9jZXJ0X2V4aXN0cyhyZXZpc2lvbjxjZXJ0PiBjb25zdCAmIGNlcnQpOwogIGJvb2wgcmV2aXNp
b25fY2VydF9leGlzdHMoaGV4ZW5jPGlkPiBjb25zdCAmIGhhc2gpOwoKICB2b2lkIHB1dF9yZXZp
c2lvbl9jZXJ0KHJldmlzaW9uPGNlcnQ+IGNvbnN0ICYgY2VydCk7CgogIC8vIHRoaXMgdmFyaWFu
dCBoYXMgdG8gYmUgcmF0aGVyIGNvYXJzZSBhbmQgZmFzdCwgZm9yIG5ldHN5bmMncyB1c2UKICB2
b2lkIGdldF9yZXZpc2lvbl9jZXJ0X2luZGV4KHN0ZDo6dmVjdG9yPCBzdGQ6OnBhaXI8aGV4ZW5j
PGlkPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6cGFpcjxyZXZpc2lvbl9p
ZCwgcnNhX2tleXBhaXJfaWQ+ID4gPiAmIGlkeCk7CgogIHZvaWQgZ2V0X3JldmlzaW9uX2NlcnRz
KHN0ZDo6dmVjdG9yPCByZXZpc2lvbjxjZXJ0PiA+ICYgY2VydHMpOwoKICB2b2lkIGdldF9yZXZp
c2lvbl9jZXJ0cyhjZXJ0X25hbWUgY29uc3QgJiBuYW1lLCAKICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OnZlY3RvcjwgcmV2aXNpb248Y2VydD4gPiAmIGNlcnRzKTsKCiAgdm9pZCBnZXRf
cmV2aXNpb25fY2VydHMocmV2aXNpb25faWQgY29uc3QgJiBpZCwgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2VydF9uYW1lIGNvbnN0ICYgbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjp2ZWN0b3I8IHJldmlzaW9uPGNlcnQ+ID4gJiBjZXJ0cyk7CgogIHZvaWQgZ2V0X3Jl
dmlzaW9uX2NlcnRzKGNlcnRfbmFtZSBjb25zdCAmIG5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgYmFzZTY0PGNlcnRfdmFsdWU+IGNvbnN0ICYgdmFsLCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6OnZlY3RvcjwgcmV2aXNpb248Y2VydD4gPiAmIGNlcnRzKTsKCiAgdm9pZCBn
ZXRfcmV2aXNpb25fY2VydHMocmV2aXNpb25faWQgY29uc3QgJiBpZCwgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2VydF9uYW1lIGNvbnN0ICYgbmFtZSwgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgYmFzZTY0PGNlcnRfdmFsdWU+IGNvbnN0ICYgdmFsdWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjp2ZWN0b3I8IHJldmlzaW9uPGNlcnQ+ID4gJiBjZXJ0cyk7CgogIHZvaWQg
Z2V0X3JldmlzaW9uX2NlcnRzKHJldmlzaW9uX2lkIGNvbnN0ICYgaWQsIAogICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPCByZXZpc2lvbjxjZXJ0PiA+ICYgY2VydHMpOwoKICB2
b2lkIGdldF9yZXZpc2lvbl9jZXJ0KGhleGVuYzxpZD4gY29uc3QgJiBoYXNoLAogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV2aXNpb248Y2VydD4gJiBjZXJ0KTsKICAKICB2b2lkIGdldF9tYW5p
ZmVzdF9jZXJ0cyhtYW5pZmVzdF9pZCBjb25zdCAmIGlkLCAKICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OnZlY3RvcjwgbWFuaWZlc3Q8Y2VydD4gPiAmIGNlcnRzKTsKCiAgdm9pZCBnZXRf
bWFuaWZlc3RfY2VydHMoY2VydF9uYW1lIGNvbnN0ICYgbmFtZSwgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjp2ZWN0b3I8IG1hbmlmZXN0PGNlcnQ+ID4gJiBjZXJ0cyk7CgogIHZvaWQg
Z2V0X21hbmlmZXN0X2NlcnRzKG1hbmlmZXN0X2lkIGNvbnN0ICYgaWQsIAogICAgICAgICAgICAg
ICAgICAgICAgICAgIGNlcnRfbmFtZSBjb25zdCAmIG5hbWUsIAogICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6dmVjdG9yPCBtYW5pZmVzdDxjZXJ0PiA+ICYgY2VydHMpOwogIAogIHZvaWQg
Z2V0X21hbmlmZXN0X2NlcnQoaGV4ZW5jPGlkPiBjb25zdCAmIGhhc2gsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBtYW5pZmVzdDxjZXJ0PiAmIGNlcnQpOwoKICAvLyBlcG9jaHMgCgogIHZvaWQg
Z2V0X2Vwb2NocyhzdGQ6Om1hcDxjZXJ0X3ZhbHVlLCBlcG9jaF9kYXRhPiAmIGVwb2Nocyk7Cgog
IHZvaWQgZ2V0X2Vwb2NoKGVwb2NoX2lkIGNvbnN0ICYgZWlkLCBjZXJ0X3ZhbHVlICYgYnJhbmNo
LCBlcG9jaF9kYXRhICYgZXBvKTsKICAKICBib29sIGVwb2NoX2V4aXN0cyhlcG9jaF9pZCBjb25z
dCAmIGVpZCk7CgogIHZvaWQgc2V0X2Vwb2NoKGNlcnRfdmFsdWUgY29uc3QgJiBicmFuY2gsIGVw
b2NoX2RhdGEgY29uc3QgJiBlcG8pOyAgCgogIHZvaWQgY2xlYXJfZXBvY2goY2VydF92YWx1ZSBj
b25zdCAmIGJyYW5jaCk7CiAKICAvLyBjb21wbGV0aW9uIHN0dWZmCgogIHZvaWQgY29tcGxldGUo
c3RkOjpzdHJpbmcgY29uc3QgJiBwYXJ0aWFsLAogICAgICAgICAgICAgICAgc3RkOjpzZXQ8cmV2
aXNpb25faWQ+ICYgY29tcGxldGlvbnMpOwoKICB2b2lkIGNvbXBsZXRlKHN0ZDo6c3RyaW5nIGNv
bnN0ICYgcGFydGlhbCwKICAgICAgICAgICAgICAgIHN0ZDo6c2V0PG1hbmlmZXN0X2lkPiAmIGNv
bXBsZXRpb25zKTsKICAKICB2b2lkIGNvbXBsZXRlKHN0ZDo6c3RyaW5nIGNvbnN0ICYgcGFydGlh
bCwKICAgICAgICAgICAgICAgIHN0ZDo6c2V0PGZpbGVfaWQ+ICYgY29tcGxldGlvbnMpOwoKICB2
b2lkIGNvbXBsZXRlKGNvbW1hbmRzOjpzZWxlY3Rvcl90eXBlIHR5LAogICAgICAgICAgICAgICAg
c3RkOjpzdHJpbmcgY29uc3QgJiBwYXJ0aWFsLAogICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8
c3RkOjpwYWlyPGNvbW1hbmRzOjpzZWxlY3Rvcl90eXBlLCAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZz4gPiBjb25zdCAmIGxpbWl0LAogICAgICAgICAg
ICAgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+ICYgY29tcGxldGlvbnMpOwogIAogIH5kYXRhYmFz
ZSgpOwoKfTsKCi8vIHRyYW5zYWN0aW9uIGd1YXJkcyBuZXN0LiBhY3F1aXJlIG9uZSBpbiBhbnkg
c2NvcGUgeW91J2QgbGlrZQovLyB0cmFuc2FjdGlvbi1wcm90ZWN0ZWQsIGFuZCBpdCdsbCBtYWtl
IHN1cmUgdGhlIGRiIGFib3J0cyBhCi8vIHR4biBpZiB0aGVyZSdzIGFueSBleGNlcHRpb24gYmVm
b3JlIHlvdSBjYWxsIGNvbW1pdCgpCgpjbGFzcyB0cmFuc2FjdGlvbl9ndWFyZAp7CiAgYm9vbCBj
b21taXR0ZWQ7CiAgZGF0YWJhc2UgJiBkYjsKcHVibGljOgogIHRyYW5zYWN0aW9uX2d1YXJkKGRh
dGFiYXNlICYgZCk7CiAgfnRyYW5zYWN0aW9uX2d1YXJkKCk7CiAgdm9pZCBjb21taXQoKTsKfTsK
CgoKI2VuZGlmIC8vIF9fREFUQUJBU0VfSEhfXwo=
_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge_5.at:1118: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o parent parent.b64
else
  \$UNB64_COMMAND <parent.b64 >parent
fi
"
echo t_merge_5.at:1118 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o parent parent.b64
else
  $UNB64_COMMAND <parent.b64 >parent
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o parent parent.b64
else
  $UNB64_COMMAND <parent.b64 >parent
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_5.at:1118: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_5.at:1119: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o left left.b64
else
  \$UNB64_COMMAND <left.b64 >left
fi
"
echo t_merge_5.at:1119 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o left left.b64
else
  $UNB64_COMMAND <left.b64 >left
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o left left.b64
else
  $UNB64_COMMAND <left.b64 >left
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_5.at:1119: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_5.at:1120: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o right right.b64
else
  \$UNB64_COMMAND <right.b64 >right
fi
"
echo t_merge_5.at:1120 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o right right.b64
else
  $UNB64_COMMAND <right.b64 >right
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o right right.b64
else
  $UNB64_COMMAND <right.b64 >right
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_5.at:1120: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_5.at:1121: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o correct correct.b64
else
  \$UNB64_COMMAND <correct.b64 >correct
fi
"
echo t_merge_5.at:1121 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o correct correct.b64
else
  $UNB64_COMMAND <correct.b64 >correct
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o correct correct.b64
else
  $UNB64_COMMAND <correct.b64 >correct
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_5.at:1121: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_5.at:1123: cp -f parent testfile"
echo t_merge_5.at:1123 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f parent testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f parent testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_5.at:1123: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_5.at:1124: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_merge_5.at:1124 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_5.at:1124: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_5.at:1125: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge_5.at:1125 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_5.at:1125: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


PARENT_SHA=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_merge_5.at:1128: cp -f left testfile"
echo t_merge_5.at:1128 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f left testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f left testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_5.at:1128: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_5.at:1129: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge_5.at:1129 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_5.at:1129: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_merge_5.at:1131: rm -rf _MTN.old"
echo t_merge_5.at:1131 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_5.at:1131: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_5.at:1131: mv  _MTN _MTN.old"
echo t_merge_5.at:1131 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_5.at:1131: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_5.at:1131: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$PARENT_SHA ."
echo t_merge_5.at:1131 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$PARENT_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$PARENT_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$PARENT_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_5.at:1131: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_merge_5.at:1131: test \$PROBE_R_SHA = \$PARENT_SHA"
echo t_merge_5.at:1131 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $PARENT_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $PARENT_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $PARENT_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_5.at:1131: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_5.at:1133: cp -f right testfile"
echo t_merge_5.at:1133 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f right testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f right testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_5.at:1133: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_5.at:1134: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge_5.at:1134 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_5.at:1134: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_5.at:1136: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge"
echo t_merge_5.at:1136 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_5.at:1136: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_5.at:1138: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_merge_5.at:1138 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_5.at:1138: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_5.at:1139: cmp testfile correct"
echo t_merge_5.at:1139 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile correct ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile correct ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_5.at:1139: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  144 ) # 144. t_empty_id_completion.at:1: empty id completion
    at_setup_line='t_empty_id_completion.at:1'
    at_desc='empty id completion'
    $at_quiet $ECHO_N "144: empty id completion                          $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "144. t_empty_id_completion.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_empty_id_completion.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_empty_id_completion.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_empty_id_completion.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_empty_id_completion.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_empty_id_completion.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_empty_id_completion.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_empty_id_completion.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_empty_id_completion.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_empty_id_completion.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_empty_id_completion.at:2: rm test_keys"
echo t_empty_id_completion.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_empty_id_completion.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# regression test: completing the revision "" doesn't crash
$at_traceoff
echo "$at_srcdir/t_empty_id_completion.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net cat -r \"\" nosuchfile"
echo t_empty_id_completion.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cat -r \"\" nosuchfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cat -r "" nosuchfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cat -r "" nosuchfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_empty_id_completion.at:5: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  145 ) # 145. t_empty_path.at:1: empty string as a path name
    at_setup_line='t_empty_path.at:1'
    at_desc='empty string as a path name'
    $at_quiet $ECHO_N "145: empty string as a path name                  $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "145. t_empty_path.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_empty_path.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_empty_path.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_empty_path.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_empty_path.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_empty_path.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_empty_path.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_empty_path.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_empty_path.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_empty_path.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_empty_path.at:2: rm test_keys"
echo t_empty_path.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_empty_path.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_empty_path.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_empty_path.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_empty_path.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_empty_path.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_empty_path.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_empty_path.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV0=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_empty_path.at:9: mkdir foo"
echo t_empty_path.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_empty_path.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_empty_path.at:10: cd foo && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch \"\""
echo t_empty_path.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd foo && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd foo && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd foo && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_empty_path.at:10: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_empty_path.at:11: cd foo && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV0 \"\""
echo t_empty_path.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd foo && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV0 \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd foo && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV0 "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd foo && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV0 "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_empty_path.at:11: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_empty_path.at:12: cd foo && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch \"\""
echo t_empty_path.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd foo && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd foo && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd foo && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_empty_path.at:12: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_empty_path.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add \"\""
echo t_empty_path.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_empty_path.at:14: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_empty_path.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop \"\""
echo t_empty_path.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_empty_path.at:15: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_empty_path.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename testfile \"\""
echo t_empty_path.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename testfile \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename testfile "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename testfile "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_empty_path.at:16: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_empty_path.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename \"\" otherfile"
echo t_empty_path.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename \"\" otherfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename "" otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename "" otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_empty_path.at:17: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_empty_path.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert \"\""
echo t_empty_path.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_empty_path.at:19: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  146 ) # 146. t_empty_env.at:1: empty environment
    at_setup_line='t_empty_env.at:1'
    at_desc='empty environment'
    $at_quiet $ECHO_N "146: empty environment                            $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "146. t_empty_env.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_empty_env.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_empty_env.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_empty_env.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_empty_env.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_empty_env.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_empty_env.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_empty_env.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_empty_env.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_empty_env.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_empty_env.at:2: rm test_keys"
echo t_empty_env.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_empty_env.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_empty_env.at:7: if test \"\$OSTYPE\" = \"msys\"; then
  cp \$(which libiconv-2.dll) .
  cp \$(which zlib1.dll) .
fi"
echo t_empty_env.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a $(...) command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  cp $(which libiconv-2.dll) .
  cp $(which zlib1.dll) .
fi ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  cp $(which libiconv-2.dll) .
  cp $(which zlib1.dll) .
fi ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_empty_env.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_empty_env.at:9: env -i \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --help"
echo t_empty_env.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "env -i $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --help" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; env -i $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --help ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; env -i $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --help ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_empty_env.at:9: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_empty_env.at:12: env -i \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_empty_env.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "env -i $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; env -i $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; env -i $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_empty_env.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_empty_env.at:13: env -i \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --branch=testbranch --message=foo"
echo t_empty_env.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "env -i $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --branch=testbranch --message=foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; env -i $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --branch=testbranch --message=foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; env -i $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --branch=testbranch --message=foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_empty_env.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  147 ) # 147. t_short_opts.at:5: short options work correctly
    at_setup_line='t_short_opts.at:5'
    at_desc='short options work correctly'
    $at_quiet $ECHO_N "147: short options work correctly                 $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "147. t_short_opts.at:5: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_short_opts.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_short_opts.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_short_opts.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_short_opts.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_short_opts.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_short_opts.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_short_opts.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_short_opts.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_short_opts.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_short_opts.at:7: rm test_keys"
echo t_short_opts.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_short_opts.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >maude <<'_ATEOF'
the file maude
_ATEOF


cat >liver <<'_ATEOF'
the file liver
_ATEOF


# same as MTN macro but without --db and --key


$at_traceoff
echo "$at_srcdir/t_short_opts.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --norc --root=\$_ROOT_DIR --keydir=\$_ROOT_DIR/keys add maude"
echo t_short_opts.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --norc --root=$_ROOT_DIR --keydir=$_ROOT_DIR/keys add maude" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --norc --root=$_ROOT_DIR --keydir=$_ROOT_DIR/keys add maude ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --norc --root=$_ROOT_DIR --keydir=$_ROOT_DIR/keys add maude ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_short_opts.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check it won't work with a bad key
$at_traceoff
echo "$at_srcdir/t_short_opts.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --norc --root=\$_ROOT_DIR --keydir=\$_ROOT_DIR/keys -k badkey@example.com -b test.branch commit -d test.db -m happy"
echo t_short_opts.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --norc --root=$_ROOT_DIR --keydir=$_ROOT_DIR/keys -k badkey@example.com -b test.branch commit -d test.db -m happy" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --norc --root=$_ROOT_DIR --keydir=$_ROOT_DIR/keys -k badkey@example.com -b test.branch commit -d test.db -m happy ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --norc --root=$_ROOT_DIR --keydir=$_ROOT_DIR/keys -k badkey@example.com -b test.branch commit -d test.db -m happy ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_short_opts.at:21: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# the failed log will have been saved
$at_traceoff
echo "$at_srcdir/t_short_opts.at:24: rm _MTN/log"
echo t_short_opts.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm _MTN/log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm _MTN/log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_short_opts.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# and it does work with a key
$at_traceoff
echo "$at_srcdir/t_short_opts.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --norc --root=\$_ROOT_DIR --keydir=\$_ROOT_DIR/keys -k tester@test.net -b test.branch commit -d test.db -m happy"
echo t_short_opts.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --norc --root=$_ROOT_DIR --keydir=$_ROOT_DIR/keys -k tester@test.net -b test.branch commit -d test.db -m happy" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --norc --root=$_ROOT_DIR --keydir=$_ROOT_DIR/keys -k tester@test.net -b test.branch commit -d test.db -m happy ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --norc --root=$_ROOT_DIR --keydir=$_ROOT_DIR/keys -k tester@test.net -b test.branch commit -d test.db -m happy ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_short_opts.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  148 ) # 148. t_netsync_sigpipe.at:3: netsync is not interrupted by SIGPIPE
    at_setup_line='t_netsync_sigpipe.at:3'
    at_desc='netsync is not interrupted by SIGPIPE'
    $at_quiet $ECHO_N "148: netsync is not interrupted by SIGPIPE        $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "148. t_netsync_sigpipe.at:3: testing ..."
      $at_traceon







# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_netsync_sigpipe.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_netsync_sigpipe.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_sigpipe.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_sigpipe.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_netsync_sigpipe.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_sigpipe.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_sigpipe.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_netsync_sigpipe.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_sigpipe.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_sigpipe.at:14: rm test_keys"
echo t_netsync_sigpipe.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_sigpipe.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_netsync_sigpipe.at:15: cp test.db test2.db"
echo t_netsync_sigpipe.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_sigpipe.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_sigpipe.at:15: cp -r keys/ keys2"
echo t_netsync_sigpipe.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_sigpipe.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_sigpipe.at:15: cp test.db test3.db"
echo t_netsync_sigpipe.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_sigpipe.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_sigpipe.at:15: cp -r keys/ keys3"
echo t_netsync_sigpipe.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_sigpipe.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT



cat >testfile <<'_ATEOF'
version 0 of test file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_sigpipe.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_netsync_sigpipe.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_sigpipe.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_sigpipe.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_netsync_sigpipe.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_sigpipe.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

F_VER0=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
VER0=`cat _MTN/revision`

cat >testfile <<'_ATEOF'
version 1 of test file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_sigpipe.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message blah-blah"
echo t_netsync_sigpipe.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_sigpipe.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

F_VER1=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
VER1=`cat _MTN/revision`



# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4


# send the server a SIGPIPE signal (it should survive)

if test "$OSTYPE" = "msys"; then
  echo "No SIGPIPE on MinGW"
else
  kill -PIPE `cat monotone_at.pid` 2>/dev/null
fi


# this will fail if the SIGPIPE terminated it


$at_traceoff
echo "$at_srcdir/t_netsync_sigpipe.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_netsync_sigpipe.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_sigpipe.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon






# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  149 ) # 149. t_setup_creates_log.at:3: setup creates _MTN/log
    at_setup_line='t_setup_creates_log.at:3'
    at_desc='setup creates _MTN/log'
    $at_quiet $ECHO_N "149: setup creates _MTN/log                       $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "149. t_setup_creates_log.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_setup_creates_log.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_setup_creates_log.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_creates_log.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_creates_log.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_setup_creates_log.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_creates_log.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_creates_log.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_setup_creates_log.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_creates_log.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_creates_log.at:5: rm test_keys"
echo t_setup_creates_log.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_creates_log.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_setup_creates_log.at:7: test -f _MTN/log -a ! -s _MTN/log"
echo t_setup_creates_log.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f _MTN/log -a ! -s _MTN/log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f _MTN/log -a ! -s _MTN/log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_creates_log.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  150 ) # 150. t_checkout_creates_log.at:3: checkout creates _MTN/log
    at_setup_line='t_checkout_creates_log.at:3'
    at_desc='checkout creates _MTN/log'
    $at_quiet $ECHO_N "150: checkout creates _MTN/log                    $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "150. t_checkout_creates_log.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_checkout_creates_log.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_checkout_creates_log.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_creates_log.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_creates_log.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_checkout_creates_log.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_creates_log.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_creates_log.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_checkout_creates_log.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_creates_log.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_creates_log.at:5: rm test_keys"
echo t_checkout_creates_log.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_creates_log.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >commit_log.lua <<'_ATEOF'

function edit_comment(summary, user_log_file)
  return user_log_file
end
_ATEOF


cat >_MTN/log <<'_ATEOF'
Log entry
_ATEOF


cat >input.txt <<'_ATEOF'
version 0 of the file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_checkout_creates_log.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add input.txt"
echo t_checkout_creates_log.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_creates_log.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_checkout_creates_log.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=commit_log.lua commit"
echo t_checkout_creates_log.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=commit_log.lua commit" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=commit_log.lua commit ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=commit_log.lua commit ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_creates_log.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_checkout_creates_log.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch co testbranch"
echo t_checkout_creates_log.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch co testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch co testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch co testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_creates_log.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_checkout_creates_log.at:25: test -f testbranch/_MTN/log -a ! -s _MTN/log"
echo t_checkout_creates_log.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f testbranch/_MTN/log -a ! -s _MTN/log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f testbranch/_MTN/log -a ! -s _MTN/log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_creates_log.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  151 ) # 151. t_commit_log_1.at:3: commit using _MTN/log
    at_setup_line='t_commit_log_1.at:3'
    at_desc='commit using _MTN/log'
    $at_quiet $ECHO_N "151: commit using _MTN/log                        $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "151. t_commit_log_1.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_commit_log_1.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_commit_log_1.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_1.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_log_1.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_commit_log_1.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_1.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_log_1.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_commit_log_1.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_1.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_log_1.at:5: rm test_keys"
echo t_commit_log_1.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_1.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >commit_log.lua <<'_ATEOF'

function edit_comment(summary, user_log_file)
  return user_log_file
end
_ATEOF


cat >_MTN/log <<'_ATEOF'
Log entry
_ATEOF


cat >input.txt <<'_ATEOF'
version 0 of the file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_commit_log_1.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add input.txt"
echo t_commit_log_1.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_1.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_commit_log_1.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=commit_log.lua commit"
echo t_commit_log_1.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=commit_log.lua commit" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=commit_log.lua commit ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=commit_log.lua commit ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_1.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


TSHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_commit_log_1.at:24: test -f _MTN/log -a ! -s _MTN/log"
echo t_commit_log_1.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f _MTN/log -a ! -s _MTN/log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f _MTN/log -a ! -s _MTN/log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_1.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_log_1.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls certs \$TSHA"
echo t_commit_log_1.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $TSHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $TSHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $TSHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_1.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_log_1.at:26: grep 'Log entry' stdout >/dev/null"
echo t_commit_log_1.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'Log entry' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'Log entry' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_1.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  152 ) # 152. t_commit_log_2.at:3: commit w/o _MTN/log being present
    at_setup_line='t_commit_log_2.at:3'
    at_desc='commit w/o _MTN/log being present'
    $at_quiet $ECHO_N "152: commit w/o _MTN/log being present            $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "152. t_commit_log_2.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_commit_log_2.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_commit_log_2.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_2.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_log_2.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_commit_log_2.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_2.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_log_2.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_commit_log_2.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_2.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_log_2.at:5: rm test_keys"
echo t_commit_log_2.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_2.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_commit_log_2.at:7: rm -f _MTN/log"
echo t_commit_log_2.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f _MTN/log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f _MTN/log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_2.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >input.txt <<'_ATEOF'
version 0 of the file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_commit_log_2.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add input.txt"
echo t_commit_log_2.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_2.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_commit_log_2.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=\"Log entry\""
echo t_commit_log_2.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=\"Log entry\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message="Log entry" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message="Log entry" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_2.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


TSHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_commit_log_2.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls certs \$TSHA"
echo t_commit_log_2.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $TSHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $TSHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $TSHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_2.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_log_2.at:18: grep 'Log entry' stdout >/dev/null"
echo t_commit_log_2.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'Log entry' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'Log entry' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_2.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  153 ) # 153. t_commit_validate.at:4: commit validation lua hook
    at_setup_line='t_commit_validate.at:4'
    at_desc='commit validation lua hook'
    $at_quiet $ECHO_N "153: commit validation lua hook                   $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "153. t_commit_validate.at:4: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_commit_validate.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_commit_validate.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_validate.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_validate.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_commit_validate.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_validate.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_validate.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_commit_validate.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_validate.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_validate.at:6: rm test_keys"
echo t_commit_validate.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_validate.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >commit_validate.lua <<'_ATEOF'

function validate_commit_message(message, info)
  if (not string.find(info, "input.txt")) then
    return false, "Wrong info message"
  end
  if (message == "denyme") then
    return false, "input.txt"
  end

  return true, ""
end
_ATEOF


cat >input.txt <<'_ATEOF'
version 0 of the file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_commit_validate.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add input.txt"
echo t_commit_validate.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_validate.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_commit_validate.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=commit_validate.lua commit -m \"denyme\""
echo t_commit_validate.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=commit_validate.lua commit -m \"denyme\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=commit_validate.lua commit -m "denyme" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=commit_validate.lua commit -m "denyme" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo >>"$at_stderr"; echo "mtn: beginning commit on branch 'testbranch'
mtn: misuse: log message rejected: input.txt
" | $at_diff - "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_commit_validate.at:28: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_validate.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=commit_validate.lua commit -m \"allowme\""
echo t_commit_validate.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=commit_validate.lua commit -m \"allowme\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=commit_validate.lua commit -m "allowme" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=commit_validate.lua commit -m "allowme" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_validate.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  154 ) # 154. t_dropkey_1.at:3: drop a public key
    at_setup_line='t_dropkey_1.at:3'
    at_desc='drop a public key'
    $at_quiet $ECHO_N "154: drop a public key                            $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "154. t_dropkey_1.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_dropkey_1.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_dropkey_1.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dropkey_1.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_dropkey_1.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_dropkey_1.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dropkey_1.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_dropkey_1.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_dropkey_1.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dropkey_1.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_dropkey_1.at:5: rm test_keys"
echo t_dropkey_1.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dropkey_1.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >pubkey.txt <<'_ATEOF'
[pubkey john@doe.com]
MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQCPUdR/bM41m2KIpS0eXlTG91PSWvOUdwY4
6aKd+DXZFma8Hi00Wvwmr+0JJdWqPwyxR/Dr2a2Z7Db76lUiNlhvRw3yoKP2ip9Jjfe0LReG
5aJ5u1l5L5VPiZ5iZq9PjxNDAYASpb89yBT7BJZ6OAXuE9zHFR506Apg7UB4Em184wIBEQ==
[end]
_ATEOF


$at_traceoff
echo "$at_srcdir/t_dropkey_1.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read < pubkey.txt"
echo t_dropkey_1.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read < pubkey.txt" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read < pubkey.txt ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read < pubkey.txt ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dropkey_1.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_dropkey_1.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net pubkey john@doe.com"
echo t_dropkey_1.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pubkey john@doe.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pubkey john@doe.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pubkey john@doe.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dropkey_1.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_dropkey_1.at:18: grep 'john@doe.com' stdout >/dev/null"
echo t_dropkey_1.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'john@doe.com' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'john@doe.com' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dropkey_1.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_dropkey_1.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net dropkey john@doe.com"
echo t_dropkey_1.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net dropkey john@doe.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net dropkey john@doe.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net dropkey john@doe.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dropkey_1.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_dropkey_1.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net pubkey john@doe.com"
echo t_dropkey_1.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pubkey john@doe.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pubkey john@doe.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pubkey john@doe.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_dropkey_1.at:22: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_dropkey_1.at:24: grep 'does not exist' stderr >/dev/null"
echo t_dropkey_1.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'does not exist' stderr >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'does not exist' stderr >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dropkey_1.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  155 ) # 155. t_dropkey_2.at:3: drop a public and private key
    at_setup_line='t_dropkey_2.at:3'
    at_desc='drop a public and private key'
    $at_quiet $ECHO_N "155: drop a public and private key                $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "155. t_dropkey_2.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_dropkey_2.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_dropkey_2.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dropkey_2.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_dropkey_2.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_dropkey_2.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dropkey_2.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_dropkey_2.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_dropkey_2.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dropkey_2.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_dropkey_2.at:5: rm test_keys"
echo t_dropkey_2.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dropkey_2.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_dropkey_2.at:7: (echo john@doe.com; echo john@doe.com) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net genkey john@doe.com"
echo t_dropkey_2.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo john@doe.com; echo john@doe.com) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey john@doe.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo john@doe.com; echo john@doe.com) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey john@doe.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo john@doe.com; echo john@doe.com) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey john@doe.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dropkey_2.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_dropkey_2.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net privkey john@doe.com"
echo t_dropkey_2.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net privkey john@doe.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net privkey john@doe.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net privkey john@doe.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dropkey_2.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_dropkey_2.at:11: grep 'john@doe.com' stdout >/dev/null"
echo t_dropkey_2.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'john@doe.com' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'john@doe.com' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dropkey_2.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_dropkey_2.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net dropkey john@doe.com"
echo t_dropkey_2.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net dropkey john@doe.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net dropkey john@doe.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net dropkey john@doe.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dropkey_2.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_dropkey_2.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net privkey john@doe.com"
echo t_dropkey_2.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net privkey john@doe.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net privkey john@doe.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net privkey john@doe.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_dropkey_2.at:15: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_dropkey_2.at:17: grep 'do not exist' stderr >/dev/null"
echo t_dropkey_2.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'do not exist' stderr >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'do not exist' stderr >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dropkey_2.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_dropkey_2.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net pubkey john@doe.com"
echo t_dropkey_2.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pubkey john@doe.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pubkey john@doe.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pubkey john@doe.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_dropkey_2.at:19: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_dropkey_2.at:21: grep 'does not exist' stderr >/dev/null"
echo t_dropkey_2.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'does not exist' stderr >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'does not exist' stderr >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_dropkey_2.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  156 ) # 156. t_rename_attr.at:1: rename moves attributes
    at_setup_line='t_rename_attr.at:1'
    at_desc='rename moves attributes'
    $at_quiet $ECHO_N "156: rename moves attributes                      $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "156. t_rename_attr.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_rename_attr.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_rename_attr.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_attr.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_attr.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_rename_attr.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_attr.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_attr.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_rename_attr.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_attr.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_attr.at:2: rm test_keys"
echo t_rename_attr.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_attr.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
foo bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_attr.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_rename_attr.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_attr.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_attr.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr set testfile some_key some_value"
echo t_rename_attr.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set testfile some_key some_value" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set testfile some_key some_value ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set testfile some_key some_value ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_attr.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_attr.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr get testfile"
echo t_rename_attr.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_attr.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_attr.at:8: grep some_key stdout >/dev/null"
echo t_rename_attr.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep some_key stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep some_key stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_attr.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_attr.at:9: grep some_value stdout >/dev/null"
echo t_rename_attr.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep some_value stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep some_value stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_attr.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rename_attr.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_rename_attr.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_attr.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rename_attr.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename testfile otherfile"
echo t_rename_attr.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename testfile otherfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename testfile otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename testfile otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_attr.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_attr.at:14: mv testfile otherfile"
echo t_rename_attr.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv testfile otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv testfile otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_attr.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_attr.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_rename_attr.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_attr.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# Create a new testfile, so 'attr get' has a chance to succeed

cat >testfile <<'_ATEOF'
thing stuff
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_attr.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_rename_attr.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_attr.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_attr.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr get testfile"
echo t_rename_attr.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_attr.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_attr.at:21: grep some_key stdout >/dev/null"
echo t_rename_attr.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep some_key stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep some_key stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_rename_attr.at:21: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_attr.at:22: grep some_value stdout >/dev/null"
echo t_rename_attr.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep some_value stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep some_value stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_rename_attr.at:22: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_attr.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr get otherfile"
echo t_rename_attr.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get otherfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_attr.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_attr.at:24: grep some_key stdout >/dev/null"
echo t_rename_attr.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep some_key stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep some_key stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_attr.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_attr.at:25: grep some_value stdout >/dev/null"
echo t_rename_attr.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep some_value stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep some_value stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_attr.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  157 ) # 157. t_automate_ancestors.at:1: automate ancestors
    at_setup_line='t_automate_ancestors.at:1'
    at_desc='automate ancestors'
    $at_quiet $ECHO_N "157: automate ancestors                           $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "157. t_automate_ancestors.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_automate_ancestors.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_automate_ancestors.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_automate_ancestors.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:2: rm test_keys"
echo t_automate_ancestors.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate ancestors c7539264e83c5d6af4c792f079b5d46e9c128665"
echo t_automate_ancestors.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestors c7539264e83c5d6af4c792f079b5d46e9c128665" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestors c7539264e83c5d6af4c792f079b5d46e9c128665 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestors c7539264e83c5d6af4c792f079b5d46e9c128665 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:4: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


#   A
#  / \
# B   C
#     |\
#     D E
#     \/
#      F


cat >testfile <<'_ATEOF'
A
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_automate_ancestors.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_ancestors.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_A=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
B
_ATEOF



$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_ancestors.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_B=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:24: rm -rf _MTN.old"
echo t_automate_ancestors.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:24: mv  _MTN _MTN.old"
echo t_automate_ancestors.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV_A ."
echo t_automate_ancestors.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:24: test \$PROBE_R_SHA = \$REV_A"
echo t_automate_ancestors.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
C
_ATEOF



$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_ancestors.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_C=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
D
_ATEOF



$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_ancestors.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_D=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:36: rm -rf _MTN.old"
echo t_automate_ancestors.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:36: mv  _MTN _MTN.old"
echo t_automate_ancestors.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV_C ."
echo t_automate_ancestors.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_C ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_C . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_C . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:36: test \$PROBE_R_SHA = \$REV_C"
echo t_automate_ancestors.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $REV_C" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $REV_C ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $REV_C ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >otherfile <<'_ATEOF'
E
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:39: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add otherfile"
echo t_automate_ancestors.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_ancestors.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_E=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net explicit_merge \$REV_D \$REV_E testbranch"
echo t_automate_ancestors.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV_D $REV_E testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV_D $REV_E testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV_D $REV_E testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:44: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_automate_ancestors.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REV_F=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:47: test \$REV_F != \$REV_D"
echo t_automate_ancestors.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $REV_F != $REV_D" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $REV_F != $REV_D ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $REV_F != $REV_D ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:48: test \$REV_F != \$REV_E"
echo t_automate_ancestors.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $REV_F != $REV_E" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $REV_F != $REV_E ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $REV_F != $REV_E ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Now do some checks

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate ancestors \$REV_A"
echo t_automate_ancestors.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestors $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestors $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestors $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:54: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate ancestors \$REV_B"
echo t_automate_ancestors.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestors $REV_B" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestors $REV_B ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestors $REV_B ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:55:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_ancestors.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:56: echo \$REV_A > tmp"
echo t_automate_ancestors.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A > tmp" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A > tmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A > tmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:57: cmp tmp stdout"
echo t_automate_ancestors.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp tmp stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp tmp stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:59: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate ancestors \$REV_E"
echo t_automate_ancestors.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestors $REV_E" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestors $REV_E ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestors $REV_E ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:60:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_ancestors.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:61: echo \$REV_C > tmp"
echo t_automate_ancestors.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_C > tmp" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_C > tmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_C > tmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:62: echo \$REV_A >> tmp"
echo t_automate_ancestors.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A >> tmp" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A >> tmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A >> tmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:63: sort tmp > tmp2"
echo t_automate_ancestors.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sort tmp > tmp2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sort tmp > tmp2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:64: cmp tmp2 stdout"
echo t_automate_ancestors.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp tmp2 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp tmp2 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:64: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:66: echo \$REV_D > tmp"
echo t_automate_ancestors.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_D > tmp" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_D > tmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_D > tmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:66: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:67: echo \$REV_A >> tmp"
echo t_automate_ancestors.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A >> tmp" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A >> tmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A >> tmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:67: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:68: echo \$REV_C >> tmp"
echo t_automate_ancestors.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_C >> tmp" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_C >> tmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_C >> tmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:69: echo \$REV_E >> tmp"
echo t_automate_ancestors.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_E >> tmp" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_E >> tmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_E >> tmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:70: sort tmp > tmp2"
echo t_automate_ancestors.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sort tmp > tmp2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sort tmp > tmp2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:71: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate ancestors \$REV_F"
echo t_automate_ancestors.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestors $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestors $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestors $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:72:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_ancestors.at:72 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:72: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:73: cmp tmp2 stdout"
echo t_automate_ancestors.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp tmp2 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp tmp2 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:73: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:75: echo \$REV_D > tmp"
echo t_automate_ancestors.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_D > tmp" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_D > tmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_D > tmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:76: echo \$REV_A >> tmp"
echo t_automate_ancestors.at:76 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A >> tmp" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A >> tmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A >> tmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:76: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:77: echo \$REV_C >> tmp"
echo t_automate_ancestors.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_C >> tmp" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_C >> tmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_C >> tmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:78: echo \$REV_E >> tmp"
echo t_automate_ancestors.at:78 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_E >> tmp" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_E >> tmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_E >> tmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:78: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:79: sort tmp > tmp2"
echo t_automate_ancestors.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sort tmp > tmp2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sort tmp > tmp2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:80: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate ancestors \$REV_D \$REV_F"
echo t_automate_ancestors.at:80 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestors $REV_D $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestors $REV_D $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestors $REV_D $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:80: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:81:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_ancestors.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:81: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:82: cmp tmp2 stdout"
echo t_automate_ancestors.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp tmp2 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp tmp2 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:84: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate ancestors \$REV_A \$REV_B \$REV_C"
echo t_automate_ancestors.at:84 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestors $REV_A $REV_B $REV_C" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestors $REV_A $REV_B $REV_C ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestors $REV_A $REV_B $REV_C ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:84: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:85:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_ancestors.at:85 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:85: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:86: echo \$REV_A > tmp"
echo t_automate_ancestors.at:86 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A > tmp" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A > tmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A > tmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:86: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestors.at:87: cmp tmp stdout"
echo t_automate_ancestors.at:87 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp tmp stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp tmp stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestors.at:87: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  158 ) # 158. t_automate_descendents.at:1: automate descendents
    at_setup_line='t_automate_descendents.at:1'
    at_desc='automate descendents'
    $at_quiet $ECHO_N "158: automate descendents                         $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "158. t_automate_descendents.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_automate_descendents.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_automate_descendents.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_automate_descendents.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:2: rm test_keys"
echo t_automate_descendents.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate descendents c7539264e83c5d6af4c792f079b5d46e9c128665"
echo t_automate_descendents.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents c7539264e83c5d6af4c792f079b5d46e9c128665" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents c7539264e83c5d6af4c792f079b5d46e9c128665 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents c7539264e83c5d6af4c792f079b5d46e9c128665 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:4: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


#   A
#  / \
# B   C
#     |\
#     D E
#     \/
#      F


cat >testfile <<'_ATEOF'
A
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_automate_descendents.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_descendents.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_A=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
B
_ATEOF



$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_descendents.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_B=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:24: rm -rf _MTN.old"
echo t_automate_descendents.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:24: mv  _MTN _MTN.old"
echo t_automate_descendents.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV_A ."
echo t_automate_descendents.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:24: test \$PROBE_R_SHA = \$REV_A"
echo t_automate_descendents.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
C
_ATEOF



$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_descendents.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_C=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
D
_ATEOF



$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_descendents.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_D=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:36: rm -rf _MTN.old"
echo t_automate_descendents.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:36: mv  _MTN _MTN.old"
echo t_automate_descendents.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV_C ."
echo t_automate_descendents.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_C ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_C . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_C . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:36: test \$PROBE_R_SHA = \$REV_C"
echo t_automate_descendents.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $REV_C" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $REV_C ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $REV_C ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >otherfile <<'_ATEOF'
E
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:39: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add otherfile"
echo t_automate_descendents.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_descendents.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_E=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net explicit_merge \$REV_D \$REV_E testbranch"
echo t_automate_descendents.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV_D $REV_E testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV_D $REV_E testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV_D $REV_E testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:44: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_automate_descendents.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REV_F=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:47: test \$REV_F != \$REV_D"
echo t_automate_descendents.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $REV_F != $REV_D" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $REV_F != $REV_D ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $REV_F != $REV_D ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:48: test \$REV_F != \$REV_E"
echo t_automate_descendents.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $REV_F != $REV_E" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $REV_F != $REV_E ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $REV_F != $REV_E ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Now do some checks

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate descendents \$REV_B"
echo t_automate_descendents.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_B" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_B ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_B ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:53: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate descendents \$REV_F"
echo t_automate_descendents.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:55: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate descendents \$REV_D"
echo t_automate_descendents.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_D" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_D ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_D ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:56:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_descendents.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:57: echo \$REV_F > d_descendents"
echo t_automate_descendents.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_F > d_descendents" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_F > d_descendents ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_F > d_descendents ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:58: cmp d_descendents stdout"
echo t_automate_descendents.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp d_descendents stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp d_descendents stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:60: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate descendents \$REV_E"
echo t_automate_descendents.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_E" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_E ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_E ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:61:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_descendents.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:62: echo \$REV_F > e_descendents"
echo t_automate_descendents.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_F > e_descendents" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_F > e_descendents ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_F > e_descendents ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:63: cmp e_descendents stdout"
echo t_automate_descendents.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp e_descendents stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp e_descendents stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:65: echo \$REV_D > c_descendents"
echo t_automate_descendents.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_D > c_descendents" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_D > c_descendents ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_D > c_descendents ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:66: echo \$REV_E >> c_descendents"
echo t_automate_descendents.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_E >> c_descendents" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_E >> c_descendents ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_E >> c_descendents ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:66: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:67: echo \$REV_F >> c_descendents"
echo t_automate_descendents.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_F >> c_descendents" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_F >> c_descendents ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_F >> c_descendents ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:67: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:68: sort c_descendents > cd"
echo t_automate_descendents.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sort c_descendents > cd ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sort c_descendents > cd ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:69: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate descendents \$REV_C"
echo t_automate_descendents.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_C" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_C ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_C ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:70:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_descendents.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:71: cmp cd stdout"
echo t_automate_descendents.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp cd stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp cd stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:73: echo \$REV_D > a_descendents"
echo t_automate_descendents.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_D > a_descendents" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_D > a_descendents ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_D > a_descendents ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:73: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:74: echo \$REV_E >> a_descendents"
echo t_automate_descendents.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_E >> a_descendents" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_E >> a_descendents ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_E >> a_descendents ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:75: echo \$REV_F >> a_descendents"
echo t_automate_descendents.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_F >> a_descendents" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_F >> a_descendents ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_F >> a_descendents ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:76: echo \$REV_C >> a_descendents"
echo t_automate_descendents.at:76 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_C >> a_descendents" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_C >> a_descendents ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_C >> a_descendents ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:76: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:77: echo \$REV_B >> a_descendents"
echo t_automate_descendents.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_B >> a_descendents" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_B >> a_descendents ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_B >> a_descendents ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:78: sort a_descendents > ad"
echo t_automate_descendents.at:78 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sort a_descendents > ad ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sort a_descendents > ad ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:78: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:79: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate descendents \$REV_A"
echo t_automate_descendents.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:80:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_descendents.at:80 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:80: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:81: cmp ad stdout"
echo t_automate_descendents.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp ad stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp ad stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:81: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:83: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate descendents \$REV_D \$REV_F"
echo t_automate_descendents.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_D $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_D $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_D $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:84:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_descendents.at:84 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:84: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:85: echo \$REV_F > d_f_descendents"
echo t_automate_descendents.at:85 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_F > d_f_descendents" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_F > d_f_descendents ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_F > d_f_descendents ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:85: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:86: cmp d_f_descendents stdout"
echo t_automate_descendents.at:86 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp d_f_descendents stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp d_f_descendents stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:86: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:88: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate descendents \$REV_D \$REV_E \$REV_F"
echo t_automate_descendents.at:88 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_D $REV_E $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_D $REV_E $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_D $REV_E $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:88: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:89:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_descendents.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:89: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:90: echo \$REV_F > d_e_f_descendents"
echo t_automate_descendents.at:90 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_F > d_e_f_descendents" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_F > d_e_f_descendents ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_F > d_e_f_descendents ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:90: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:91: cmp d_e_f_descendents stdout"
echo t_automate_descendents.at:91 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp d_e_f_descendents stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp d_e_f_descendents stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:91: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:93: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate descendents \$REV_B \$REV_D \$REV_E \$REV_F"
echo t_automate_descendents.at:93 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_B $REV_D $REV_E $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_B $REV_D $REV_E $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate descendents $REV_B $REV_D $REV_E $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:93: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:94:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_descendents.at:94 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:94: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:95: echo \$REV_F > b_d_e_f_descendents"
echo t_automate_descendents.at:95 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_F > b_d_e_f_descendents" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_F > b_d_e_f_descendents ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_F > b_d_e_f_descendents ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:95: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_descendents.at:96: cmp b_d_e_f_descendents stdout"
echo t_automate_descendents.at:96 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp b_d_e_f_descendents stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp b_d_e_f_descendents stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_descendents.at:96: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  159 ) # 159. t_automate_erase_ancestors.at:1: automate erase_ancestors
    at_setup_line='t_automate_erase_ancestors.at:1'
    at_desc='automate erase_ancestors'
    $at_quiet $ECHO_N "159: automate erase_ancestors                     $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "159. t_automate_erase_ancestors.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_automate_erase_ancestors.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_automate_erase_ancestors.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_automate_erase_ancestors.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:2: rm test_keys"
echo t_automate_erase_ancestors.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



#   A
#  / \
# B   C
#     |\
#     D E
#     \/
#      F


cat >testfile <<'_ATEOF'
A
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_automate_erase_ancestors.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_erase_ancestors.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_A=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
B
_ATEOF



$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_erase_ancestors.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_B=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:22: rm -rf _MTN.old"
echo t_automate_erase_ancestors.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:22: mv  _MTN _MTN.old"
echo t_automate_erase_ancestors.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV_A ."
echo t_automate_erase_ancestors.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:22: test \$PROBE_R_SHA = \$REV_A"
echo t_automate_erase_ancestors.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
C
_ATEOF



$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_erase_ancestors.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_C=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
D
_ATEOF



$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_erase_ancestors.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_D=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:34: rm -rf _MTN.old"
echo t_automate_erase_ancestors.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:34: mv  _MTN _MTN.old"
echo t_automate_erase_ancestors.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV_C ."
echo t_automate_erase_ancestors.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_C ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_C . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_C . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:34: test \$PROBE_R_SHA = \$REV_C"
echo t_automate_erase_ancestors.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $REV_C" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $REV_C ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $REV_C ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >otherfile <<'_ATEOF'
E
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add otherfile"
echo t_automate_erase_ancestors.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_erase_ancestors.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_E=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net explicit_merge \$REV_D \$REV_E testbranch"
echo t_automate_erase_ancestors.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV_D $REV_E testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV_D $REV_E testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV_D $REV_E testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_automate_erase_ancestors.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REV_F=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:45: test \$REV_F != \$REV_D"
echo t_automate_erase_ancestors.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $REV_F != $REV_D" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $REV_F != $REV_D ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $REV_F != $REV_D ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:46: test \$REV_F != \$REV_E"
echo t_automate_erase_ancestors.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $REV_F != $REV_E" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $REV_F != $REV_E ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $REV_F != $REV_E ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Now do some checks

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:50: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors c7539264e83c5d6af4c792f079b5d46e9c128665"
echo t_automate_erase_ancestors.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors c7539264e83c5d6af4c792f079b5d46e9c128665" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors c7539264e83c5d6af4c792f079b5d46e9c128665 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors c7539264e83c5d6af4c792f079b5d46e9c128665 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:50: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors"
echo t_automate_erase_ancestors.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:54: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors \$REV_A"
echo t_automate_erase_ancestors.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:55:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_erase_ancestors.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:56: cat stdout"
echo t_automate_erase_ancestors.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:56: mv stdout expout"
echo t_automate_erase_ancestors.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:56: echo \$REV_A"
echo t_automate_erase_ancestors.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:57: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors \$REV_B"
echo t_automate_erase_ancestors.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_B" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_B ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_B ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:58:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_erase_ancestors.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:59: cat stdout"
echo t_automate_erase_ancestors.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:59: mv stdout expout"
echo t_automate_erase_ancestors.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:59: echo \$REV_B"
echo t_automate_erase_ancestors.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_B" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_B ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_B ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:60: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors \$REV_C"
echo t_automate_erase_ancestors.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_C" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_C ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_C ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:61:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_erase_ancestors.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:62: cat stdout"
echo t_automate_erase_ancestors.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:62: mv stdout expout"
echo t_automate_erase_ancestors.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:62: echo \$REV_C"
echo t_automate_erase_ancestors.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_C" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_C ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_C ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:63: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors \$REV_D"
echo t_automate_erase_ancestors.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_D" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_D ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_D ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:64:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_erase_ancestors.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:64: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:65: cat stdout"
echo t_automate_erase_ancestors.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:65: mv stdout expout"
echo t_automate_erase_ancestors.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:65: echo \$REV_D"
echo t_automate_erase_ancestors.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_D" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_D ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_D ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:66: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors \$REV_E"
echo t_automate_erase_ancestors.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_E" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_E ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_E ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:66: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:67:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_erase_ancestors.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:67: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:68: cat stdout"
echo t_automate_erase_ancestors.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:68: mv stdout expout"
echo t_automate_erase_ancestors.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:68: echo \$REV_E"
echo t_automate_erase_ancestors.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_E" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_E ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_E ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:69: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors \$REV_F"
echo t_automate_erase_ancestors.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:70:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_erase_ancestors.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:71: cat stdout"
echo t_automate_erase_ancestors.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:71: mv stdout expout"
echo t_automate_erase_ancestors.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:71: echo \$REV_F"
echo t_automate_erase_ancestors.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:74: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors \$REV_A \$REV_B"
echo t_automate_erase_ancestors.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_A $REV_B" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_A $REV_B ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_A $REV_B ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:75:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_erase_ancestors.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:76: cat stdout"
echo t_automate_erase_ancestors.at:76 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:76: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:76: mv stdout expout"
echo t_automate_erase_ancestors.at:76 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:76: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:76: echo \$REV_B"
echo t_automate_erase_ancestors.at:76 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_B" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_B ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_B ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:76: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:77: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors \$REV_A \$REV_C"
echo t_automate_erase_ancestors.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_A $REV_C" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_A $REV_C ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_A $REV_C ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:78:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_erase_ancestors.at:78 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:78: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:79: cat stdout"
echo t_automate_erase_ancestors.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:79: mv stdout expout"
echo t_automate_erase_ancestors.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:79: echo \$REV_C"
echo t_automate_erase_ancestors.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_C" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_C ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_C ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:80: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors \$REV_A \$REV_F"
echo t_automate_erase_ancestors.at:80 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_A $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_A $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_A $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:80: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:81:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_erase_ancestors.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:81: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:82: cat stdout"
echo t_automate_erase_ancestors.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:82: mv stdout expout"
echo t_automate_erase_ancestors.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:82: echo \$REV_F"
echo t_automate_erase_ancestors.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:84: echo \$REV_B > b_c"
echo t_automate_erase_ancestors.at:84 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_B > b_c" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_B > b_c ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_B > b_c ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:84: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:85: echo \$REV_C >> b_c"
echo t_automate_erase_ancestors.at:85 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_C >> b_c" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_C >> b_c ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_C >> b_c ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:85: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:86: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors \$REV_B \$REV_C"
echo t_automate_erase_ancestors.at:86 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_B $REV_C" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_B $REV_C ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_B $REV_C ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:86: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:87:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_erase_ancestors.at:87 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:87: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:88: cat stdout"
echo t_automate_erase_ancestors.at:88 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:88: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:88: mv stdout expout"
echo t_automate_erase_ancestors.at:88 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:88: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:88: sort < b_c"
echo t_automate_erase_ancestors.at:88 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sort < b_c ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sort < b_c ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:88: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:90: echo \$REV_B > a_b_c"
echo t_automate_erase_ancestors.at:90 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_B > a_b_c" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_B > a_b_c ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_B > a_b_c ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:90: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:91: echo \$REV_C >> a_b_c"
echo t_automate_erase_ancestors.at:91 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_C >> a_b_c" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_C >> a_b_c ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_C >> a_b_c ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:91: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:92: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors \$REV_A \$REV_B \$REV_C"
echo t_automate_erase_ancestors.at:92 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_A $REV_B $REV_C" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_A $REV_B $REV_C ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_A $REV_B $REV_C ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:92: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:93:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_erase_ancestors.at:93 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:93: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:94: cat stdout"
echo t_automate_erase_ancestors.at:94 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:94: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:94: mv stdout expout"
echo t_automate_erase_ancestors.at:94 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:94: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:94: sort < a_b_c"
echo t_automate_erase_ancestors.at:94 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sort < a_b_c ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sort < a_b_c ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:94: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:96: echo \$REV_B > b_f"
echo t_automate_erase_ancestors.at:96 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_B > b_f" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_B > b_f ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_B > b_f ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:96: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:97: echo \$REV_F >> b_f"
echo t_automate_erase_ancestors.at:97 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_F >> b_f" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_F >> b_f ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_F >> b_f ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:97: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:98: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors \$REV_B \$REV_F"
echo t_automate_erase_ancestors.at:98 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_B $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_B $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_B $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:98: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:99:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_erase_ancestors.at:99 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:99: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:100: cat stdout"
echo t_automate_erase_ancestors.at:100 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:100: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:100: mv stdout expout"
echo t_automate_erase_ancestors.at:100 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:100: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:100: sort < b_f"
echo t_automate_erase_ancestors.at:100 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sort < b_f ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sort < b_f ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:100: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:102: echo \$REV_B > a_b_f"
echo t_automate_erase_ancestors.at:102 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_B > a_b_f" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_B > a_b_f ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_B > a_b_f ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:102: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:103: echo \$REV_F >> a_b_f"
echo t_automate_erase_ancestors.at:103 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_F >> a_b_f" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_F >> a_b_f ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_F >> a_b_f ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:103: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:104: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors \$REV_A \$REV_B \$REV_F"
echo t_automate_erase_ancestors.at:104 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_A $REV_B $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_A $REV_B $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate erase_ancestors $REV_A $REV_B $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:104: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:105:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_erase_ancestors.at:105 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:105: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:106: cat stdout"
echo t_automate_erase_ancestors.at:106 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:106: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:106: mv stdout expout"
echo t_automate_erase_ancestors.at:106 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:106: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_erase_ancestors.at:106: sort < a_b_f"
echo t_automate_erase_ancestors.at:106 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sort < a_b_f ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sort < a_b_f ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_erase_ancestors.at:106: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  160 ) # 160. t_automate_toposort.at:1: automate toposort
    at_setup_line='t_automate_toposort.at:1'
    at_desc='automate toposort'
    $at_quiet $ECHO_N "160: automate toposort                            $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "160. t_automate_toposort.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_automate_toposort.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_automate_toposort.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_automate_toposort.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:2: rm test_keys"
echo t_automate_toposort.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



#   A
#  / \
# B   C
#     |\
#     D E
#     \/
#      F


cat >testfile <<'_ATEOF'
A
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_automate_toposort.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_toposort.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_A=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
B
_ATEOF



$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_toposort.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_B=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:22: rm -rf _MTN.old"
echo t_automate_toposort.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:22: mv  _MTN _MTN.old"
echo t_automate_toposort.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV_A ."
echo t_automate_toposort.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:22: test \$PROBE_R_SHA = \$REV_A"
echo t_automate_toposort.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
C
_ATEOF



$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_toposort.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_C=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
D
_ATEOF



$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_toposort.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_D=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:34: rm -rf _MTN.old"
echo t_automate_toposort.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:34: mv  _MTN _MTN.old"
echo t_automate_toposort.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV_C ."
echo t_automate_toposort.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_C ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_C . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_C . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:34: test \$PROBE_R_SHA = \$REV_C"
echo t_automate_toposort.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $REV_C" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $REV_C ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $REV_C ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >otherfile <<'_ATEOF'
E
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add otherfile"
echo t_automate_toposort.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_toposort.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_E=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net explicit_merge \$REV_D \$REV_E testbranch"
echo t_automate_toposort.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV_D $REV_E testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV_D $REV_E testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV_D $REV_E testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_automate_toposort.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REV_F=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:45: test \$REV_F != \$REV_D"
echo t_automate_toposort.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $REV_F != $REV_D" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $REV_F != $REV_D ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $REV_F != $REV_D ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:46: test \$REV_F != \$REV_E"
echo t_automate_toposort.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $REV_F != $REV_E" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $REV_F != $REV_E ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $REV_F != $REV_E ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Now do some checks

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:50: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate toposort c7539264e83c5d6af4c792f079b5d46e9c128665"
echo t_automate_toposort.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort c7539264e83c5d6af4c792f079b5d46e9c128665" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort c7539264e83c5d6af4c792f079b5d46e9c128665 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort c7539264e83c5d6af4c792f079b5d46e9c128665 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:50: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate toposort \"\""
echo t_automate_toposort.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:52: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:54: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate toposort"
echo t_automate_toposort.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:56: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate toposort \$REV_A"
echo t_automate_toposort.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:57:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_toposort.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:58: cat stdout"
echo t_automate_toposort.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:58: mv stdout expout"
echo t_automate_toposort.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:58: echo \$REV_A"
echo t_automate_toposort.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:59: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate toposort \$REV_B"
echo t_automate_toposort.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_B" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_B ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_B ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:60:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_toposort.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:61: cat stdout"
echo t_automate_toposort.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:61: mv stdout expout"
echo t_automate_toposort.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:61: echo \$REV_B"
echo t_automate_toposort.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_B" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_B ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_B ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:62: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate toposort \$REV_C"
echo t_automate_toposort.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_C" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_C ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_C ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:63:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_toposort.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:64: cat stdout"
echo t_automate_toposort.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:64: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:64: mv stdout expout"
echo t_automate_toposort.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:64: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:64: echo \$REV_C"
echo t_automate_toposort.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_C" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_C ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_C ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:64: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:65: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate toposort \$REV_D"
echo t_automate_toposort.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_D" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_D ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_D ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:66:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_toposort.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:66: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:67: cat stdout"
echo t_automate_toposort.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:67: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:67: mv stdout expout"
echo t_automate_toposort.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:67: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:67: echo \$REV_D"
echo t_automate_toposort.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_D" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_D ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_D ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:67: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:68: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate toposort \$REV_E"
echo t_automate_toposort.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_E" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_E ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_E ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:69:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_toposort.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:70: cat stdout"
echo t_automate_toposort.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:70: mv stdout expout"
echo t_automate_toposort.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:70: echo \$REV_E"
echo t_automate_toposort.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_E" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_E ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_E ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:71: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate toposort \$REV_F"
echo t_automate_toposort.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:72:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_toposort.at:72 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:72: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:73: cat stdout"
echo t_automate_toposort.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:73: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:73: mv stdout expout"
echo t_automate_toposort.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:73: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:73: echo \$REV_F"
echo t_automate_toposort.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:73: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:75: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate toposort \$REV_A \$REV_A"
echo t_automate_toposort.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_A $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_A $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_A $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:76:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_toposort.at:76 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:76: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:77: cat stdout"
echo t_automate_toposort.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:77: mv stdout expout"
echo t_automate_toposort.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:77: echo \$REV_A"
echo t_automate_toposort.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:79: echo \$REV_A > ab"
echo t_automate_toposort.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A > ab" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A > ab ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A > ab ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:80: echo \$REV_B >> ab"
echo t_automate_toposort.at:80 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_B >> ab" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_B >> ab ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_B >> ab ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:80: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:81: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate toposort \$REV_A \$REV_B"
echo t_automate_toposort.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_A $REV_B" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_A $REV_B ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_A $REV_B ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:81: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:82:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_toposort.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:83: cat stdout"
echo t_automate_toposort.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:83: mv stdout expout"
echo t_automate_toposort.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:83: cat ab"
echo t_automate_toposort.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat ab ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat ab ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:84: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate toposort \$REV_B \$REV_A"
echo t_automate_toposort.at:84 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_B $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_B $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_B $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:84: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:85:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_toposort.at:85 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:85: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:86: cat stdout"
echo t_automate_toposort.at:86 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:86: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:86: mv stdout expout"
echo t_automate_toposort.at:86 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:86: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:86: cat ab"
echo t_automate_toposort.at:86 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat ab ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat ab ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:86: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:88: echo \$REV_A > af"
echo t_automate_toposort.at:88 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A > af" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A > af ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A > af ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:88: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:89: echo \$REV_F >> af"
echo t_automate_toposort.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_F >> af" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_F >> af ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_F >> af ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:89: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:90: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate toposort \$REV_A \$REV_F"
echo t_automate_toposort.at:90 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_A $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_A $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_A $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:90: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:91:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_toposort.at:91 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:91: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:92: cat stdout"
echo t_automate_toposort.at:92 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:92: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:92: mv stdout expout"
echo t_automate_toposort.at:92 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:92: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:92: cat af"
echo t_automate_toposort.at:92 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat af ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat af ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:92: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:93: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate toposort \$REV_F \$REV_A"
echo t_automate_toposort.at:93 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_F $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_F $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_F $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:93: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:94:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_toposort.at:94 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:94: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:95: cat stdout"
echo t_automate_toposort.at:95 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:95: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:95: mv stdout expout"
echo t_automate_toposort.at:95 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:95: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:95: cat af"
echo t_automate_toposort.at:95 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat af ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat af ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:95: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:97: echo \$REV_A > acef"
echo t_automate_toposort.at:97 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A > acef" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A > acef ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A > acef ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:97: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:98: echo \$REV_C >> acef"
echo t_automate_toposort.at:98 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_C >> acef" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_C >> acef ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_C >> acef ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:98: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:99: echo \$REV_E >> acef"
echo t_automate_toposort.at:99 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_E >> acef" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_E >> acef ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_E >> acef ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:99: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:100: echo \$REV_F >> acef"
echo t_automate_toposort.at:100 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_F >> acef" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_F >> acef ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_F >> acef ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:100: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:101: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate toposort \$REV_A \$REV_C \$REV_E \$REV_F"
echo t_automate_toposort.at:101 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_A $REV_C $REV_E $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_A $REV_C $REV_E $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_A $REV_C $REV_E $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:101: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:102:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_toposort.at:102 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:102: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:103: cat stdout"
echo t_automate_toposort.at:103 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:103: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:103: mv stdout expout"
echo t_automate_toposort.at:103 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:103: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:103: cat acef"
echo t_automate_toposort.at:103 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat acef ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat acef ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:103: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:104: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate toposort \$REV_C \$REV_A \$REV_E \$REV_F"
echo t_automate_toposort.at:104 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_C $REV_A $REV_E $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_C $REV_A $REV_E $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_C $REV_A $REV_E $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:104: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:105:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_toposort.at:105 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:105: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:106: cat stdout"
echo t_automate_toposort.at:106 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:106: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:106: mv stdout expout"
echo t_automate_toposort.at:106 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:106: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:106: cat acef"
echo t_automate_toposort.at:106 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat acef ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat acef ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:106: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:107: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate toposort \$REV_F \$REV_C \$REV_A \$REV_E"
echo t_automate_toposort.at:107 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_F $REV_C $REV_A $REV_E" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_F $REV_C $REV_A $REV_E ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_F $REV_C $REV_A $REV_E ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:107: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:108:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_toposort.at:108 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:108: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:109: cat stdout"
echo t_automate_toposort.at:109 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:109: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:109: mv stdout expout"
echo t_automate_toposort.at:109 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:109: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:109: cat acef"
echo t_automate_toposort.at:109 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat acef ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat acef ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:109: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:110: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate toposort \$REV_F \$REV_E \$REV_C \$REV_A"
echo t_automate_toposort.at:110 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_F $REV_E $REV_C $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_F $REV_E $REV_C $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_F $REV_E $REV_C $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:110: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:111:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_toposort.at:111 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:111: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:112: cat stdout"
echo t_automate_toposort.at:112 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:112: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:112: mv stdout expout"
echo t_automate_toposort.at:112 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:112: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:112: cat acef"
echo t_automate_toposort.at:112 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat acef ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat acef ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:112: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:114: echo \$REV_C > cdef"
echo t_automate_toposort.at:114 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_C > cdef" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_C > cdef ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_C > cdef ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:114: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:115: echo \$REV_D >> cdef"
echo t_automate_toposort.at:115 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_D >> cdef" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_D >> cdef ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_D >> cdef ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:115: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:116: echo \$REV_E >> cdef"
echo t_automate_toposort.at:116 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_E >> cdef" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_E >> cdef ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_E >> cdef ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:116: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:117: echo \$REV_F >> cdef"
echo t_automate_toposort.at:117 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_F >> cdef" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_F >> cdef ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_F >> cdef ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:117: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:118: echo \$REV_C > cedf"
echo t_automate_toposort.at:118 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_C > cedf" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_C > cedf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_C > cedf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:118: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:119: echo \$REV_E >> cedf"
echo t_automate_toposort.at:119 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_E >> cedf" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_E >> cedf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_E >> cedf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:119: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:120: echo \$REV_D >> cedf"
echo t_automate_toposort.at:120 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_D >> cedf" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_D >> cedf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_D >> cedf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:120: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:121: echo \$REV_F >> cedf"
echo t_automate_toposort.at:121 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_F >> cedf" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_F >> cedf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_F >> cedf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:121: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:122: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate toposort \$REV_C \$REV_D \$REV_E \$REV_F"
echo t_automate_toposort.at:122 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_C $REV_D $REV_E $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_C $REV_D $REV_E $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort $REV_C $REV_D $REV_E $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:122: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:123:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_toposort.at:123 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:123: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_toposort.at:124: cmp stdout cdef || cmp stdout cedf"
echo t_automate_toposort.at:124 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout cdef || cmp stdout cedf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout cdef || cmp stdout cedf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_toposort.at:124: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  161 ) # 161. t_diff_first_rev.at:1: diff in a never-committed project
    at_setup_line='t_diff_first_rev.at:1'
    at_desc='diff in a never-committed project'
    $at_quiet $ECHO_N "161: diff in a never-committed project            $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "161. t_diff_first_rev.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_diff_first_rev.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_diff_first_rev.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_first_rev.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_first_rev.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_diff_first_rev.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_first_rev.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_first_rev.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_diff_first_rev.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_first_rev.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_first_rev.at:2: rm test_keys"
echo t_diff_first_rev.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_first_rev.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
flagella
_ATEOF

$at_traceoff
echo "$at_srcdir/t_diff_first_rev.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_diff_first_rev.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_first_rev.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_diff_first_rev.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff"
echo t_diff_first_rev.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_first_rev.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_first_rev.at:7: grep testfile stdout >/dev/null"
echo t_diff_first_rev.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_first_rev.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_first_rev.at:8: grep flagella stdout >/dev/null"
echo t_diff_first_rev.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep flagella stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep flagella stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_first_rev.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  162 ) # 162. t_automate_ancestry_difference.at:1: automate ancestry_difference
    at_setup_line='t_automate_ancestry_difference.at:1'
    at_desc='automate ancestry_difference'
    $at_quiet $ECHO_N "162: automate ancestry_difference                 $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "162. t_automate_ancestry_difference.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_automate_ancestry_difference.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_automate_ancestry_difference.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_automate_ancestry_difference.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:2: rm test_keys"
echo t_automate_ancestry_difference.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



#   A
#  / \
# B   C
#     |\
#     D E
#     \/
#      F


cat >testfile <<'_ATEOF'
A
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_automate_ancestry_difference.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_ancestry_difference.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_A=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
B
_ATEOF



$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_ancestry_difference.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_B=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:22: rm -rf _MTN.old"
echo t_automate_ancestry_difference.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:22: mv  _MTN _MTN.old"
echo t_automate_ancestry_difference.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV_A ."
echo t_automate_ancestry_difference.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:22: test \$PROBE_R_SHA = \$REV_A"
echo t_automate_ancestry_difference.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
C
_ATEOF



$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_ancestry_difference.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_C=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
D
_ATEOF



$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_ancestry_difference.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_D=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:34: rm -rf _MTN.old"
echo t_automate_ancestry_difference.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:34: mv  _MTN _MTN.old"
echo t_automate_ancestry_difference.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV_C ."
echo t_automate_ancestry_difference.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_C ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_C . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_C . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:34: test \$PROBE_R_SHA = \$REV_C"
echo t_automate_ancestry_difference.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $REV_C" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $REV_C ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $REV_C ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >otherfile <<'_ATEOF'
E
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add otherfile"
echo t_automate_ancestry_difference.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_ancestry_difference.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_E=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net explicit_merge \$REV_D \$REV_E testbranch"
echo t_automate_ancestry_difference.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV_D $REV_E testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV_D $REV_E testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV_D $REV_E testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_automate_ancestry_difference.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REV_F=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:45: test \$REV_F != \$REV_D"
echo t_automate_ancestry_difference.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $REV_F != $REV_D" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $REV_F != $REV_D ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $REV_F != $REV_D ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:46: test \$REV_F != \$REV_E"
echo t_automate_ancestry_difference.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $REV_F != $REV_E" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $REV_F != $REV_E ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $REV_F != $REV_E ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Now do some checks

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:50: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference c7539264e83c5d6af4c792f079b5d46e9c128665"
echo t_automate_ancestry_difference.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference c7539264e83c5d6af4c792f079b5d46e9c128665" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference c7539264e83c5d6af4c792f079b5d46e9c128665 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference c7539264e83c5d6af4c792f079b5d46e9c128665 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:50: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:51: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference \$REV_A c7539264e83c5d6af4c792f079b5d46e9c128665"
echo t_automate_ancestry_difference.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_A c7539264e83c5d6af4c792f079b5d46e9c128665" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_A c7539264e83c5d6af4c792f079b5d46e9c128665 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_A c7539264e83c5d6af4c792f079b5d46e9c128665 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:51: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:53: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference \$REV_A"
echo t_automate_ancestry_difference.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:54:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_ancestry_difference.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:55: cat stdout"
echo t_automate_ancestry_difference.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:55: mv stdout expout"
echo t_automate_ancestry_difference.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:55: echo \$REV_A"
echo t_automate_ancestry_difference.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:56: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference \$REV_A \$REV_A"
echo t_automate_ancestry_difference.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_A $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_A $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_A $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:57: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference \$REV_A \$REV_B"
echo t_automate_ancestry_difference.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_A $REV_B" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_A $REV_B ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_A $REV_B ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:58: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference \$REV_A \$REV_F"
echo t_automate_ancestry_difference.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_A $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_A $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_A $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:59: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference \$REV_F \$REV_F"
echo t_automate_ancestry_difference.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_F $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_F $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_F $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:61: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference \$REV_B \$REV_A"
echo t_automate_ancestry_difference.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_B $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_B $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_B $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:62:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_ancestry_difference.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:63: cat stdout"
echo t_automate_ancestry_difference.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:63: mv stdout expout"
echo t_automate_ancestry_difference.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:63: echo \$REV_B"
echo t_automate_ancestry_difference.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_B" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_B ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_B ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:65: echo \$REV_A > ab"
echo t_automate_ancestry_difference.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A > ab" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A > ab ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A > ab ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:66: echo \$REV_B >> ab"
echo t_automate_ancestry_difference.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_B >> ab" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_B >> ab ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_B >> ab ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:66: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:67: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference \$REV_B"
echo t_automate_ancestry_difference.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_B" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_B ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_B ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:67: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:68:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_ancestry_difference.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:69: cat stdout"
echo t_automate_ancestry_difference.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:69: mv stdout expout"
echo t_automate_ancestry_difference.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:69: cat ab"
echo t_automate_ancestry_difference.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat ab ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat ab ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:71: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference \$REV_F \$REV_D \$REV_E"
echo t_automate_ancestry_difference.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_F $REV_D $REV_E" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_F $REV_D $REV_E ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_F $REV_D $REV_E ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:72:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_ancestry_difference.at:72 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:72: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:73: cat stdout"
echo t_automate_ancestry_difference.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:73: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:73: mv stdout expout"
echo t_automate_ancestry_difference.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:73: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:73: echo \$REV_F"
echo t_automate_ancestry_difference.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:73: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:75: echo \$REV_D > df"
echo t_automate_ancestry_difference.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_D > df" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_D > df ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_D > df ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:76: echo \$REV_F >> df"
echo t_automate_ancestry_difference.at:76 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_F >> df" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_F >> df ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_F >> df ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:76: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:77: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference \$REV_F \$REV_E"
echo t_automate_ancestry_difference.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_F $REV_E" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_F $REV_E ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_F $REV_E ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:78:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_ancestry_difference.at:78 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:78: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:79: cat stdout"
echo t_automate_ancestry_difference.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:79: mv stdout expout"
echo t_automate_ancestry_difference.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:79: cat df"
echo t_automate_ancestry_difference.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat df ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat df ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:81: echo \$REV_A > acdef"
echo t_automate_ancestry_difference.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A > acdef" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A > acdef ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A > acdef ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:81: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:82: echo \$REV_C >> acdef"
echo t_automate_ancestry_difference.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_C >> acdef" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_C >> acdef ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_C >> acdef ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:83: echo \$REV_D >> acdef"
echo t_automate_ancestry_difference.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_D >> acdef" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_D >> acdef ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_D >> acdef ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:84: echo \$REV_E >> acdef"
echo t_automate_ancestry_difference.at:84 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_E >> acdef" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_E >> acdef ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_E >> acdef ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:84: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:85: echo \$REV_F >> acdef"
echo t_automate_ancestry_difference.at:85 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_F >> acdef" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_F >> acdef ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_F >> acdef ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:85: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:86: echo \$REV_A > acedf"
echo t_automate_ancestry_difference.at:86 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A > acedf" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A > acedf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A > acedf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:86: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:87: echo \$REV_C >> acedf"
echo t_automate_ancestry_difference.at:87 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_C >> acedf" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_C >> acedf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_C >> acedf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:87: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:88: echo \$REV_E >> acedf"
echo t_automate_ancestry_difference.at:88 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_E >> acedf" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_E >> acedf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_E >> acedf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:88: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:89: echo \$REV_D >> acedf"
echo t_automate_ancestry_difference.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_D >> acedf" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_D >> acedf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_D >> acedf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:89: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:90: echo \$REV_F >> acedf"
echo t_automate_ancestry_difference.at:90 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_F >> acedf" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_F >> acedf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_F >> acedf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:90: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:91: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference \$REV_F"
echo t_automate_ancestry_difference.at:91 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:91: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:92:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_ancestry_difference.at:92 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:92: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:93: cmp stdout acdef || cmp stdout acedf"
echo t_automate_ancestry_difference.at:93 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout acdef || cmp stdout acedf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout acdef || cmp stdout acedf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:93: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:95: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference \$REV_B \$REV_F"
echo t_automate_ancestry_difference.at:95 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_B $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_B $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate ancestry_difference $REV_B $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:95: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:96:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_ancestry_difference.at:96 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:96: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:97: cat stdout"
echo t_automate_ancestry_difference.at:97 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:97: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:97: mv stdout expout"
echo t_automate_ancestry_difference.at:97 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:97: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_ancestry_difference.at:97: echo \$REV_B"
echo t_automate_ancestry_difference.at:97 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_B" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_B ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_B ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_ancestry_difference.at:97: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  163 ) # 163. t_automate_leaves.at:1: automate leaves
    at_setup_line='t_automate_leaves.at:1'
    at_desc='automate leaves'
    $at_quiet $ECHO_N "163: automate leaves                              $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "163. t_automate_leaves.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_automate_leaves.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_automate_leaves.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_automate_leaves.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:2: rm test_keys"
echo t_automate_leaves.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# A
# |\
# B C
#  \|
#   D
# ^testbranch
#   ^otherbranch

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate leaves"
echo t_automate_leaves.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate leaves" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate leaves ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate leaves ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_automate_leaves.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_leaves.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_A=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate leaves"
echo t_automate_leaves.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate leaves" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate leaves ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate leaves ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:20:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_leaves.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:21: cat stdout"
echo t_automate_leaves.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:21: mv stdout expout"
echo t_automate_leaves.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:21: echo \$REV_A"
echo t_automate_leaves.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
other stuff
_ATEOF



$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_leaves.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_B=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate leaves"
echo t_automate_leaves.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate leaves" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate leaves ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate leaves ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:29:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_leaves.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:30: cat stdout"
echo t_automate_leaves.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:30: mv stdout expout"
echo t_automate_leaves.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:30: echo \$REV_B"
echo t_automate_leaves.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_B" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_B ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_B ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:32: rm -rf _MTN.old"
echo t_automate_leaves.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:32: mv  _MTN _MTN.old"
echo t_automate_leaves.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV_A ."
echo t_automate_leaves.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:32: test \$PROBE_R_SHA = \$REV_A"
echo t_automate_leaves.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >otherfile <<'_ATEOF'
other blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add otherfile"
echo t_automate_leaves.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah"
echo t_automate_leaves.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_C=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:39: echo \$REV_B > bc"
echo t_automate_leaves.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_B > bc" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_B > bc ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_B > bc ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:40: echo \$REV_C >> bc"
echo t_automate_leaves.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_C >> bc" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_C >> bc ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_C >> bc ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate leaves"
echo t_automate_leaves.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate leaves" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate leaves ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate leaves ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:42:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_leaves.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:43: cat stdout"
echo t_automate_leaves.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:43: mv stdout expout"
echo t_automate_leaves.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:43: sort < bc"
echo t_automate_leaves.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sort < bc ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sort < bc ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:45: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net propagate testbranch otherbranch"
echo t_automate_leaves.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate testbranch otherbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate testbranch otherbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate testbranch otherbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:46: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_automate_leaves.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REV_D=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:49: test \$REV_D != \$REV_B"
echo t_automate_leaves.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $REV_D != $REV_B" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $REV_D != $REV_B ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $REV_D != $REV_B ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:50: test \$REV_D != \$REV_C"
echo t_automate_leaves.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $REV_D != $REV_C" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $REV_D != $REV_C ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $REV_D != $REV_C ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate leaves"
echo t_automate_leaves.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate leaves" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate leaves ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate leaves ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:52: mv stdout expout"
echo t_automate_leaves.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate heads otherbranch"
echo t_automate_leaves.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate heads otherbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate heads otherbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate heads otherbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:53: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate leaves"
echo t_automate_leaves.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate leaves" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate leaves ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate leaves ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:53: mv stdout firstout"
echo t_automate_leaves.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout firstout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout firstout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:53: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate heads testbranch"
echo t_automate_leaves.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate heads testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate heads testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate heads testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:53: mv stdout secondout"
echo t_automate_leaves.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout secondout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout secondout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_leaves.at:53: cmp firstout secondout"
echo t_automate_leaves.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp firstout secondout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp firstout secondout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_automate_leaves.at:53: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  164 ) # 164. t_log_last_next.at:1: log --last=N/--next=N
    at_setup_line='t_log_last_next.at:1'
    at_desc='log --last=N/--next=N'
    $at_quiet $ECHO_N "164: log --last=N/--next=N                        $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "164. t_log_last_next.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_log_last_next.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_log_last_next.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_last_next.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_log_last_next.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_last_next.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_log_last_next.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_last_next.at:2: rm test_keys"
echo t_log_last_next.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >foo <<'_ATEOF'
foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_log_last_next.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_log_last_next.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_last_next.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message \"Addition of foo.\""
echo t_log_last_next.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message \"Addition of foo.\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message "Addition of foo." ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message "Addition of foo." ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

FOO=`cat _MTN/revision`


cat >bar <<'_ATEOF'
bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_log_last_next.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add bar"
echo t_log_last_next.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_last_next.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message \"Addition of bar.\""
echo t_log_last_next.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message \"Addition of bar.\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message "Addition of bar." ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message "Addition of bar." ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >baz <<'_ATEOF'
baz
_ATEOF

$at_traceoff
echo "$at_srcdir/t_log_last_next.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add baz"
echo t_log_last_next.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add baz" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add baz ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add baz ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_last_next.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message \"Addition of baz.\""
echo t_log_last_next.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message \"Addition of baz.\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message "Addition of baz." ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message "Addition of baz." ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_log_last_next.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log --last=0"
echo t_log_last_next.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --last=0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --last=0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --last=0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_log_last_next.at:21: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_last_next.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log --last=1 | grep '^Revision:'"
echo t_log_last_next.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --last=1 | grep '^Revision:'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --last=1 | grep '^Revision:' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --last=1 | grep '^Revision:' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_last_next.at:24: test 1 -eq \"\`wc -l <stdout\`\""
echo t_log_last_next.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test 1 -eq "`wc -l <stdout`" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test 1 -eq "`wc -l <stdout`" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_last_next.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log --last=2 | grep '^Revision:'"
echo t_log_last_next.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --last=2 | grep '^Revision:'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --last=2 | grep '^Revision:' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --last=2 | grep '^Revision:' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_last_next.at:27: test 2 -eq \"\`wc -l <stdout\`\""
echo t_log_last_next.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test 2 -eq "`wc -l <stdout`" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test 2 -eq "`wc -l <stdout`" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_last_next.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log --last=3 | grep '^Revision:'"
echo t_log_last_next.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --last=3 | grep '^Revision:'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --last=3 | grep '^Revision:' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --last=3 | grep '^Revision:' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_last_next.at:30: test 3 -eq \"\`wc -l <stdout\`\""
echo t_log_last_next.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test 3 -eq "`wc -l <stdout`" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test 3 -eq "`wc -l <stdout`" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_log_last_next.at:33: rm -rf _MTN.old"
echo t_log_last_next.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_last_next.at:33: mv  _MTN _MTN.old"
echo t_log_last_next.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_last_next.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$FOO ."
echo t_log_last_next.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$FOO ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$FOO . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$FOO . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_log_last_next.at:33: test \$PROBE_R_SHA = \$FOO"
echo t_log_last_next.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $FOO" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $FOO ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $FOO ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_log_last_next.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log --next=0"
echo t_log_last_next.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --next=0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --next=0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --next=0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_log_last_next.at:36: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_last_next.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log --next=1 | grep '^Revision:'"
echo t_log_last_next.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --next=1 | grep '^Revision:'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --next=1 | grep '^Revision:' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --next=1 | grep '^Revision:' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_last_next.at:39: test 1 -eq \"\`wc -l <stdout\`\""
echo t_log_last_next.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test 1 -eq "`wc -l <stdout`" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test 1 -eq "`wc -l <stdout`" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_last_next.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log --next=2 | grep '^Revision:'"
echo t_log_last_next.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --next=2 | grep '^Revision:'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --next=2 | grep '^Revision:' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --next=2 | grep '^Revision:' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_last_next.at:42: test 2 -eq \"\`wc -l <stdout\`\""
echo t_log_last_next.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test 2 -eq "`wc -l <stdout`" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test 2 -eq "`wc -l <stdout`" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_last_next.at:44: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log --next=3 | grep '^Revision:'"
echo t_log_last_next.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --next=3 | grep '^Revision:'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --next=3 | grep '^Revision:' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --next=3 | grep '^Revision:' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_last_next.at:45: test 3 -eq \"\`wc -l <stdout\`\""
echo t_log_last_next.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test 3 -eq "`wc -l <stdout`" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test 3 -eq "`wc -l <stdout`" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_last_next.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  165 ) # 165. t_commit_log_3.at:3: commit using _MTN/log and --message
    at_setup_line='t_commit_log_3.at:3'
    at_desc='commit using _MTN/log and --message'
    $at_quiet $ECHO_N "165: commit using _MTN/log and --message          $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "165. t_commit_log_3.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_commit_log_3.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_commit_log_3.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_3.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_log_3.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_commit_log_3.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_3.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_log_3.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_commit_log_3.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_3.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_log_3.at:5: rm test_keys"
echo t_commit_log_3.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_3.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >commit_log.lua <<'_ATEOF'

function edit_comment(summary, user_log_file)
  return user_log_file
end
_ATEOF


cat >_MTN/log <<'_ATEOF'
Log entry
_ATEOF


cat >input.txt <<'_ATEOF'
version 0 of the file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_commit_log_3.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add input.txt"
echo t_commit_log_3.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_3.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_commit_log_3.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=commit_log.lua commit --message=\"Cause me an error\""
echo t_commit_log_3.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=commit_log.lua commit --message=\"Cause me an error\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=commit_log.lua commit --message="Cause me an error" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=commit_log.lua commit --message="Cause me an error" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_commit_log_3.at:21: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  166 ) # 166. t_at_sign.at:1: check that --xargs / -@ behave correctly
    at_setup_line='t_at_sign.at:1'
    at_desc='check that --xargs / -@ behave correctly'
    $at_quiet $ECHO_N "166: check that --xargs / -@ behave correctly     $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "166. t_at_sign.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_at_sign.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_at_sign.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_at_sign.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_at_sign.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_at_sign.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_at_sign.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_at_sign.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_at_sign.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_at_sign.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_at_sign.at:2: rm test_keys"
echo t_at_sign.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_at_sign.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# Generate the general expected output, as we're testing using the
# output of 'list --help'
$at_traceoff
echo "$at_srcdir/t_at_sign.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR list --help"
echo t_at_sign.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR list --help" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR list --help ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR list --help ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_at_sign.at:6: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then
  :

  echo 1 > "$at_status_file"
  exit 1
else
  :
fi

$at_traceon

mv stdout expout

# Check that --xargs works at all
cat >at_test.input <<'_ATEOF'
--help
_ATEOF

$at_traceoff
echo "$at_srcdir/t_at_sign.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR list --xargs=at_test.input"
echo t_at_sign.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR list --xargs=at_test.input" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR list --xargs=at_test.input ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR list --xargs=at_test.input ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_at_sign.at:12: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# The rest of the checks use the short form, -@

# Check that -@ works at all
cat >at_test.input <<'_ATEOF'
--help
_ATEOF

$at_traceoff
echo "$at_srcdir/t_at_sign.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR list -@ at_test.input"
echo t_at_sign.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR list -@ at_test.input" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR list -@ at_test.input ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR list -@ at_test.input ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_at_sign.at:19: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Check that -@ works when injected in the middle of the arguments
# (i.e. that it's prepended correctly)
cat >at_test.input <<'_ATEOF'
list
_ATEOF

$at_traceoff
echo "$at_srcdir/t_at_sign.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR -@ at_test.input --help"
echo t_at_sign.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR -@ at_test.input --help" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR -@ at_test.input --help ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR -@ at_test.input --help ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_at_sign.at:25: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Check that -@ works when used more than once
cat >at_test.input1 <<'_ATEOF'
list
_ATEOF

cat >at_test.input2 <<'_ATEOF'
--help
_ATEOF

$at_traceoff
echo "$at_srcdir/t_at_sign.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR -@ at_test.input1 -@ at_test.input2"
echo t_at_sign.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR -@ at_test.input1 -@ at_test.input2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR -@ at_test.input1 -@ at_test.input2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR -@ at_test.input1 -@ at_test.input2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_at_sign.at:32: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Check that -@ works with an argument file with no content
$at_traceoff
echo "$at_srcdir/t_at_sign.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR list"
echo t_at_sign.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR list" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR list ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR list ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_at_sign.at:35: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then
  :

  echo 1 > "$at_status_file"
  exit 1
else
  :
fi

$at_traceon

mv stdout expout
cat >at_test.input <<'_ATEOF'
_ATEOF

$at_traceoff
echo "$at_srcdir/t_at_sign.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR list -@ at_test.input"
echo t_at_sign.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR list -@ at_test.input" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR list -@ at_test.input ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR list -@ at_test.input ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_at_sign.at:38: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  167 ) # 167. t_db_execute.at:1: db execute
    at_setup_line='t_db_execute.at:1'
    at_desc='db execute'
    $at_quiet $ECHO_N "167: db execute                                   $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "167. t_db_execute.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_db_execute.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_db_execute.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_execute.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_execute.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_db_execute.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_execute.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_execute.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_db_execute.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_execute.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_execute.at:2: rm test_keys"
echo t_db_execute.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_execute.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



TWO_COL_TABLE=files
COL1=id

$at_traceoff
echo "$at_srcdir/t_db_execute.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db execute \"INSERT INTO \$TWO_COL_TABLE VALUES ('key1', 'value1')\""
echo t_db_execute.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute \"INSERT INTO $TWO_COL_TABLE VALUES ('key1', 'value1')\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "INSERT INTO $TWO_COL_TABLE VALUES ('key1', 'value1')" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "INSERT INTO $TWO_COL_TABLE VALUES ('key1', 'value1')" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_execute.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_db_execute.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db execute \"SELECT * FROM \$TWO_COL_TABLE\""
echo t_db_execute.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute \"SELECT * FROM $TWO_COL_TABLE\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "SELECT * FROM $TWO_COL_TABLE" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "SELECT * FROM $TWO_COL_TABLE" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_execute.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_execute.at:10: grep key1 stdout >/dev/null"
echo t_db_execute.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep key1 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep key1 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_execute.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_execute.at:11: grep value1 stdout >/dev/null"
echo t_db_execute.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep value1 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep value1 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_execute.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_db_execute.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db execute \"SELECT * FROM \$TWO_COL_TABLE WHERE \$COL1 = 'nonsense'\""
echo t_db_execute.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute \"SELECT * FROM $TWO_COL_TABLE WHERE $COL1 = 'nonsense'\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "SELECT * FROM $TWO_COL_TABLE WHERE $COL1 = 'nonsense'" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "SELECT * FROM $TWO_COL_TABLE WHERE $COL1 = 'nonsense'" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_execute.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_execute.at:14: grep key1 stdout >/dev/null"
echo t_db_execute.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep key1 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep key1 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_db_execute.at:14: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_db_execute.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db execute \"SELECT * FROM \$TWO_COL_TABLE WHERE \$COL1 LIKE 'k%'\""
echo t_db_execute.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute \"SELECT * FROM $TWO_COL_TABLE WHERE $COL1 LIKE 'k%'\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "SELECT * FROM $TWO_COL_TABLE WHERE $COL1 LIKE 'k%'" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "SELECT * FROM $TWO_COL_TABLE WHERE $COL1 LIKE 'k%'" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_execute.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_execute.at:17: grep key1 stdout >/dev/null"
echo t_db_execute.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep key1 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep key1 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_execute.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_db_execute.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db execute \"DELETE FROM \$TWO_COL_TABLE\""
echo t_db_execute.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute \"DELETE FROM $TWO_COL_TABLE\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "DELETE FROM $TWO_COL_TABLE" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "DELETE FROM $TWO_COL_TABLE" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_execute.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_db_execute.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db execute \"SELECT * FROM \$TWO_COL_TABLE\""
echo t_db_execute.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute \"SELECT * FROM $TWO_COL_TABLE\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "SELECT * FROM $TWO_COL_TABLE" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "SELECT * FROM $TWO_COL_TABLE" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_execute.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_execute.at:22: grep key1 stdout >/dev/null"
echo t_db_execute.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep key1 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep key1 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_db_execute.at:22: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# We used to have weird quoting bugs around "%"
# string is split into two so the grep doesn't trigger on monotone's
# chatter about what command it's going to execute...
$at_traceoff
echo "$at_srcdir/t_db_execute.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db execute \"SELECT '%s' || 'tuff'\""
echo t_db_execute.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute \"SELECT '%s' || 'tuff'\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "SELECT '%s' || 'tuff'" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "SELECT '%s' || 'tuff'" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_execute.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_execute.at:28: grep '%stuff' stdout >/dev/null"
echo t_db_execute.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '%stuff' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '%stuff' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_execute.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  168 ) # 168. t_sql_gunzip.at:1: sql function gunzip (which replaced unpack)
    at_setup_line='t_sql_gunzip.at:1'
    at_desc='sql function gunzip (which replaced unpack)'
    $at_quiet $ECHO_N "168: sql function gunzip (which replaced unpack)  $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "168. t_sql_gunzip.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_sql_gunzip.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_sql_gunzip.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sql_gunzip.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sql_gunzip.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_sql_gunzip.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sql_gunzip.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sql_gunzip.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_sql_gunzip.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sql_gunzip.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sql_gunzip.at:2: rm test_keys"
echo t_sql_gunzip.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sql_gunzip.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_sql_gunzip.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db execute \"select gunzip(X'1f8b08000000000000004d91416e1b310c00effb8a45ee49244a14c973aefd8161189444260bc4abc05eb4e8efabf6e0f44c903318eef6eb72d57d73bb1feb89049b33696c899c52cc8eaa85255aca1d0a292179d5725e96f1d92f37fbb9ddb7b1af27eb92ad2527ce9144dc4324552cc15120f7e04ade02f6f3bfbd6f2018954c8e217108812a774ae06e8c2167a00ea100149509fcd2a37dac4f2fd7e3598fe3767f5a56bf8deb94ae85d0c43a8a59eb52758a6473068e52da3c211d55d27959d7f518ebc9a516ece211a95a254950215856469b83cc2459b4db7fd0b70fdddfedc7787f40a1ea4c920a74e292d45082000b0925c296bd936189c00f68200c85c3d48ca152622cde3ab2c5bf5d1c6dc6ea35c7fc0d6d633f6e5b7d6d9bd6715cae631fc7d8ede5ebf7c3622e73634f5571860476950a314b0d39a2468ac90b49c48705276d1c7ab6d2c92303ceaf8265b2a84952ad983aa056382f7f003a0168da19020000')\""
echo t_sql_gunzip.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute \"select gunzip(X'1f8b08000000000000004d91416e1b310c00effb8a45ee49244a14c973aefd8161189444260bc4abc05eb4e8efabf6e0f44c903318eef6eb72d57d73bb1feb89049b33696c899c52cc8eaa85255aca1d0a292179d5725e96f1d92f37fbb9ddb7b1af27eb92ad2527ce9144dc4324552cc15120f7e04ade02f6f3bfbd6f2018954c8e217108812a774ae06e8c2167a00ea100149509fcd2a37dac4f2fd7e3598fe3767f5a56bf8deb94ae85d0c43a8a59eb52758a6473068e52da3c211d55d27959d7f518ebc9a516ece211a95a254950215856469b83cc2459b4db7fd0b70fdddfedc7787f40a1ea4c920a74e292d45082000b0925c296bd936189c00f68200c85c3d48ca152622cde3ab2c5bf5d1c6dc6ea35c7fc0d6d633f6e5b7d6d9bd6715cae631fc7d8ede5ebf7c3622e73634f5571860476950a314b0d39a2468ac90b49c48705276d1c7ab6d2c92303ceaf8265b2a84952ad983aa056382f7f003a0168da19020000')\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "select gunzip(X'1f8b08000000000000004d91416e1b310c00effb8a45ee49244a14c973aefd8161189444260bc4abc05eb4e8efabf6e0f44c903318eef6eb72d57d73bb1feb89049b33696c899c52cc8eaa85255aca1d0a292179d5725e96f1d92f37fbb9ddb7b1af27eb92ad2527ce9144dc4324552cc15120f7e04ade02f6f3bfbd6f2018954c8e217108812a774ae06e8c2167a00ea100149509fcd2a37dac4f2fd7e3598fe3767f5a56bf8deb94ae85d0c43a8a59eb52758a6473068e52da3c211d55d27959d7f518ebc9a516ece211a95a254950215856469b83cc2459b4db7fd0b70fdddfedc7787f40a1ea4c920a74e292d45082000b0925c296bd936189c00f68200c85c3d48ca152622cde3ab2c5bf5d1c6dc6ea35c7fc0d6d633f6e5b7d6d9bd6715cae631fc7d8ede5ebf7c3622e73634f5571860476950a314b0d39a2468ac90b49c48705276d1c7ab6d2c92303ceaf8265b2a84952ad983aa056382f7f003a0168da19020000')" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "select gunzip(X'1f8b08000000000000004d91416e1b310c00effb8a45ee49244a14c973aefd8161189444260bc4abc05eb4e8efabf6e0f44c903318eef6eb72d57d73bb1feb89049b33696c899c52cc8eaa85255aca1d0a292179d5725e96f1d92f37fbb9ddb7b1af27eb92ad2527ce9144dc4324552cc15120f7e04ade02f6f3bfbd6f2018954c8e217108812a774ae06e8c2167a00ea100149509fcd2a37dac4f2fd7e3598fe3767f5a56bf8deb94ae85d0c43a8a59eb52758a6473068e52da3c211d55d27959d7f518ebc9a516ece211a95a254950215856469b83cc2459b4db7fd0b70fdddfedc7787f40a1ea4c920a74e292d45082000b0925c296bd936189c00f68200c85c3d48ca152622cde3ab2c5bf5d1c6dc6ea35c7fc0d6d633f6e5b7d6d9bd6715cae631fc7d8ede5ebf7c3622e73634f5571860476950a314b0d39a2468ac90b49c48705276d1c7ab6d2c92303ceaf8265b2a84952ad983aa056382f7f003a0168da19020000')" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sql_gunzip.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_sql_gunzip.at:6: grep 'new_manifest \\[795cf87a1c37f7314f5aa6891e34d267a757fba6\\]' stdout >/dev/null"
echo t_sql_gunzip.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'new_manifest \[795cf87a1c37f7314f5aa6891e34d267a757fba6\]' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'new_manifest \[795cf87a1c37f7314f5aa6891e34d267a757fba6\]' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sql_gunzip.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sql_gunzip.at:7: grep 'from \\[7b675e9ed59eecd9bac3f4ef828196c2069d5a93\\]' stdout >/dev/null"
echo t_sql_gunzip.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'from \[7b675e9ed59eecd9bac3f4ef828196c2069d5a93\]' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'from \[7b675e9ed59eecd9bac3f4ef828196c2069d5a93\]' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sql_gunzip.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  169 ) # 169. t_final_space.at:1: files with spaces at the end
    at_setup_line='t_final_space.at:1'
    at_desc='files with spaces at the end'
    $at_quiet $ECHO_N "169: files with spaces at the end                 $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "169. t_final_space.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_final_space.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_final_space.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_final_space.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_final_space.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_final_space.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_final_space.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_final_space.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_final_space.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_final_space.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_final_space.at:2: rm test_keys"
echo t_final_space.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_final_space.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test "$OSTYPE" = "msys"; then
  echo 77 > $at_status_file
  exit 77
fi

# On Win32, the files "foo bar" and "foo bar " are the same, obviating this test

$at_traceoff
echo "$at_srcdir/t_final_space.at:6: touch \"foo bar \""
echo t_final_space.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; touch "foo bar " ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; touch "foo bar " ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_final_space.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_final_space.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add \"foo bar \""
echo t_final_space.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add \"foo bar \"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add "foo bar " ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add "foo bar " ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_final_space.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_final_space.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_final_space.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_final_space.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  170 ) # 170. t_inodeprints.at:1: inodeprints
    at_setup_line='t_inodeprints.at:1'
    at_desc='inodeprints'
    $at_quiet $ECHO_N "170: inodeprints                                  $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "170. t_inodeprints.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_inodeprints.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_inodeprints.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_inodeprints.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_inodeprints.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints.at:2: rm test_keys"
echo t_inodeprints.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# Turn them on
$at_traceoff
echo "$at_srcdir/t_inodeprints.at:5: touch _MTN/inodeprints"
echo t_inodeprints.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; touch _MTN/inodeprints ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; touch _MTN/inodeprints ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_inodeprints.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff"
echo t_inodeprints.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints.at:8: grep \"no changes\" stdout >/dev/null"
echo t_inodeprints.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "no changes" stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "no changes" stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_inodeprints.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_inodeprints.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_inodeprints.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff"
echo t_inodeprints.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints.at:14: grep \"blah blah\" stdout >/dev/null"
echo t_inodeprints.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "blah blah" stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "blah blah" stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_inodeprints.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_inodeprints.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# Something should have been written to it
$at_traceoff
echo "$at_srcdir/t_inodeprints.at:19: test -s _MTN/inodeprints"
echo t_inodeprints.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -s _MTN/inodeprints ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -s _MTN/inodeprints ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints.at:20: cp _MTN/inodeprints ip1"
echo t_inodeprints.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp _MTN/inodeprints ip1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp _MTN/inodeprints ip1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# And stuff should still work
$at_traceoff
echo "$at_srcdir/t_inodeprints.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff"
echo t_inodeprints.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints.at:24: grep \"no changes\" stdout >/dev/null"
echo t_inodeprints.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "no changes" stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "no changes" stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
stuff stuff
_ATEOF



$at_traceoff
echo "$at_srcdir/t_inodeprints.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff"
echo t_inodeprints.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints.at:30: grep \"stuff stuff\" stdout >/dev/null"
echo t_inodeprints.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "stuff stuff" stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "stuff stuff" stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Make sure partial commit doesn't screw things up

cat >otherfile <<'_ATEOF'
other stuff
_ATEOF

$at_traceoff
echo "$at_srcdir/t_inodeprints.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add otherfile"
echo t_inodeprints.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_inodeprints.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit otherfile --message=foo"
echo t_inodeprints.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit otherfile --message=foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit otherfile --message=foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit otherfile --message=foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Should have changed the inodeprints file
$at_traceoff
echo "$at_srcdir/t_inodeprints.at:38: cmp _MTN/inodeprints ip1"
echo t_inodeprints.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp _MTN/inodeprints ip1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp _MTN/inodeprints ip1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_inodeprints.at:38: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Still should think testfile is modified
$at_traceoff
echo "$at_srcdir/t_inodeprints.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff"
echo t_inodeprints.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints.at:42: grep \"stuff stuff\" stdout >/dev/null"
echo t_inodeprints.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "stuff stuff" stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "stuff stuff" stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  171 ) # 171. t_inodeprints_update.at:1: update updates inodeprints
    at_setup_line='t_inodeprints_update.at:1'
    at_desc='update updates inodeprints'
    $at_quiet $ECHO_N "171: update updates inodeprints                   $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "171. t_inodeprints_update.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_inodeprints_update.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_inodeprints_update.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_update.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints_update.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_inodeprints_update.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_update.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints_update.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_inodeprints_update.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_update.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints_update.at:2: rm test_keys"
echo t_inodeprints_update.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_update.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_inodeprints_update.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_inodeprints_update.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_update.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_inodeprints_update.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_inodeprints_update.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_update.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


R0=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
stuff stuff
_ATEOF



$at_traceoff
echo "$at_srcdir/t_inodeprints_update.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_inodeprints_update.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_update.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


R1=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_inodeprints_update.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch --revision=\$R0 td"
echo t_inodeprints_update.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch --revision=$R0 td" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch --revision=$R0 td ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch --revision=$R0 td ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_update.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints_update.at:15: touch td/_MTN/inodeprints"
echo t_inodeprints_update.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; touch td/_MTN/inodeprints ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; touch td/_MTN/inodeprints ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_update.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints_update.at:16: cd td && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_inodeprints_update.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd td && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd td && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd td && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_update.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints_update.at:17: test -s td/_MTN/inodeprints"
echo t_inodeprints_update.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -s td/_MTN/inodeprints ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -s td/_MTN/inodeprints ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_update.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  172 ) # 172. t_ls_known.at:3: listing workspace manifests
    at_setup_line='t_ls_known.at:3'
    at_desc='listing workspace manifests'
    $at_quiet $ECHO_N "172: listing workspace manifests                  $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "172. t_ls_known.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_ls_known.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_ls_known.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_known.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_ls_known.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_known.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_ls_known.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_known.at:5: rm test_keys"
echo t_ls_known.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_ls_known.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls missing"
echo t_ls_known.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_known.at:8: cmp /dev/null stdout"
echo t_ls_known.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp /dev/null stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp /dev/null stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >foo <<'_ATEOF'
the foo file
_ATEOF

cat >bar <<'_ATEOF'
the bar file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_ls_known.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo bar"
echo t_ls_known.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_known.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls known | sort"
echo t_ls_known.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known | sort" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known | sort ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known | sort ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_known.at:17:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_ls_known.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >ls_foobar <<'_ATEOF'
bar
foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_ls_known.at:21: cmp stdout ls_foobar"
echo t_ls_known.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout ls_foobar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout ls_foobar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_known.at:23: mkdir dir"
echo t_ls_known.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >dir/foo <<'_ATEOF'
the foo file
_ATEOF

cat >dir/bar <<'_ATEOF'
the bar file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_ls_known.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add dir/foo dir/bar"
echo t_ls_known.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir/foo dir/bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir/foo dir/bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir/foo dir/bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_known.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls known | sort"
echo t_ls_known.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known | sort" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known | sort ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known | sort ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_known.at:31:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_ls_known.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >ls_foobar_dir <<'_ATEOF'
bar
dir
dir/bar
dir/foo
foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_ls_known.at:38: cmp stdout ls_foobar_dir"
echo t_ls_known.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout ls_foobar_dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout ls_foobar_dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_known.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='committed'"
echo t_ls_known.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='committed'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='committed' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='committed' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_known.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls known | sort"
echo t_ls_known.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known | sort" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known | sort ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known | sort ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_known.at:43:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_ls_known.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_known.at:44: cmp stdout ls_foobar_dir"
echo t_ls_known.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout ls_foobar_dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout ls_foobar_dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_known.at:46: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop foo"
echo t_ls_known.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_known.at:47: mv dir dir2"
echo t_ls_known.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv dir dir2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv dir dir2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_known.at:48: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename dir dir2"
echo t_ls_known.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename dir dir2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename dir dir2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename dir dir2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_known.at:49: mv bar baz"
echo t_ls_known.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv bar baz ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv bar baz ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_known.at:50: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename bar baz"
echo t_ls_known.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename bar baz" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename bar baz ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename bar baz ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_known.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls known | sort"
echo t_ls_known.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known | sort" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known | sort ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known | sort ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_known.at:53:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_ls_known.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >ls_baz_dir <<'_ATEOF'
baz
dir2
dir2/bar
dir2/foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_ls_known.at:59: cmp stdout ls_baz_dir"
echo t_ls_known.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout ls_baz_dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout ls_baz_dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_known.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  173 ) # 173. t_cvsimport_samelog.at:3: importing CVS files with identical logs
    at_setup_line='t_cvsimport_samelog.at:3'
    at_desc='importing CVS files with identical logs'
    $at_quiet $ECHO_N "173: importing CVS files with identical logs      $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "173. t_cvsimport_samelog.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_cvsimport_samelog.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_cvsimport_samelog.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_cvsimport_samelog.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:5: rm test_keys"
echo t_cvsimport_samelog.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >importme.0 <<'_ATEOF'
version 0 of test file
_ATEOF


cat >importme.1 <<'_ATEOF'
version 1 of test file
_ATEOF


cat >importme.2 <<'_ATEOF'
version 2 of test file
_ATEOF


cat >importme.3 <<'_ATEOF'
version 3 of test file
_ATEOF


TSHA0=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify importme.0`
TSHA1=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify importme.1`
TSHA2=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify importme.2`
TSHA3=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify importme.3`

# build the cvs repository

CVSROOT=`pwd`/cvs-repository
$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:27: cvs -q -d \$CVSROOT init"
echo t_cvsimport_samelog.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -q -d $CVSROOT init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -q -d $CVSROOT init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -q -d $CVSROOT init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:28: test -e \$CVSROOT"
echo t_cvsimport_samelog.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test -e $CVSROOT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e $CVSROOT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e $CVSROOT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:29: test -e \$CVSROOT/CVSROOT"
echo t_cvsimport_samelog.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test -e $CVSROOT/CVSROOT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e $CVSROOT/CVSROOT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e $CVSROOT/CVSROOT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:30: test -e \$CVSROOT/CVSROOT/modules"
echo t_cvsimport_samelog.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test -e $CVSROOT/CVSROOT/modules" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e $CVSROOT/CVSROOT/modules ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e $CVSROOT/CVSROOT/modules ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check out the workspace and make some commits

$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:34: cvs -d \$CVSROOT co ."
echo t_cvsimport_samelog.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT co ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT co . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT co . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:35: mkdir testdir"
echo t_cvsimport_samelog.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir testdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir testdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:36: cp importme.0 testdir/importme"
echo t_cvsimport_samelog.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp importme.0 testdir/importme ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp importme.0 testdir/importme ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:37: cvs -d \$CVSROOT add testdir"
echo t_cvsimport_samelog.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT add testdir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT add testdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT add testdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:38: cvs -d \$CVSROOT add testdir/importme"
echo t_cvsimport_samelog.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT add testdir/importme" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT add testdir/importme ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT add testdir/importme ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:39: cvs -d \$CVSROOT commit -m 'commit 0' testdir/importme"
echo t_cvsimport_samelog.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT commit -m 'commit 0' testdir/importme" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT commit -m 'commit 0' testdir/importme ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT commit -m 'commit 0' testdir/importme ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:40: cp importme.1 testdir/importme"
echo t_cvsimport_samelog.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp importme.1 testdir/importme ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp importme.1 testdir/importme ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:41: cvs -d \$CVSROOT commit -m 'commit same message' testdir/importme"
echo t_cvsimport_samelog.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT commit -m 'commit same message' testdir/importme" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT commit -m 'commit same message' testdir/importme ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT commit -m 'commit same message' testdir/importme ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:42: cp importme.2 testdir/importme"
echo t_cvsimport_samelog.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp importme.2 testdir/importme ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp importme.2 testdir/importme ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:43: cvs -d \$CVSROOT commit -m 'commit same message' testdir/importme"
echo t_cvsimport_samelog.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT commit -m 'commit same message' testdir/importme" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT commit -m 'commit same message' testdir/importme ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT commit -m 'commit same message' testdir/importme ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:44: cp importme.3 testdir/importme"
echo t_cvsimport_samelog.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp importme.3 testdir/importme ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp importme.3 testdir/importme ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:45: cvs -d \$CVSROOT commit -m 'commit 3' testdir/importme"
echo t_cvsimport_samelog.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT commit -m 'commit 3' testdir/importme" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT commit -m 'commit 3' testdir/importme ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT commit -m 'commit 3' testdir/importme ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# import into monotone and check presence of files

$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:49: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch cvs_import \$CVSROOT/testdir"
echo t_cvsimport_samelog.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch cvs_import $CVSROOT/testdir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch cvs_import $CVSROOT/testdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch cvs_import $CVSROOT/testdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:50: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_file \$TSHA0"
echo t_cvsimport_samelog.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:51: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_file \$TSHA1"
echo t_cvsimport_samelog.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_file \$TSHA2"
echo t_cvsimport_samelog.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:53: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_file \$TSHA3"
echo t_cvsimport_samelog.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# also check that history is okay -- has a unique head, and it's the
# right one.

$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:58: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch mtcodir"
echo t_cvsimport_samelog.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch mtcodir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch mtcodir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch mtcodir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_samelog.at:59: cmp importme.3 mtcodir/importme"
echo t_cvsimport_samelog.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp importme.3 mtcodir/importme ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp importme.3 mtcodir/importme ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_samelog.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  174 ) # 174. t_sticky_branch.at:1: sticky branches
    at_setup_line='t_sticky_branch.at:1'
    at_desc='sticky branches'
    $at_quiet $ECHO_N "174: sticky branches                              $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "174. t_sticky_branch.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_sticky_branch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_sticky_branch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_sticky_branch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:2: rm test_keys"
echo t_sticky_branch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# setup saves given branch
$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup setupdir --branch=testbranch"
echo t_sticky_branch.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup setupdir --branch=testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup setupdir --branch=testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup setupdir --branch=testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >setupdir/foo <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:8: cd setupdir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_sticky_branch.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd setupdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd setupdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd setupdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:9: cd setupdir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=foo"
echo t_sticky_branch.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd setupdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd setupdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd setupdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# checkout saves given branch
$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch codir"
echo t_sticky_branch.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch codir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch codir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch codir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:13: cmp setupdir/foo codir/foo"
echo t_sticky_branch.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp setupdir/foo codir/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp setupdir/foo codir/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >codir/foo <<'_ATEOF'
other other
_ATEOF

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:16: cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=foo"
echo t_sticky_branch.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# log doesn't affect given branch
$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:19: cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log"
echo t_sticky_branch.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >codir/foo <<'_ATEOF'
more more
_ATEOF

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:22: cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=foo"
echo t_sticky_branch.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >expbranches <<'_ATEOF'
testbranch
_ATEOF

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls branches"
echo t_sticky_branch.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:26:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_sticky_branch.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:27: cmp expbranches stdout"
echo t_sticky_branch.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp expbranches stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp expbranches stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# commit saves given branch
cat >codir/foo <<'_ATEOF'
newbranch newbranch
_ATEOF

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:32: cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --branch=otherbranch --message=foo"
echo t_sticky_branch.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --branch=otherbranch --message=foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --branch=otherbranch --message=foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --branch=otherbranch --message=foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >codir/foo <<'_ATEOF'
newbranch 2 newbranch 2
_ATEOF

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:35: cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=foo"
echo t_sticky_branch.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --branch=otherbranch otherdir"
echo t_sticky_branch.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=otherbranch otherdir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=otherbranch otherdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=otherbranch otherdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:37: cmp codir/foo otherdir/foo"
echo t_sticky_branch.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp codir/foo otherdir/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp codir/foo otherdir/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# update saves the given branch
$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch updir"
echo t_sticky_branch.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch updir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch updir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch updir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:41: cd updir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update --branch=otherbranch"
echo t_sticky_branch.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd updir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --branch=otherbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd updir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --branch=otherbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd updir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --branch=otherbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:42: cmp otherdir/foo updir/foo"
echo t_sticky_branch.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp otherdir/foo updir/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp otherdir/foo updir/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >otherdir/foo <<'_ATEOF'
yet another chunk of entropy
_ATEOF

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:45: cd otherdir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=foo"
echo t_sticky_branch.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd otherdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd otherdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd otherdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:46: cd updir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_sticky_branch.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd updir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd updir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd updir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:47: cmp otherdir/foo updir/foo"
echo t_sticky_branch.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp otherdir/foo updir/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp otherdir/foo updir/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# merge doesn't affect given branch
$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:50: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net co --branch=testbranch third1"
echo t_sticky_branch.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co --branch=testbranch third1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co --branch=testbranch third1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co --branch=testbranch third1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >third1/a <<'_ATEOF'
1a
_ATEOF

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:53: cd third1 && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add a"
echo t_sticky_branch.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd third1 && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add a" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd third1 && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add a ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd third1 && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add a ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:54: cd third1 && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --branch=third --message=foo"
echo t_sticky_branch.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd third1 && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --branch=third --message=foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd third1 && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --branch=third --message=foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd third1 && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --branch=third --message=foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:55: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net co --branch=testbranch third2"
echo t_sticky_branch.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co --branch=testbranch third2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co --branch=testbranch third2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co --branch=testbranch third2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >third2/b <<'_ATEOF'
2b
_ATEOF

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:58: cd third2 && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add b"
echo t_sticky_branch.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd third2 && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add b" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd third2 && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add b ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd third2 && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add b ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:59: cd third2 && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --branch=third --message=foo"
echo t_sticky_branch.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd third2 && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --branch=third --message=foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd third2 && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --branch=third --message=foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd third2 && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --branch=third --message=foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:60: cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge --branch=third"
echo t_sticky_branch.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge --branch=third" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge --branch=third ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge --branch=third ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:61: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate heads third"
echo t_sticky_branch.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate heads third" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate heads third ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate heads third ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:62: mv stdout old-third-heads"
echo t_sticky_branch.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout old-third-heads ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout old-third-heads ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >codir/foo <<'_ATEOF'
more more
_ATEOF

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:65: cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=foo"
echo t_sticky_branch.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# we check that this didn't create a new head of branch third
$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:67: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate heads third"
echo t_sticky_branch.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate heads third" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate heads third ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate heads third ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:67: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sticky_branch.at:68: cmp stdout old-third-heads"
echo t_sticky_branch.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout old-third-heads ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout old-third-heads ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sticky_branch.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  175 ) # 175. t_checkout_id_sets_branch.at:1: checkout without --branch sets branch
    at_setup_line='t_checkout_id_sets_branch.at:1'
    at_desc='checkout without --branch sets branch'
    $at_quiet $ECHO_N "175: checkout without --branch sets branch        $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "175. t_checkout_id_sets_branch.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_checkout_id_sets_branch.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_checkout_id_sets_branch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_id_sets_branch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_id_sets_branch.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_checkout_id_sets_branch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_id_sets_branch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_id_sets_branch.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_checkout_id_sets_branch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_id_sets_branch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_id_sets_branch.at:2: rm test_keys"
echo t_checkout_id_sets_branch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_id_sets_branch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >foo <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_checkout_id_sets_branch.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_checkout_id_sets_branch.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_id_sets_branch.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_checkout_id_sets_branch.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_checkout_id_sets_branch.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_id_sets_branch.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_checkout_id_sets_branch.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV codir1"
echo t_checkout_id_sets_branch.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV codir1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV codir1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV codir1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_id_sets_branch.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_id_sets_branch.at:10: cmp foo codir1/foo"
echo t_checkout_id_sets_branch.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp foo codir1/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp foo codir1/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_id_sets_branch.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >codir1/foo <<'_ATEOF'
hi maude
_ATEOF

# verify that no branch is needed for commit
$at_traceoff
echo "$at_srcdir/t_checkout_id_sets_branch.at:14: cd codir1 && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=foo"
echo t_checkout_id_sets_branch.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd codir1 && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd codir1 && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd codir1 && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_id_sets_branch.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_checkout_id_sets_branch.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net cert \$REV branch otherbranch"
echo t_checkout_id_sets_branch.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $REV branch otherbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $REV branch otherbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $REV branch otherbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_id_sets_branch.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# but, now we can't checkout without a --branch...
# need to make sure don't pick up branch from our local _MTN dir...
$at_traceoff
echo "$at_srcdir/t_checkout_id_sets_branch.at:20: rm -rf _MTN"
echo t_checkout_id_sets_branch.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_id_sets_branch.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_id_sets_branch.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV codir2"
echo t_checkout_id_sets_branch.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV codir2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV codir2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV codir2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_checkout_id_sets_branch.at:21: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_id_sets_branch.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV --branch=testbranch codir3"
echo t_checkout_id_sets_branch.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV --branch=testbranch codir3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV --branch=testbranch codir3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV --branch=testbranch codir3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_id_sets_branch.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_id_sets_branch.at:23: cmp foo codir3/foo"
echo t_checkout_id_sets_branch.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp foo codir3/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp foo codir3/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_id_sets_branch.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_id_sets_branch.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV --branch=otherbranch codir4"
echo t_checkout_id_sets_branch.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV --branch=otherbranch codir4" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV --branch=otherbranch codir4 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV --branch=otherbranch codir4 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_id_sets_branch.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_id_sets_branch.at:25: cmp foo codir4/foo"
echo t_checkout_id_sets_branch.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp foo codir4/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp foo codir4/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_id_sets_branch.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  176 ) # 176. t_netsync_largish_file.at:1: netsync largish file
    at_setup_line='t_netsync_largish_file.at:1'
    at_desc='netsync largish file'
    $at_quiet $ECHO_N "176: netsync largish file                         $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "176. t_netsync_largish_file.at:1: testing ..."
      $at_traceon



# Check that we can netsync a 32MB file.



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_netsync_largish_file.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_netsync_largish_file.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_largish_file.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_largish_file.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_netsync_largish_file.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_largish_file.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_largish_file.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_netsync_largish_file.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_largish_file.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_largish_file.at:6: rm test_keys"
echo t_netsync_largish_file.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_largish_file.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_netsync_largish_file.at:7: cp test.db test2.db"
echo t_netsync_largish_file.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_largish_file.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_largish_file.at:7: cp -r keys/ keys2"
echo t_netsync_largish_file.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_largish_file.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_largish_file.at:7: cp test.db test3.db"
echo t_netsync_largish_file.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_largish_file.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_largish_file.at:7: cp -r keys/ keys3"
echo t_netsync_largish_file.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_largish_file.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT




awk -- 'BEGIN{srand(4691);for(a=0;a<1024*1024;a+=20)printf("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256,rand()*256);}' > largish.tmp
i=32
while test $i -gt 0; do
	cat largish.tmp >> largish
	i=$((i - 1))
done
rm -f largish.tmp


$at_traceoff
echo "$at_srcdir/t_netsync_largish_file.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add largish"
echo t_netsync_largish_file.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add largish" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add largish ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add largish ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_largish_file.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync_largish_file.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_netsync_largish_file.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_largish_file.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


F_VER0=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify largish`



# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4




$at_traceoff
echo "$at_srcdir/t_netsync_largish_file.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_netsync_largish_file.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_largish_file.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon






# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



$at_traceoff
echo "$at_srcdir/t_netsync_largish_file.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --branch=testbranch checkout other"
echo t_netsync_largish_file.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --branch=testbranch checkout other" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --branch=testbranch checkout other ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --branch=testbranch checkout other ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_largish_file.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

CHK=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify other/largish`
$at_traceoff
echo "$at_srcdir/t_netsync_largish_file.at:23: test \$CHK = \$F_VER0"
echo t_netsync_largish_file.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $CHK = $F_VER0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $CHK = $F_VER0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $CHK = $F_VER0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_largish_file.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  177 ) # 177. t_update_off_branch.at:1: update to off-branch rev
    at_setup_line='t_update_off_branch.at:1'
    at_desc='update to off-branch rev'
    $at_quiet $ECHO_N "177: update to off-branch rev                     $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "177. t_update_off_branch.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_update_off_branch.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_update_off_branch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_off_branch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_off_branch.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_update_off_branch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_off_branch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_off_branch.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_update_off_branch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_off_branch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_off_branch.at:2: rm test_keys"
echo t_update_off_branch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_off_branch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_update_off_branch.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_update_off_branch.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_off_branch.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_update_off_branch.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_update_off_branch.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_off_branch.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


TR=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
other other
_ATEOF



$at_traceoff
echo "$at_srcdir/t_update_off_branch.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah"
echo t_update_off_branch.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_off_branch.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


OR=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
third third
_ATEOF



$at_traceoff
echo "$at_srcdir/t_update_off_branch.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=somebranch commit --message blah-blah"
echo t_update_off_branch.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=somebranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=somebranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=somebranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_off_branch.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


SR=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_update_off_branch.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net cert \$SR branch otherbranch"
echo t_update_off_branch.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $SR branch otherbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $SR branch otherbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $SR branch otherbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_off_branch.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
double double
_ATEOF



$at_traceoff
echo "$at_srcdir/t_update_off_branch.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=nobranch commit --message blah-blah"
echo t_update_off_branch.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=nobranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=nobranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=nobranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_off_branch.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


NR=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_update_off_branch.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db kill_branch_certs_locally nobranch"
echo t_update_off_branch.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db kill_branch_certs_locally nobranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db kill_branch_certs_locally nobranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db kill_branch_certs_locally nobranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_off_branch.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_update_off_branch.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch --revision=\$TR codir"
echo t_update_off_branch.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch --revision=$TR codir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch --revision=$TR codir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch --revision=$TR codir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_off_branch.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_off_branch.at:27: grep '^ *branch \"testbranch\"' codir/_MTN/options"
echo t_update_off_branch.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^ *branch "testbranch"' codir/_MTN/options ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^ *branch "testbranch"' codir/_MTN/options ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_off_branch.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# make sure that updating to a rev in one other branch puts us in that branch
$at_traceoff
echo "$at_srcdir/t_update_off_branch.at:29: cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update --revision=\$OR"
echo t_update_off_branch.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --revision=$OR" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --revision=$OR ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --revision=$OR ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_off_branch.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_off_branch.at:30: grep '^ *branch \"otherbranch\"' codir/_MTN/options"
echo t_update_off_branch.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^ *branch "otherbranch"' codir/_MTN/options ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^ *branch "otherbranch"' codir/_MTN/options ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_off_branch.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# updating to a rev in multiple branches, including current branch, leaves branch alone
$at_traceoff
echo "$at_srcdir/t_update_off_branch.at:33: cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update -r \$SR"
echo t_update_off_branch.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -r $SR" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -r $SR ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -r $SR ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_off_branch.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_off_branch.at:34: grep '^ *branch \"otherbranch\"' codir/_MTN/options"
echo t_update_off_branch.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^ *branch "otherbranch"' codir/_MTN/options ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^ *branch "otherbranch"' codir/_MTN/options ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_off_branch.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# but updating to a rev in multiple branches that _don't_ include the current one, fails
# first go back out to TR
$at_traceoff
echo "$at_srcdir/t_update_off_branch.at:38: cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update -r \$TR"
echo t_update_off_branch.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -r $TR" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -r $TR ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -r $TR ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_off_branch.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_off_branch.at:39: grep '^ *branch \"testbranch\"' codir/_MTN/options"
echo t_update_off_branch.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^ *branch "testbranch"' codir/_MTN/options ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^ *branch "testbranch"' codir/_MTN/options ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_off_branch.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# and now jumping to SR directly should fail
$at_traceoff
echo "$at_srcdir/t_update_off_branch.at:41: cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update -r \$SR"
echo t_update_off_branch.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -r $SR" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -r $SR ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -r $SR ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_update_off_branch.at:41: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_off_branch.at:42: grep '^ *branch \"testbranch\"' codir/_MTN/options"
echo t_update_off_branch.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^ *branch "testbranch"' codir/_MTN/options ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^ *branch "testbranch"' codir/_MTN/options ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_off_branch.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# updating to a rev in no branches at all succeeds, and leaves current branch alone
$at_traceoff
echo "$at_srcdir/t_update_off_branch.at:45: cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update -r \$NR"
echo t_update_off_branch.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -r $NR" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -r $NR ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -r $NR ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_off_branch.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_off_branch.at:46: grep '^ *branch \"testbranch\"' codir/_MTN/options"
echo t_update_off_branch.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^ *branch "testbranch"' codir/_MTN/options ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^ *branch "testbranch"' codir/_MTN/options ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_off_branch.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  178 ) # 178. t_setup_checkout_modify_new_dir.at:1: setup/checkout touch new _MTN/options only
    at_setup_line='t_setup_checkout_modify_new_dir.at:1'
    at_desc='setup/checkout touch new _MTN/options only'
    $at_quiet $ECHO_N "178: setup/checkout touch new _MTN/options only   $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "178. t_setup_checkout_modify_new_dir.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_setup_checkout_modify_new_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_setup_checkout_modify_new_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_setup_checkout_modify_new_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:2: rm test_keys"
echo t_setup_checkout_modify_new_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >foo <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_setup_checkout_modify_new_dir.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_setup_checkout_modify_new_dir.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# okay, now wd is on testbranch

# setup a dir on otherbranch and make sure we stay on testbranch
$at_traceoff
echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup setupdir --branch=otherbranch"
echo t_setup_checkout_modify_new_dir.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup setupdir --branch=otherbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup setupdir --branch=otherbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup setupdir --branch=otherbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >foo <<'_ATEOF'
stuff stuff
_ATEOF


$at_traceoff
echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=foo"
echo t_setup_checkout_modify_new_dir.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate heads testbranch"
echo t_setup_checkout_modify_new_dir.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate heads testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate heads testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate heads testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:16:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_setup_checkout_modify_new_dir.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:17: mv stdout headsout"
echo t_setup_checkout_modify_new_dir.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout headsout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout headsout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:18: cat _MTN/revision"
echo t_setup_checkout_modify_new_dir.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat _MTN/revision ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat _MTN/revision ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:18: mv stdout expout"
echo t_setup_checkout_modify_new_dir.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:18: cat headsout"
echo t_setup_checkout_modify_new_dir.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat headsout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat headsout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# now create a revision in otherbranch...
cat >setupdir/blah <<'_ATEOF'
yum yum
_ATEOF

$at_traceoff
echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:23: cd setupdir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add blah"
echo t_setup_checkout_modify_new_dir.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd setupdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd setupdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd setupdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:24: cd setupdir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=foo"
echo t_setup_checkout_modify_new_dir.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd setupdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd setupdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd setupdir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# and check it out
$at_traceoff
echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout codir --branch=otherbranch"
echo t_setup_checkout_modify_new_dir.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout codir --branch=otherbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout codir --branch=otherbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout codir --branch=otherbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# and make sure we still stayed on testbranch

cat >foo <<'_ATEOF'
more more
_ATEOF


$at_traceoff
echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=foo"
echo t_setup_checkout_modify_new_dir.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate heads testbranch"
echo t_setup_checkout_modify_new_dir.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate heads testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate heads testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate heads testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:32:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_setup_checkout_modify_new_dir.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:33: mv stdout headsout"
echo t_setup_checkout_modify_new_dir.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout headsout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout headsout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:34: cat _MTN/revision"
echo t_setup_checkout_modify_new_dir.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat _MTN/revision ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat _MTN/revision ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:34: mv stdout expout"
echo t_setup_checkout_modify_new_dir.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:34: cat headsout"
echo t_setup_checkout_modify_new_dir.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat headsout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat headsout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_checkout_modify_new_dir.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  179 ) # 179. t_rename_dir_add_dir_with_old_name.at:3: renaming a directory and then adding a new with the old name
    at_setup_line='t_rename_dir_add_dir_with_old_name.at:3'
    at_desc='renaming a directory and then adding a new with the old name'
    $at_quiet $ECHO_N "179: renaming a directory and then adding a new with the old name$ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "179. t_rename_dir_add_dir_with_old_name.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_rename_dir_add_dir_with_old_name.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_rename_dir_add_dir_with_old_name.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_add_dir_with_old_name.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_add_dir_with_old_name.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_rename_dir_add_dir_with_old_name.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_add_dir_with_old_name.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_add_dir_with_old_name.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_rename_dir_add_dir_with_old_name.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_add_dir_with_old_name.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_add_dir_with_old_name.at:5: rm test_keys"
echo t_rename_dir_add_dir_with_old_name.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_add_dir_with_old_name.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# add 'foo/test' file
$at_traceoff
echo "$at_srcdir/t_rename_dir_add_dir_with_old_name.at:8: mkdir foo"
echo t_rename_dir_add_dir_with_old_name.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_add_dir_with_old_name.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >foo/test <<'_ATEOF'
test file in foo dir
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_dir_add_dir_with_old_name.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_rename_dir_add_dir_with_old_name.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_add_dir_with_old_name.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_dir_add_dir_with_old_name.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_rename_dir_add_dir_with_old_name.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_add_dir_with_old_name.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# rename 'foo' dir to 'bar'
$at_traceoff
echo "$at_srcdir/t_rename_dir_add_dir_with_old_name.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename foo bar"
echo t_rename_dir_add_dir_with_old_name.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_add_dir_with_old_name.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_dir_add_dir_with_old_name.at:16: mv foo bar"
echo t_rename_dir_add_dir_with_old_name.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv foo bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv foo bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_add_dir_with_old_name.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# add new 'foo' dir
$at_traceoff
echo "$at_srcdir/t_rename_dir_add_dir_with_old_name.at:19: mkdir foo"
echo t_rename_dir_add_dir_with_old_name.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_add_dir_with_old_name.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >foo/test <<'_ATEOF'
test file in new foo dir
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_dir_add_dir_with_old_name.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_rename_dir_add_dir_with_old_name.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_add_dir_with_old_name.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_dir_add_dir_with_old_name.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_rename_dir_add_dir_with_old_name.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_dir_add_dir_with_old_name.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  180 ) # 180. t_rcs_import.at:1: test problematic cvs import
    at_setup_line='t_rcs_import.at:1'
    at_desc='test problematic cvs import'
    $at_quiet $ECHO_N "180: test problematic cvs import                  $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "180. t_rcs_import.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_rcs_import.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_rcs_import.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcs_import.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rcs_import.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_rcs_import.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcs_import.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rcs_import.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_rcs_import.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcs_import.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rcs_import.at:2: rm test_keys"
echo t_rcs_import.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcs_import.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_rcs_import.at:3: echo \$UNB64_COMMAND"
echo t_rcs_import.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcs_import.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test -n "`command -v gunzip`" 2>/dev/null; then
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  UNGZ_COMMAND="gunzip -c"
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_rcs_import.at:3: echo \$UNGZ_COMMAND"
echo t_rcs_import.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNGZ_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcs_import.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# This test imports a rcs file which fails according to the mailing list
# reporter: Carl Christian Kanne "Bug? in CVS import monotone 0.18"
# Date: 	Fri, 15 Apr 2005 12:53:13 +0200
# However when I test it, it succeeds---> examine
# This test is a bug report.
#AT_XFAIL_IF(true)

# This rcs file fails to be imported correctly by monotone

cat >rcsfile.gz.b64 <<'_ATEOF'

H4sICKQRYUIAA2hhc2h0YWJsZS5oaCx2AMRce3PbNrb/2/wUqNvptR1b4lMvt13n4W29k8SZxG3v
bKfjoUXIYi2RWpKy4u7kfvY95wAgAYqipCY71ztVbAI8AM7zd86BdsrD6MDpuM65FY7HPM/Prfxp
fpfOcutgFkf5CMc6dse1DpKwiD+eubf2rX22yHgPhpyB8bj+BKf5+NCrPfTkw8eYrz7OZ/l4yuch
POvBSr51MImzvMj4OH3k2RM8DuBxzzq4ufxwc/nqNozC7CHMbl3bdhzb6dme08dJmyb4tmf32iZ4
MKGVggtLDNsmONso2Fv2YA+3TRhsWcLub5sAjLIHbROCbRR8x/GctgkgCX8zBXvg4jG9tgmDig/h
3TJ/uo34I5/dznl2zxdpnBRrY1I/QG3ePr+5+t+/f7h9dfnm+va9Iwfc5qVAorYXbOYHngUmmKeZ
h0kWPqlx3/E8t42AZ/te0ELAs13fbhl3bdcbtIw7MD5sGbfb6YPSuYHbMj6A9zcrJWpL+wFhvL6B
GoEeEPBbCPS2EQiAgNdCIFhjUY2ADwRahAz/te7ABY1t4wGOt+7AdfutR8DxuhbUCPS2ENjCRNcN
NhyhhWawZVOkGm2LkuhbJ+CuNnsbmICia7E/F6XbvoS7jYKzph3GBHCHWya4frWH95e/XF3+2jbZ
dZw2/+k4Q2BL0Dah77gt0RBdrO27ftOEtpeC6qU7Pkkzfps/JWPxQPutCDP0z/Q/8NFpdCf+Ordm
6fghP2cQ1eNxcW6N0/mcJ8XBRbfLLs4ty0KUYUVhwQ9gRfDabscNOk7Q8Xsdd3h+EC6LaZqxJM1A
C89xoYKzy4+Lc+suCxNADwBbEv6xQCRjnxM52yTnDDtOvxPAL4O9yDlDIucMdXIAiPpIzgs6Xn8/
cgNBblCS8zs2bc1xOr7X8Sty8/xuC62+oNXXaQ3wsEjR77j+HrR6glZPp9UH3iNFEIKzz74CQSuo
0QLeAyG3Ezh70PIFLV+n5aM0XRs/g95+7PcEOa8k53Ucm6Tpdzy34wd7bM0VtFyNFjDe9fGMoLra
MYuEL2Fv2zbnCIKOThCO6xHTeh1/T80VhuDYOjmg5ZEhOLp67EJO2MFQJwaKRkbqot7tRUxYQWUE
LqoZSjRAHdGkAJlBzGe8nZqwg75JDW3exnNq1HbZmjCEnk7MR2cEOhIMwOJ32pqFhDo+ej5JVthE
ZRKgdD2yB/Bxri7aFc+L7boizMI3ydmojR0PrKKy1vG4nZAwCE8n5JOOBOSR/D33JWxCmsRwiPux
xSeww9mTmLQHSWyAG3J7uDk4qFftDD/ygjcTQ0nIGERUBcnO55LVqZGgTbtAD+B3Ak/Xl3C6hZIV
8XxsXVyocDhL762LjCfhnEcQOcMEYnLE4oJnYYH7S9m0uJ2G+bQI72bcurAKIGRddE++zI9lMfb8
+tWLs3dZ+gcfF/j3az4FniynMzZZ8oy9y8KHIsbsnV0lEzSuIn5gV1dXMPXnJIbsPY+LkBfsDch6
yuM5PP+Row0+EXVizIh9eOQJ+4nPIMljcEp2E89m7FepIjjxm6toxMqTdqbT00eGIZ5hOO7abtcZ
MkA9mMsMpJEjk9k3lvWFmNG1rK/jSRLxCfvp+Yefbp6/eH1pfQ1/xgnXnsCkZDxbRpwdZkXejZNJ
FnbLjVe/3YU5HuPQskBaFjthN8BCHGU0zJY5z9l4luYgeXwcJ/cdmgPSn+csnYB2cna3HD/wImdh
xkE/AJVFSCpOWAhDkwnPxDsAtLIY6MFAoZaJ4gxEmmZPjJJqVCYco8ILEYF11AtimQ57HScPsBF6
Bo4PAVzOVnExNebBOjmLUmDL3RNSChcLnkT4XijW4qS6PBxPa6vgjtlqGsMATczVrtBANmwKHnet
8SzMc/YTnOuGuDdii+XdLB5Xj14Av7/753t+f4o2o0yInvzAfmD/tizxxgi1jbHiacFR1Otz1Z/n
YmK5wBFy9bbAZyx8FWcf4j/5qXVAf7MlHMZzxdjb9HoClPLGwfc8X84K3KYaff7Lm9EIDPAeGHmV
5DwrcEl80DjldZo+LBc7THk5X2yc8TJdPG0enPEw+dl8+UMxL16+OKEjiN/LoXGa5AXLgRvInPDl
dJk8GLwRE5ZJHt8noOyzFBXl7XJ+x7PryQtKG9j3zD4+J37/X8Vw+YQ+HtMYHGMSF3E4A+JHKKsT
lqdz/nz5EbktJ4vnM+KAnPQnfL4IkwedXJzM0KyJasZzXrxcZuCHiyvQvyODVEwiOcr4fZyjYtNT
RWqRxY/g7kf0F9k5/pxURvgYzpZgcxgbhG6Dvt9xSRSNmeZ3S037heaTgk55pQ30WNt+bamx2DzY
FDjjOE02+IFomaGRCuZ0aAlFpQw5K3TMaTJ7ko84zMrS5f2Ukb2TSYJEZzOgCcTU+9FyAbaF05tc
kfDpxmFfAok4h72+BraORlXIm3JNFHhk69N56UNBULUZyNAQDwycBlmWHEBlC2EJcmZhIc56Qn5G
MoDNl6CWJHzaqdoC+RtSjFITR6N1HQGPAsHy+sfrF/+4fHmDG61t7Ht8gCTAV/xW/Yqm8XvnDtQp
QUX7BAEFneeEQZ5cRRmJEGyBEO55AntDvY9Mh1cigshxmGOF9LkpmEIEFcHU6dp9DKZeMPL6ZjCN
3D7Soc+9fG6Dw4082pMn9lS53I3+Vhwa8nA69Dx9xGgF6gjuM2X3WTjmf0DQOAVXEk9iju4AXp3A
YzIwyWLa2NkPlavYj0cD5JHftYddB3jgjHxv5PcxU5QMCt2AeaAiqExXb95dv795/vZmpHGJf1yA
aeSolCmERdjmu+evb68XUr8XWRotxwIFIQ3th0wvSQuBCqqZX331F8Qi+e9aYTBggeEswPcj8XuE
IMhE6Y1YLCBHuS4EeYjn8YKjq7zLePgAcMMwYi1qCI+l4oqMnWi1UqgDIdS8AEx8D4uEGWBe9KcJ
BQLcBsWJbIm+aj+Z9aXMBoATmT0cOf7I9XWZoShruC2c3V8vukr3CKiFCDEBovvEa/j06BDLHJ2I
wVzwV6V6nTeGJ13mEFLfSZ6esk1xCxYcygWJFiq+CkT0YAxROStDYhj4plQhNwmB7DKrrEHzvYbU
zL3BRLW7WoAJe8QPKcC+EOAZAL/xEoFhSH5WX4uWyq0zcKpglYRW2TxcQMqApiCc6wESEFqOekim
bbwP4XEcgmaCX0ANRBwJFgXg4ZHjyyI07aCptA2RWOFc2ATPhHAigcFQT0EJxRbCCQx/KPhCPt1P
AXtSAftdd8jswQg7KrrTiHwbXpeM7ClGalzCHb4JF2+AU9cap4AFSboSqQJOqYwec6g/MH6FqBx5
FX8h8M7x17h4miEJgO45y6fpcoayeOBER0kDQiAgccjtwgUxLIwi2ExIupZAhFxIFikhl1I8q21n
CvsB0bN3pgxgM0XOZxPIE6QZhZX7QS7TBnnGdS06o8PdJTN09uWSlHD8D/CDI7tSVCI8Guwk4Stg
ZbHMEg1tUUAXbm2yTMakqpBSlTveT75BJV+XOSBcdxQ4unw90AAfjHKI/+yWMzRnDHo8aEsbtiYN
W1OGbQlDS7rQnixsTBW2JAr7pAlmkmDt5KQ/y0Vb2zILa81vm17b2iXnaM84rKgHAR2UdQD/DKwy
C9g1AJD7b3X+JUEZlMFiFJwXeYsoQZj5fEla01eBBt6ml+JtnXY5fQ08mHpMLNv+koE4DIZ8XlL0
eSnR7gkRnWr3ZMg44a4ZJq2xPbuMBh66wkGgRf1ABSvpTNE1y/QJV9cDRIhcKr21MEjcZc7nMbny
9TrmTs7Xl87X71ICM3KGo6BXy1p8cMtWBEjXIbyL1O7SdLbRlKJ+APApdAAvBgPMLhGKf/M6vV/b
wDc48p4/knjEdhr3IzeEszFxARvJL/+1DGXygsVAJoA72FSlArnMJPQFPFrA6zo2pWn+yHNHfsAw
3ODUM4jXCKG19KesFmogDGYeqIBeOT0GmHuaRrIEB9OltoxBeKK0CC9Jr0c1xwVsGSFBriF2idjW
qMrXIz6DaZH2giDIJlk6B1UvQX4ujoOOViGOBna4kh2QkQGoh8jrBBh8y4Ybzp/EH2HBVZgloHRN
PHUUEZCbh0SC3sgf6EIzTRMxJ4EoMHrgAODd3EScCGAF6yrgySTqgTMZCAQNoURciF+I6wIyCRCz
vmFbbRj0wKPCt4M5jbZhhR6J+qS+fxENiNFLiDUjyWpO25CA05xzClKco0ME+uE9AvxTsnaNKCJL
XkJ/QRKUUPAElOQOs7txoWu7mZMKtYNAX4TAGoZXBFLM+yIuiH34RwUpASei1yS/W9pvjsXn1ZQn
a/i/QQiINMkfn1RcB4FR4doZOQit15cNFyB4nuv+G84cJyLbSVWyXJ4fvR6cA5Q9znPQbXKF9xAe
FshPCKL5NF6QKSFXIqSAW3/55t0ZHh85DBQLHsLQBElev391+V6NrWvGUCmG27XBUQegFSPb0GRp
81oPCaSCfRpu+oh12gOi7WIi7dpIG6Aueh7ZBqWSx4frs5fPnp2hxTXobb+iAK7VsVFtkUK1O/D7
PMEN1jRUVOmQT1SVgIShiiXlUF3IojdRT1dy0ROpP62IA0syOA9qJATMRZqFiANwPw98UahArW0Q
MpT1s/bUWf2uGzAbTHQw8ta4xYBbbAO3AqIAbr7XhRQS+O275JVU65TqQ2dlKoSp4D0aAJhxSDiE
0qXyfFXek8gumyx6wk+6RPNRBiMJi0BF2bEIC9TsIrBEIUUtLEKY+KMzHq8fxK8OYjvoXj2IiaAL
NJepugtA4yYueOpln1wdaB3ojL/GBdJdPlucKWcgBIpMCZcfq6fa9IySJu0F5JAy1jQ5MzQDCT3C
AHmBI8m9J8m+KRiQgsALPqby4/H6USBWOcPhsOuAVgyRDzYYkGMeRS9KCB95pZmqDs8F/a6CYn5V
Ft0ZXewFtLxG3KFnuUOq5+LnWh6Y1LPQqI+YLIRPX8etyP5lIcNpDcAKmQlhbUb8ZjZbwVbPXGgb
QEYUC4xEzLEJIVcrKYTs2DbzlEA8hY13AmT7o7HPgWL74bAaCNtLa9xGeKbQmarABkPA21UOLMC5
0OEaOld5m0ytT60D2UasTUNRqvRb1A4gBSz7cSCpHusrSblCUjWYuNcxnUYAWctC+syFLMSmXASz
qHDYA3Xpnpx9xg+oZldoswm/crbjDxH4zB0Ai5xK8eW9lf9XyLyX8OxGMG0KD0t44NxQhNsKeKyl
gsekGoSgHW6t6PPX+wOSSnsJSmheiJ+O7gmph6bBPny2mj6Bm0lIJrqQ7kQtV9R4sDL7t1P2azW3
PIGAwwpN08TSj2p1MGqS1tqkDP0dcFarPZ39gH1ZfPIW/v17xjnWO47V6wx7o6pJlZAiyMOogqnM
8+sExHKfLPwvHPZZ3xZ4pPSWdZ8LvxUrzrVeFB4TwQB2JKRTRxo6iu5aupC1pvEu8gb3hg5OCFP9
6OInHojusnqLfV9RkI1nFSi+19/FMa1tZLGmsiPydpEhohRBUmgX9qVlz13W1kMVSDF61EyfUHio
h1txbSqSF4SUkp7qfQpcUNDGMCy6A4mWt8gam8SwY1UiY/BPoXNdsE5je7N9rPfrLcakdU8fRbe+
FvCPjJsj8eQIbAq7JeMH2YHS2/0rUCU0EXGhQJynzm7Vgau/+9UudwXYt9+Kl/VN0H0G1OJwBp40
egIFRu0VykxioRIcAAC6OwEaXKFhtRkVhzUxndQ2eMyULWIsUm0kWpwgVakUppjUEs+erVcyP0Fi
TW1qad8pNoJWcS6QGeAyauwgdauBYwbDpo/ahQph78LFtPMZX4Nc9Kg6HIp4L24wZR0n6wcUG9lw
eKt80z7XbE0aYm6CR7LLjIML6jDIFlQ7D70WJTPorSeiX0qmIvp5AhxmmB9hjQK7LaAmq/AJsptc
dlfJe+cpm4TZMRMZyAPnC1UQky+VywtPWMTkO+kyIXjasm4Eic094RPpKOnCzrxcHLeRjssbNtJ6
15ymdFh1c6WARvwEBqzU+ZN4THkZKjwcRjajKB512ItlIdwf9YdneVqWOeFHlv3LG5H10LZCGnU/
B3T4fFE8YeUe74uSOWjhpCh7s/KqI+k/sO+obGvhTcwY+1jn8M93zLT1c1CWWOmWpqnx7x3Nj3+S
Ll+xs6M3mbonhjcvq1UqeInDYk/iSexuDH6jgLC5wl7NE1H5Op7gPZ1Xly9+/tGSXZYl3erEfcv7
SkprAWkLBEb/bIiEjden4JWAeT2l+6rDQHaPxmdeDhDMPa2LJFRIMyyU1lZlQaIoa4j/FPCMakmU
zpOnlGBHrCMsUCGhJ70ykkhYQVSOjnUNplzGiPpNPYfG8ANuD3JC6UtX6vLr2qEtLfmpRaxaE4c8
ng6B2LEECLrTWyyBBrjspNgwX25NKBiWPLQ7VsLrkwI1ag+qbl2DhAsUOlTqT+UCAWhx3QtKr1av
EYisepUKUeLEiwtBIScS6loISZdTeUR7uVVku2aiMhXdnouui5vqGNkyQZCqOu0ikajgm3xQW1c8
1NYgIxCtdWK4ZONRReg3sQj8CpEx9cU9Q0iVtOqFrb58sFcb4Uv3EL5cA+G/1T3Y2Dr4y32DL900
MDsG+yTGw8ZegpkXB1jCqC4RtpqIiA9tKd7a/Jpj3SHnU8OYxJIvx28fgOlsuhSmy/VvJehVKaO5
Icyie1ROpM+2LrKReTsDvC0YOgOsje4ay+C1oZDRUAudO4UTI60BMoEgE9Ced40V+gFct8fAJQjf
IC/g7txI2kflBo0tJtkzqd3XFF/GYVc3l++f31y/x4NiZQVe9FUQKSfh1elfnr/++XKH7+dQQKAr
n5JK5FGtmj7r12v/TaUhHMUWjV5Xubig0mouqj/qmseZvG74MZ4v51su0gg6G37WL9loK0rASBPF
inivyvDg5RWXpt1SsWDtXfrGTuUujcs+tbtEGr3yblp9oNYTqA+bhXzspWKQLC8dKl9f9Qta2cXY
1nbC2toyDrNybXUnFFMKAUJkVgvIJSm2rS/hCXDiA0Sa+pIiYBvdBlFirNcR5aUpVWZsrkBGvsd6
VGV07OGmi3fH5OtGtSzjSJE5PmXSGWqO+sg+Pq2evk3JL5c6Y7wiwYb5RqkNR5VimBTl+Y70wxp0
DeEcmbLSSWl3D4/0i4j6HMGII8WQ0zo0VaQEOKWjSKdQjtX9psnN0zU915evV5TW3jWNoKFgqgoT
5puQOjpVqORZlma3ojx+dKgFj/LXQ9lHOayRwapVlcBS3/2QfVfPS+XLE0iiuYT4rDYFQoyjqh6q
pFMmEBIVolGaYbyiQVBgha207KReATvfSlF8abKcVioue8ac8kL5iovbw+vpzJn61iIiqxVXZFah
+NpkXoRPsDQl8GrbmCxJD/w9Ie9qwWOse8BQOqEapGQYTHlBrlxyS6dxYhiGPG75gsaa3wwqv4tq
gNVwT1K/INtchIfzUb9PdkCr6oksJNSUrlI20Vdkv/2uSU+vd4nXxC43vCUG9eq8yDlVZP38Cj0z
a/R6Z2Knqjxb+2mt0CuBNVfo1eiGIr0SR0shSVG4TKLridQKoUPyj2emfgnWml8Zkas01PqVD9RK
nBWSrwYoxVcDhtp9bo+ghLOlpNo6Xc36vI561ytZxACUXhGNRiCaDF3doVhlxA7PtSlUYT8qJx7r
ZQul4zrDvv22rBxXheM/MwyP5sx6ivNZNfzTitDuVXkt6hkV9XteYCmI6nO1PUtT1Uv2uxTt2W6d
lcbdmDUr3cGUuaW+Q9hVQ2QH7tYF9UPNjvDNg40BVOjGYXkL4RBMgOrGqboGTZxOl0UeR4a+U5Q5
PKXKVHnKTya4ADXaR2kOpJk1zqiW+MvilXak2hJk5FFAV6shHYb8todfhHENy9/WsSAFBvaQYsio
LaM43aHUPbNe+l+zb7OCXn7BUJ72yzQFvkBbgKnOwE4uHVsDu3UDav2Ayj9/Ul7aKOPqseFMxxqS
caW3JMAlkACFrVp0hjOYzpJmIos6nY7ymMIgFY3vGgxMnOCkWsZW6vrsmXyon2ZtVfKLBEzpOdjQ
rMm7b+hUrEWrZZJr+QOW16r/r4rWrLdUVQ0tratrU9TZGE9EsCEhLLNLURs9L5XjL/SNmEbI9KPx
74rrUmLlPPIuMuZKiCKcjDbl3DowatjaF7+MEvZM/GObVeoDY1O6LzKW0H3Yp43odsNXqJodx5oj
bMAvu9XrmAkjt9XlGvbSCFKkhoTRY5iMed2UaViOqWclREfFCmfj5UzdBhbQisZ2KPtVbqqqszZg
hdyMHPruTmtxukp2tIf/ae/aeuO4rfCz9CtGQBCsJdXeIecaV2mbNkXblz60b0FRTD1yu4BiGVkp
bZD0v4fnfLwccjizs5Lc2oAMJGtzeL+cOz+iH7JY7vAmXqLi8MHJyaB7p9452cd6Ys3I3t+7FYb8
ScNNBM7EGj23iDEXjgjvhSS2L+YVNDC8MLZbQkMevv28uN3PNEsUgBofbiIa9/HQDwjF0Wx8eZWT
thYMFslGD4KXEb0IKvrtze2/EQdIPIjibX4wIrF3Kl2PQeI6+e/pycWFmK8HEqHJRnVCpV2Fsyu5
KG4Wb/e2GmJfwQrsruUFdKUvvMHFVSi5XLaS6/+Yk0njTyuRmyPmlXYoycnhAxLuObItyHnjLr3d
hDKRpkzL9Ge6R/Anvo1AfjF0z5wto8mN7Na6f/ftcGf29Vjc3b+/cdcejYQk5CVERXy3M72xXr4I
cylO4vk8iLMzRTnwm+rckyP+5+tcHdYLRFc83xF8B2mluNeZvTQaNSTss4LXfMXFlxo7cDE1agMH
PG3DRRM5YKukLbNrh/ubuwhXQ1bqZtjQuS+iKSIr6GQoSSKfmi0MzD86k19o+2CbYnkG//dLN5kD
2ry0Ax9YS7FnIelrKJ3rtK1o2nVR5Y90Ev51+/767f0NBS8z5doxgos9YFPP+NnZmRlSMR34P28l
pFkBVCKJaibOQXZmPveBzxcXm0j6P1Kd80FwZ1NTxSadqMASLH5OzCBeFBzydiJj2ewOPzk9mdPd
J1V9k5b+W0xsC2d4C1F1u31kVQabdjN0vpHhFo42p3O1XnV29o15e4BbJcOwXR+EccDTrABu54Cp
eAv8ooiCqK/HX00NBNEEbKPBs2vYtXt1tcHQw8bZpbPhAkMy6311VexepqkcY+r4bWo4SUrA6vJi
voNnj+vgWb6DP/1UzPbwbLGH5r8YJMABfxl6vDdrZoMsoPYvnVsvw/nldhG6cnCWkt38nupzkx4L
bPbj1OAlCznvhzvMogwd5Kj+VK6zxxazdXEh85pzi+SVfRCrbBfNk3Ie9d/fDPu7Xwaq/uWGzq6h
u7KeS9FakI39NCIYV05i2lSx3FbWaxVpI4lnqbC9GJquqLZyc/hFJjzX3Ru7YpHIyCk7a3ykdvJ6
wvkGWc9fIPO8TmCbYtVgn23JMcR39tNMy2mTNs4mRB/PaiQTRXNWp461nsifZfWVleoAtuGxGsGx
2oCnAREJMNvpew4RHXJApf8YKMie4aGY8aQLZVV+GEpW7oaNDQfd7KAtSkfhdGusDYUsjg6G5JGM
Ld8YMv/vVl2zyw5MGoViIKHEjSaNRPGXScBj9HUh8nEu9tFHHrjwRz7krSr6CUzMgbgZWm4p4ad+
79dpfTN14DxO63htutUWZRMqCHpeuKrhYnPE/dWDdspI9Q8ucdlhnzd2boa5zGae4Pz42Y4mQyAB
hzMVz4dsMVidGXuuK4uytXxaRidNj+kl9MvdPiznW2bn1xSJQ0z+AvUMaZeCpyxCHJ4fqCRw0aL/
RWyir6a9mnH0zzcUe3LnppT0Z48TvTy7guYu1cgzAgNaTApZkrU2Uh+mPt9cbOtDe2NP0cdDrwAH
ep6LsEpDqMa+4mu0FZeZuQpuyc1rk7uxl25tCxblYU+2YkbG2hOEwOhi+20r80dp7BlRqO/yzQsT
uL0bzvcgtrZ5SlJF21A8Y8tpIkKrENFJVLjtDQ0ey840pSnEcWtIFds/3/INWELHXl41QRrIWxIM
oERoir96hTO/YHMwU/trAiMPV3cZP2N494N1hIVLn7BOTmvkoAEKMN1yiCX9yGv6C+Wd0c6U0cUE
7iyJ9Xss9tWHBg5Q25ruhqutXV8KfiVgYw68dTH5FiM1xlg5Jri2zaKvJAC/vdlp9elYV+FGt8X2
/GSxWY6ZoyaL2hIHII+qrYG3i4hqYaxP7PRjVYf1a/z6CdSXY/pWZ/FgHHqI71xTNIAUtbe9LbWp
e/bUE7EylEfTfis100/8WJqkeype1jX/YKClHeiB+H4mVKi/41rEqUbxV69mPcUmM0CMt+00c9bB
O6rSdKs3vxWaqZQfhqoRC97Y8SfeIzNJWMGmDkU6oj3mAGy5JDOiyLhvPlX4ZDlI8QSW91Fv+UIB
ftATbZGxHTQ2J/F4dBXWU1fAW+EfrM0BWXe/q8hMQxiZowYCBX5shTUqrPuQhNsOuhGda1oktSGp
RcFWFATqCn5cEgMf6K4LST0C63slkhBN77k0bWXmnJXgnNW2Q1Koqyq5Lvy4pIZWtAI6Nn7sF8xw
JWa4qpBUyaQaSWGOovPMr77wmT79LWO87AVb/fo3vyvwwsvLp78Boeh0Fs+Phjzi0RA6QDg/wMN4
vrHxfGMj/bPqxsbAbGcZ+djz4eLQzYShqxgYJo24NqQDvLp0vPrpompNpZ2hJx8kHHYoFdX9KQVf
jmXFzAs/9GnFrUaTu/ZL/PDLhwMEL0ztxxq9OJYQC0onFhyOAzRFOhTp5opkZTyInr3d8M+BeZ9c
YJ5RBUC3Ok+3Vt5+VQCOoB8QxNURYKZog6JNTCuPjf4yGgYqKptU0ctFZRm9nVSIjzDSaVT2hRjV
2clcG6U0Ks3St9JuGQKdVLrDJyeFF6RYYcYaP/VHOlGMcl1BubaM8MN5OYzKx3RMdYHQr3IXmII9
CjqN55DEZnRHNNVrWWKaC8vUtzLXAex+o0JCX9yWstRjHQWjLqHDlb7LeZu9yQiVsPS9PuqBgFEr
9F+VbsX/5zZ90wfow6qWc/hAw72pDRqx6membmqbNyo+plvPTfeR1nej32BavUa7Hl3VlMV0eNV3
jTneZO/YfPsEtnXHtZet6pbH6BpGg7pZmrpVJvBRs8lo0M5ytMLIPWo4SvETH+5DNmhTFmpoW60t
GyzMgzZctX+G6V5vCn4SmG6Yf+zbF49H4J7Cbz8ce/sYS1OVReV+88YZkjMie0ZYd7ZYUDzlKF7x
wNBmjmoeFexzyj8O+FBLqzOydvSgB9bNAmXHsOPHzJvOApInZnjDjcmP4iOTTzNOrbWBA77AfJRA
JvOqp3x87v9zOEA8RFn31Cs9X/Xyi0Kr/PXzufNO9/mOz/jU5wvkvOJRiQkvdKa2dbm9IzyTedb1
zBs362aeH8iMt9gXOOAMTtTwI3zBXjWflJn4YIX39ZS9ZZoNeWpqyHOTnHvdzD2JJrCVT0O3HEJJ
wCYh3G96c7OR+cLdq5gEXIa2geMEEbVUwdDkLnFlr2+NJcIjShsfcSi7ansjvQ3kB0P2LCadNBmk
gVmzoVhGYWqKXoMQO/+J9gyUJZ5Vjzc84csNc882eFZQ02xAoF376j2FUGSfvacP9t1789fTNWxG
ZR+LmHh74fqEs9IhW1FdAcVqhAavsTkjNKuCu9KiL61LgN5QOr2BkyAKVF1IqpGrFrlq8iqbJGfC
tlJDYCcPA1zhqtGBWnSgQQea0vY7MdZQwD4lwhGsttwnZMQMKD8FqoLJoap87apGnlqJJCjntZuo
xIlMJwiFWlEoDhVAEswmbRgLzpw4epSE1jrfGmDcVO9a0yXWtXRU53bPqUCqL9swYF1CHS17vwWg
sStXudbQ97SvHDZw7W3gx9iquDxaqHwLscN54m4+/ukHVtZQqV8BbabeCXrKQViuflFlVgr8jIEO
ak+5JxLQHwz1ggg0NryXGmyljFjlRRTEYgxWvJ7kDNJJeCslm1EKJoZJlEVLTKLloKhwESoulkMS
S3IkzxksQNRnCosHD/jzFB7HzdiUrZo/C0yXvsZPkcayi8c2M1PRg18GlURIwRs/BOLLJR7DLrWS
eV0fN7LD5KQr656nN5C4Twidx1BOCBL21Hy/++6OTKMJKNRIYYlqS2IE5rHvo+wHMHgMZwJRVVVU
LH7+wdBiEG3dTHMFwA9DaqFeNv002woITN0oJoqNtpxpTrTxu3K9bEPVCbuxq+GbbRJw05YkT1g7
D56T/Myh7drIMOwhUxvME4IeFWXFuJf61OyClQ/LezIXPSoPh637s/CoPDE8Cp/RuqgbIwh11IdE
aZ3qrJGKGmuorj9OH/mjdeNEpCPSPCOqEVHZROuI9MRpfUIrTD9KHTD9Fh/JtMFEv0s/p9pcRMIS
3S39JjS1iLgJvWzslaFAQ9/zhk4bTzSwSGOa6FsM0U7ba1tZTpzk9lFz9GoSZ8QpjJSqWKdCuAJT
32qJER3kQykbijbRMhdaZkKHeNAiC1riQJIBNWBAkbpHI0iYT0NBZWPZkRbKscA6xEG+Iu07fqLH
CLUwj5VO9vaYV1T5MVjKpiqGJlZWNHwVmMxDMZs4HJPGUWM4Lf6FwWmzx+in5EStkKjxrwr/qump
NksYX3riaBmsp4m/Pv0ZR559DrmcAAA=
_ATEOF


$at_traceoff
echo "$at_srcdir/t_rcs_import.at:184: mkdir tmp"
echo t_rcs_import.at:184 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir tmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir tmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcs_import.at:184: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rcs_import.at:185: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o tmp/rcsfile.gz rcsfile.gz.b64
else
  \$UNB64_COMMAND <rcsfile.gz.b64 >tmp/rcsfile.gz
fi
"
echo t_rcs_import.at:185 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o tmp/rcsfile.gz rcsfile.gz.b64
else
  $UNB64_COMMAND <rcsfile.gz.b64 >tmp/rcsfile.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o tmp/rcsfile.gz rcsfile.gz.b64
else
  $UNB64_COMMAND <rcsfile.gz.b64 >tmp/rcsfile.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcs_import.at:185: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rcs_import.at:185: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"tmp/rcsfile.gz\" != \"tmp/rcsfile.gz\"; then
    mv tmp/rcsfile.gz tmp/rcsfile.gz
  fi
  gunzip tmp/rcsfile.gz
else
  \$UNGZ_COMMAND <tmp/rcsfile.gz >tmp/rcsfile
fi
"
echo t_rcs_import.at:185 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "tmp/rcsfile.gz" != "tmp/rcsfile.gz"; then
    mv tmp/rcsfile.gz tmp/rcsfile.gz
  fi
  gunzip tmp/rcsfile.gz
else
  $UNGZ_COMMAND <tmp/rcsfile.gz >tmp/rcsfile
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "tmp/rcsfile.gz" != "tmp/rcsfile.gz"; then
    mv tmp/rcsfile.gz tmp/rcsfile.gz
  fi
  gunzip tmp/rcsfile.gz
else
  $UNGZ_COMMAND <tmp/rcsfile.gz >tmp/rcsfile
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcs_import.at:185: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rcs_import.at:187: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=test cvs_import tmp"
echo t_rcs_import.at:187 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=test cvs_import tmp" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=test cvs_import tmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=test cvs_import tmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcs_import.at:187: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  181 ) # 181. t_cvsimport2.at:1: cvs_import with file added on a branch
    at_setup_line='t_cvsimport2.at:1'
    at_desc='cvs_import with file added on a branch'
    $at_quiet $ECHO_N "181: cvs_import with file added on a branch       $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "181. t_cvsimport2.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_cvsimport2.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_cvsimport2.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport2.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport2.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_cvsimport2.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport2.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport2.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_cvsimport2.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport2.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport2.at:2: rm test_keys"
echo t_cvsimport2.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport2.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This tests the case where a file was added on a branch in CVS; CVS
# records this in a strange way (with a delete of the non-existent
# file on mainline, followed by an add of the file on the branch).
# Make sure we handle it correct.

cat >prepare.sh <<'_ATEOF'
#!/bin/sh
CVSROOT=$PWD/cvsroot
export CVSROOT

cvs init
mkdir src
echo FOO > src/foo
(
	cd src
	cvs import -m import mod vtag rtag
)
rm -rf src

mkdir src
(
	cd src
	cvs co mod
	cd mod
	cvs tag -b branch
	cvs up -r branch
	echo BAR > bar
	cvs add bar
	cvs ci -m 'add bar'
)
_ATEOF


$at_traceoff
echo "$at_srcdir/t_cvsimport2.at:35: sh prepare.sh"
echo t_cvsimport2.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sh prepare.sh ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sh prepare.sh ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport2.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_cvsimport2.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=test cvs_import \$PWD/cvsroot/mod"
echo t_cvsimport2.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=test cvs_import $PWD/cvsroot/mod" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=test cvs_import $PWD/cvsroot/mod ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=test cvs_import $PWD/cvsroot/mod ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport2.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  182 ) # 182. t_lf_crlf.at:1: use get_linesep_conv hook
    at_setup_line='t_lf_crlf.at:1'
    at_desc='use get_linesep_conv hook'
    $at_quiet $ECHO_N "182: use get_linesep_conv hook                    $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "182. t_lf_crlf.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_lf_crlf.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_lf_crlf.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_lf_crlf.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:2: rm test_keys"
echo t_lf_crlf.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This test excercises the common case of wanting to do newline
# character conversion so that win32 users can have native line endings
# in their workspace.

$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:8: printf \"foo\\r\\n\""
echo t_lf_crlf.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; printf "foo\r\n" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; printf "foo\r\n" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:9: mv stdout foo.crlf"
echo t_lf_crlf.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout foo.crlf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout foo.crlf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:10: printf \"foo\\n\""
echo t_lf_crlf.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; printf "foo\n" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; printf "foo\n" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:11: mv stdout foo.lf"
echo t_lf_crlf.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout foo.lf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout foo.lf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:13: printf \"foo\\r\\nfoo\\r\\n\""
echo t_lf_crlf.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; printf "foo\r\nfoo\r\n" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; printf "foo\r\nfoo\r\n" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:14: mv stdout foofoo.crlf"
echo t_lf_crlf.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout foofoo.crlf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout foofoo.crlf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:15: printf \"foo\\nfoo\\n\""
echo t_lf_crlf.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; printf "foo\nfoo\n" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; printf "foo\nfoo\n" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:16: mv stdout foofoo.lf"
echo t_lf_crlf.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout foofoo.lf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout foofoo.lf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >linesep.lua <<'_ATEOF'

function get_linesep_conv(name)
        return {"LF", "CRLF"}
end
_ATEOF


$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:24: cp foo.crlf foo"
echo t_lf_crlf.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foo.crlf foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foo.crlf foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=linesep.lua add foo"
echo t_lf_crlf.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=linesep.lua add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=linesep.lua add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=linesep.lua add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=linesep.lua --branch=foo commit -m foo"
echo t_lf_crlf.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=linesep.lua --branch=foo commit -m foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=linesep.lua --branch=foo commit -m foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=linesep.lua --branch=foo commit -m foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

FOO_REV=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:29: cp foofoo.crlf foo"
echo t_lf_crlf.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foofoo.crlf foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foofoo.crlf foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=linesep.lua commit -m foofoo"
echo t_lf_crlf.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=linesep.lua commit -m foofoo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=linesep.lua commit -m foofoo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=linesep.lua commit -m foofoo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

FOO_FOO_REV=`cat _MTN/revision`

rm -Rf _MTN
$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=linesep.lua co --revision=\$FOO_REV ."
echo t_lf_crlf.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=linesep.lua co --revision=$FOO_REV ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=linesep.lua co --revision=$FOO_REV . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=linesep.lua co --revision=$FOO_REV . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:35: cmp foo foo.crlf"
echo t_lf_crlf.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp foo foo.crlf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp foo foo.crlf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=linesep.lua checkout --revision=\$FOO_REV foo_crlf"
echo t_lf_crlf.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=linesep.lua checkout --revision=$FOO_REV foo_crlf" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=linesep.lua checkout --revision=$FOO_REV foo_crlf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=linesep.lua checkout --revision=$FOO_REV foo_crlf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:38: cmp foo.crlf foo_crlf/foo"
echo t_lf_crlf.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp foo.crlf foo_crlf/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp foo.crlf foo_crlf/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=linesep.lua checkout --revision=\$FOO_FOO_REV foo_foo_crlf"
echo t_lf_crlf.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=linesep.lua checkout --revision=$FOO_FOO_REV foo_foo_crlf" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=linesep.lua checkout --revision=$FOO_FOO_REV foo_foo_crlf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=linesep.lua checkout --revision=$FOO_FOO_REV foo_foo_crlf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:41: cmp foofoo.crlf foo_foo_crlf/foo"
echo t_lf_crlf.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp foofoo.crlf foo_foo_crlf/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp foofoo.crlf foo_foo_crlf/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# no rcfile here
$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:44: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$FOO_REV foo_lf"
echo t_lf_crlf.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$FOO_REV foo_lf" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$FOO_REV foo_lf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$FOO_REV foo_lf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:45: cmp foo.lf foo_lf/foo"
echo t_lf_crlf.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp foo.lf foo_lf/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp foo.lf foo_lf/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:47: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$FOO_FOO_REV foo_foo_lf"
echo t_lf_crlf.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$FOO_FOO_REV foo_foo_lf" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$FOO_FOO_REV foo_foo_lf ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$FOO_FOO_REV foo_foo_lf ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lf_crlf.at:48: cmp foofoo.lf foo_foo_lf/foo"
echo t_lf_crlf.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp foofoo.lf foo_foo_lf/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp foofoo.lf foo_foo_lf/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lf_crlf.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  183 ) # 183. t_add_vs_commit.at:1: add workspace commit in another
    at_setup_line='t_add_vs_commit.at:1'
    at_desc='add workspace commit in another'
    $at_quiet $ECHO_N "183: add workspace commit in another              $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "183. t_add_vs_commit.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_add_vs_commit.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_add_vs_commit.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_vs_commit.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_vs_commit.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_add_vs_commit.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_vs_commit.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_vs_commit.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_add_vs_commit.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_vs_commit.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_vs_commit.at:2: rm test_keys"
echo t_add_vs_commit.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_vs_commit.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This test relies on file-suturing


# 1. Alice writes a file, does an add, *doesn't* do a commit, and sends patch
# 2. Bob applies (modified) patch to tree, does the add, then a commit.
# 3. Now Alice does an update (resolves the merge conflict, choosing Bob's changes).

cat >initial <<'_ATEOF'
some initial data
_ATEOF


cat >foo.alice <<'_ATEOF'
foo
change me
bar
_ATEOF


cat >foo.bob <<'_ATEOF'
foo
me change
bar
_ATEOF


# Alice does her add
$at_traceoff
echo "$at_srcdir/t_add_vs_commit.at:25: mkdir alicewd"
echo t_add_vs_commit.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir alicewd ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir alicewd ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_vs_commit.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_vs_commit.at:26: cp initial alicewd/initial"
echo t_add_vs_commit.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp initial alicewd/initial ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp initial alicewd/initial ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_vs_commit.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_vs_commit.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch setup alicewd"
echo t_add_vs_commit.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch setup alicewd" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch setup alicewd ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch setup alicewd ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_vs_commit.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_vs_commit.at:28: (cd alicewd; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --root=. add initial)"
echo t_add_vs_commit.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd alicewd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. add initial)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd alicewd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. add initial) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd alicewd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. add initial) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_vs_commit.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_vs_commit.at:29: (cd alicewd; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --root=. commit -m 'initial commit')"
echo t_add_vs_commit.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd alicewd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. commit -m 'initial commit')" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd alicewd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. commit -m 'initial commit') ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd alicewd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. commit -m 'initial commit') ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_vs_commit.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_vs_commit.at:30: cp foo.alice alicewd/foo"
echo t_add_vs_commit.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foo.alice alicewd/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foo.alice alicewd/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_vs_commit.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_vs_commit.at:31: (cd alicewd; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add --root=. foo)"
echo t_add_vs_commit.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd alicewd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add --root=. foo)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd alicewd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add --root=. foo) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd alicewd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add --root=. foo) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_vs_commit.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# Note, alice does not commit this add...

# Bob does add of same file, with edits, and commits
$at_traceoff
echo "$at_srcdir/t_add_vs_commit.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout bobwd"
echo t_add_vs_commit.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout bobwd" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout bobwd ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout bobwd ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_vs_commit.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_vs_commit.at:36: cp foo.bob bobwd/foo"
echo t_add_vs_commit.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foo.bob bobwd/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foo.bob bobwd/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_vs_commit.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_vs_commit.at:37: (cd bobwd; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --root=. add foo)"
echo t_add_vs_commit.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd bobwd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. add foo)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd bobwd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. add foo) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd bobwd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. add foo) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_vs_commit.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_vs_commit.at:38: (cd bobwd; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --root=. commit -m 'bob commit')"
echo t_add_vs_commit.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd bobwd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. commit -m 'bob commit')" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd bobwd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. commit -m 'bob commit') ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd bobwd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. commit -m 'bob commit') ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_vs_commit.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REV=`cd bobwd; cat _MTN/revision`

# Alice does her update, then attempts, eg., a diff
$at_traceoff
echo "$at_srcdir/t_add_vs_commit.at:42: (cd alicewd; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --root=. update --revision=\$REV)"
echo t_add_vs_commit.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd alicewd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. update --revision=$REV)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd alicewd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. update --revision=$REV) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd alicewd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. update --revision=$REV) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_vs_commit.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_vs_commit.at:43: (cd alicewd; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --root=. diff)"
echo t_add_vs_commit.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd alicewd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. diff)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd alicewd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. diff) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd alicewd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. diff) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_vs_commit.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  184 ) # 184. t_update_nonexistent.at:1: update to non-existent rev
    at_setup_line='t_update_nonexistent.at:1'
    at_desc='update to non-existent rev'
    $at_quiet $ECHO_N "184: update to non-existent rev                   $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "184. t_update_nonexistent.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_update_nonexistent.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_update_nonexistent.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_nonexistent.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_nonexistent.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_update_nonexistent.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_nonexistent.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_nonexistent.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_update_nonexistent.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_nonexistent.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_nonexistent.at:2: rm test_keys"
echo t_update_nonexistent.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_nonexistent.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_update_nonexistent.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_update_nonexistent.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_nonexistent.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_update_nonexistent.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_update_nonexistent.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_nonexistent.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_update_nonexistent.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update --revision=73070030f7b0d0f3d4ee02545d45ca4bbe5e189f"
echo t_update_nonexistent.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --revision=73070030f7b0d0f3d4ee02545d45ca4bbe5e189f" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --revision=73070030f7b0d0f3d4ee02545d45ca4bbe5e189f ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update --revision=73070030f7b0d0f3d4ee02545d45ca4bbe5e189f ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_update_nonexistent.at:8: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  185 ) # 185. t_override_author_date.at:1: --author, --date
    at_setup_line='t_override_author_date.at:1'
    at_desc='--author, --date'
    $at_quiet $ECHO_N "185: --author, --date                             $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "185. t_override_author_date.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_override_author_date.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_override_author_date.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_override_author_date.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_override_author_date.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_override_author_date.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_override_author_date.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_override_author_date.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_override_author_date.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_override_author_date.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_override_author_date.at:2: rm test_keys"
echo t_override_author_date.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_override_author_date.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
floooooo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_override_author_date.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_override_author_date.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_override_author_date.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_override_author_date.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --author=the_author --date=1999-12-31T12:00:00 --branch=foo --message=foo"
echo t_override_author_date.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --author=the_author --date=1999-12-31T12:00:00 --branch=foo --message=foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --author=the_author --date=1999-12-31T12:00:00 --branch=foo --message=foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --author=the_author --date=1999-12-31T12:00:00 --branch=foo --message=foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_override_author_date.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REV=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_override_author_date.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log --revision=\$REV"
echo t_override_author_date.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --revision=$REV" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --revision=$REV ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --revision=$REV ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_override_author_date.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_override_author_date.at:10: grep '^Author: the_author' stdout >/dev/null"
echo t_override_author_date.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^Author: the_author' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^Author: the_author' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_override_author_date.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_override_author_date.at:11: grep '^Date: 1999-12-31T12:00:00' stdout >/dev/null"
echo t_override_author_date.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^Date: 1999-12-31T12:00:00' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^Date: 1999-12-31T12:00:00' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_override_author_date.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
oovel
_ATEOF


$at_traceoff
echo "$at_srcdir/t_override_author_date.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --date=1999-12-31T12:00foo --branch=foo --message=foo"
echo t_override_author_date.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --date=1999-12-31T12:00foo --branch=foo --message=foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --date=1999-12-31T12:00foo --branch=foo --message=foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --date=1999-12-31T12:00foo --branch=foo --message=foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_override_author_date.at:15: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  186 ) # 186. t_add_stomp_file.at:1: update does not stomp non-monotone files
    at_setup_line='t_add_stomp_file.at:1'
    at_desc='update does not stomp non-monotone files'
    $at_quiet $ECHO_N "186: update does not stomp non-monotone files     $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "186. t_add_stomp_file.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_add_stomp_file.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_add_stomp_file.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_stomp_file.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_stomp_file.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_add_stomp_file.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_stomp_file.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_stomp_file.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_add_stomp_file.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_stomp_file.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_stomp_file.at:2: rm test_keys"
echo t_add_stomp_file.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_stomp_file.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This test is a bug report


# 1. Alice checks out project, creates file foo
# 2. Bob checks out project, creates foo, adds foo, and commits
# 3. Now Alice does an update
#
# monotone should warn her before stomping her non-revision controlled 'foo' file
#

cat >initial <<'_ATEOF'
some initial data
_ATEOF


cat >foo.alice <<'_ATEOF'
foo
not revision controlled
_ATEOF


cat >foo.bob <<'_ATEOF'
foo
checked into project
_ATEOF


# Alice make project, writes foo, but doesn't check it in
$at_traceoff
echo "$at_srcdir/t_add_stomp_file.at:26: mkdir alicewd"
echo t_add_stomp_file.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir alicewd ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir alicewd ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_stomp_file.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_stomp_file.at:27: cp initial alicewd/initial"
echo t_add_stomp_file.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp initial alicewd/initial ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp initial alicewd/initial ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_stomp_file.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_stomp_file.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch setup alicewd"
echo t_add_stomp_file.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch setup alicewd" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch setup alicewd ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch setup alicewd ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_stomp_file.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_stomp_file.at:29: (cd alicewd; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --root=. add initial)"
echo t_add_stomp_file.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd alicewd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. add initial)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd alicewd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. add initial) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd alicewd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. add initial) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_stomp_file.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_stomp_file.at:30: (cd alicewd; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --root=. commit -m 'initial commit')"
echo t_add_stomp_file.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd alicewd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --root=. commit -m 'initial commit')" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd alicewd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --root=. commit -m 'initial commit') ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd alicewd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --root=. commit -m 'initial commit') ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_stomp_file.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_stomp_file.at:31: cp foo.alice alicewd/foo"
echo t_add_stomp_file.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foo.alice alicewd/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foo.alice alicewd/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_stomp_file.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Bob does add of file foo, and commits
$at_traceoff
echo "$at_srcdir/t_add_stomp_file.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout bobwd"
echo t_add_stomp_file.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout bobwd" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout bobwd ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout bobwd ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_stomp_file.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_stomp_file.at:35: cp foo.bob bobwd/foo"
echo t_add_stomp_file.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foo.bob bobwd/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foo.bob bobwd/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_stomp_file.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_stomp_file.at:36: (cd bobwd; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --root=. add foo)"
echo t_add_stomp_file.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd bobwd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. add foo)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd bobwd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. add foo) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd bobwd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. add foo) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_stomp_file.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_stomp_file.at:37: (cd bobwd; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --root=. commit -m 'bob commit')"
echo t_add_stomp_file.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd bobwd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --root=. commit -m 'bob commit')" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd bobwd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --root=. commit -m 'bob commit') ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd bobwd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --root=. commit -m 'bob commit') ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_stomp_file.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REV=`cd bobwd; cat _MTN/revision`

# Alice does her update, discovers foo has been stomped!
$at_traceoff
echo "$at_srcdir/t_add_stomp_file.at:41: (cd alicewd; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --root=. update --revision=\$REV)"
echo t_add_stomp_file.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd alicewd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --root=. update --revision=$REV)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd alicewd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --root=. update --revision=$REV) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd alicewd; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --root=. update --revision=$REV) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_stomp_file.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_stomp_file.at:42: cmp foo.alice alicewd/foo"
echo t_add_stomp_file.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp foo.alice alicewd/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp foo.alice alicewd/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_stomp_file.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  187 ) # 187. t_database_check_minor.at:1: db check and non-serious errors
    at_setup_line='t_database_check_minor.at:1'
    at_desc='db check and non-serious errors'
    $at_quiet $ECHO_N "187: db check and non-serious errors              $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "187. t_database_check_minor.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_database_check_minor.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_database_check_minor.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_minor.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check_minor.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_database_check_minor.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_minor.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check_minor.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_database_check_minor.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_minor.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check_minor.at:2: rm test_keys"
echo t_database_check_minor.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_minor.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# Make sure that db check detects minor problems, but doesn't complain
# about them too loudly (and doesn't exit with error status).

cat >fileX <<'_ATEOF'
blah blah
_ATEOF

cat >fileY <<'_ATEOF'
stuff stuff
_ATEOF



cat >testfile <<'_ATEOF'
more stuff
_ATEOF

$at_traceoff
echo "$at_srcdir/t_database_check_minor.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_database_check_minor.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_minor.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_database_check_minor.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_database_check_minor.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_minor.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_database_check_minor.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net cert \$REV author extra_author"
echo t_database_check_minor.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $REV author extra_author" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $REV author extra_author ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $REV author extra_author ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_minor.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# if we drop the file, we'll have a roster that doesn't
# reference its own revision.
# we can then remove the revision to end up with a clean unreferenced roster.
$at_traceoff
echo "$at_srcdir/t_database_check_minor.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop testfile"
echo t_database_check_minor.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_minor.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check_minor.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit -m \"goingaway\""
echo t_database_check_minor.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m \"goingaway\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m "goingaway" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m "goingaway" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_minor.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

DEL_REV=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_database_check_minor.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db execute \"delete from revisions where id = '\$DEL_REV'\""
echo t_database_check_minor.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute \"delete from revisions where id = '$DEL_REV'\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "delete from revisions where id = '$DEL_REV'" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "delete from revisions where id = '$DEL_REV'" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_minor.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check_minor.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db execute \"delete from revision_certs where id = '\$DEL_REV'\""
echo t_database_check_minor.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute \"delete from revision_certs where id = '$DEL_REV'\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "delete from revision_certs where id = '$DEL_REV'" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "delete from revision_certs where id = '$DEL_REV'" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_minor.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check_minor.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db execute \"delete from revision_ancestry where child = '\$DEL_REV'\""
echo t_database_check_minor.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute \"delete from revision_ancestry where child = '$DEL_REV'\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "delete from revision_ancestry where child = '$DEL_REV'" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "delete from revision_ancestry where child = '$DEL_REV'" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_minor.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# and also a few unused files shall float about
$at_traceoff
echo "$at_srcdir/t_database_check_minor.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net fload < fileX"
echo t_database_check_minor.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload < fileX" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload < fileX ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload < fileX ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_minor.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check_minor.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net fload < fileY"
echo t_database_check_minor.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload < fileY" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload < fileY ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net fload < fileY ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_minor.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_database_check_minor.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db check"
echo t_database_check_minor.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_minor.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_database_check_minor.at:35: grep 'problems detected: 5' stderr >/dev/null"
echo t_database_check_minor.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'problems detected: 5' stderr >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'problems detected: 5' stderr >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_minor.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check_minor.at:36: grep '0 serious' stderr >/dev/null"
echo t_database_check_minor.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '0 serious' stderr >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '0 serious' stderr >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_minor.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check_minor.at:37: grep 'minor problems detected' stderr >/dev/null"
echo t_database_check_minor.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'minor problems detected' stderr >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'minor problems detected' stderr >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_minor.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  188 ) # 188. t_db_kill_rev_locally.at:1: db kill_rev_locally command
    at_setup_line='t_db_kill_rev_locally.at:1'
    at_desc='db kill_rev_locally command'
    $at_quiet $ECHO_N "188: db kill_rev_locally command                  $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "188. t_db_kill_rev_locally.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_db_kill_rev_locally.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_db_kill_rev_locally.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_db_kill_rev_locally.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally.at:2: rm test_keys"
echo t_db_kill_rev_locally.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This tests the db kill_rev_locally command

# Prepare a db with two revisions

cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_db_kill_rev_locally.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_db_kill_rev_locally.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


ANCESTOR=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
stuff stuff
_ATEOF



$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_db_kill_rev_locally.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


CHILD=`cat _MTN/revision`

# trying to kill the ancestor. This *is supposed to fail*
$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db kill_rev_locally \$ANCESTOR"
echo t_db_kill_rev_locally.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db kill_rev_locally $ANCESTOR" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db kill_rev_locally $ANCESTOR ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db kill_rev_locally $ANCESTOR ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally.at:18: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision \$ANCESTOR"
echo t_db_kill_rev_locally.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $ANCESTOR" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $ANCESTOR ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $ANCESTOR ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db check"
echo t_db_kill_rev_locally.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# killing children is ok, though :)
$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision \$CHILD"
echo t_db_kill_rev_locally.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $CHILD" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $CHILD ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $CHILD ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db kill_rev_locally \$CHILD"
echo t_db_kill_rev_locally.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db kill_rev_locally $CHILD" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db kill_rev_locally $CHILD ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db kill_rev_locally $CHILD ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision \$CHILD"
echo t_db_kill_rev_locally.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $CHILD" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $CHILD ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $CHILD ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally.at:25: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db check"
echo t_db_kill_rev_locally.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  189 ) # 189. t_drop_attr.at:1: drop removes attributes
    at_setup_line='t_drop_attr.at:1'
    at_desc='drop removes attributes'
    $at_quiet $ECHO_N "189: drop removes attributes                      $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "189. t_drop_attr.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_drop_attr.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_drop_attr.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_attr.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_attr.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_drop_attr.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_attr.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_attr.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_drop_attr.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_attr.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_attr.at:2: rm test_keys"
echo t_drop_attr.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_attr.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
foo bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_drop_attr.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_drop_attr.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_attr.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_drop_attr.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr set testfile some_key some_value"
echo t_drop_attr.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set testfile some_key some_value" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set testfile some_key some_value ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set testfile some_key some_value ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_attr.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_attr.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr get testfile"
echo t_drop_attr.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_attr.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_attr.at:8: grep some_key stdout >/dev/null"
echo t_drop_attr.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep some_key stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep some_key stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_attr.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_attr.at:9: grep some_value stdout >/dev/null"
echo t_drop_attr.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep some_value stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep some_value stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_attr.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_drop_attr.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_drop_attr.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_attr.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_drop_attr.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop testfile"
echo t_drop_attr.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_attr.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_attr.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr get testfile"
echo t_drop_attr.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_drop_attr.at:14: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  190 ) # 190. t_attr_drop.at:1: attr drop
    at_setup_line='t_attr_drop.at:1'
    at_desc='attr drop'
    $at_quiet $ECHO_N "190: attr drop                                    $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "190. t_attr_drop.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_attr_drop.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_attr_drop.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_drop.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_drop.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_attr_drop.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_drop.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_drop.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_attr_drop.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_drop.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_drop.at:2: rm test_keys"
echo t_attr_drop.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_drop.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
foo bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_attr_drop.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_attr_drop.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_drop.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_attr_drop.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr set testfile test:first_key first_value"
echo t_attr_drop.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set testfile test:first_key first_value" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set testfile test:first_key first_value ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set testfile test:first_key first_value ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_drop.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_drop.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr set testfile test:second_key second_value"
echo t_attr_drop.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set testfile test:second_key second_value" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set testfile test:second_key second_value ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set testfile test:second_key second_value ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_drop.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_drop.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr get testfile"
echo t_attr_drop.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_drop.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_drop.at:9: grep test:first_key stdout >/dev/null"
echo t_attr_drop.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep test:first_key stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep test:first_key stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_drop.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_drop.at:10: grep first_value stdout >/dev/null"
echo t_attr_drop.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep first_value stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep first_value stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_drop.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_drop.at:11: grep test:second_key stdout >/dev/null"
echo t_attr_drop.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep test:second_key stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep test:second_key stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_drop.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_drop.at:12: grep second_value stdout >/dev/null"
echo t_attr_drop.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep second_value stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep second_value stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_drop.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_drop.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr drop testfile test:first_key"
echo t_attr_drop.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr drop testfile test:first_key" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr drop testfile test:first_key ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr drop testfile test:first_key ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_drop.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_drop.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr get testfile"
echo t_attr_drop.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_drop.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_drop.at:15: grep test:first_key stdout >/dev/null"
echo t_attr_drop.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep test:first_key stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep test:first_key stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_attr_drop.at:15: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_drop.at:16: grep first_value stdout >/dev/null"
echo t_attr_drop.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep first_value stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep first_value stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_attr_drop.at:16: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_drop.at:17: grep test:second_key stdout >/dev/null"
echo t_attr_drop.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep test:second_key stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep test:second_key stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_drop.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_drop.at:18: grep second_value stdout >/dev/null"
echo t_attr_drop.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep second_value stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep second_value stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_drop.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_drop.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr drop testfile"
echo t_attr_drop.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr drop testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr drop testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr drop testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_drop.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_drop.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr get testfile"
echo t_attr_drop.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_drop.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_drop.at:21: grep test:first_key stdout >/dev/null"
echo t_attr_drop.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep test:first_key stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep test:first_key stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_attr_drop.at:21: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_drop.at:22: grep first_value stdout >/dev/null"
echo t_attr_drop.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep first_value stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep first_value stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_attr_drop.at:22: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_drop.at:23: grep test:second_key stdout >/dev/null"
echo t_attr_drop.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep test:second_key stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep test:second_key stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_attr_drop.at:23: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_drop.at:24: grep second_value stdout >/dev/null"
echo t_attr_drop.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep second_value stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep second_value stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_attr_drop.at:24: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  191 ) # 191. t_log_depth_single.at:1: log --last=N FILENAME
    at_setup_line='t_log_depth_single.at:1'
    at_desc='log --last=N FILENAME'
    $at_quiet $ECHO_N "191: log --last=N FILENAME                        $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "191. t_log_depth_single.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_log_depth_single.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_log_depth_single.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_depth_single.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_depth_single.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_log_depth_single.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_depth_single.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_depth_single.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_log_depth_single.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_depth_single.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_depth_single.at:2: rm test_keys"
echo t_log_depth_single.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_depth_single.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >foo <<'_ATEOF'
foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_log_depth_single.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_log_depth_single.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_depth_single.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_depth_single.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message \"Addition of foo.\""
echo t_log_depth_single.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message \"Addition of foo.\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message "Addition of foo." ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message "Addition of foo." ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_depth_single.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >bar <<'_ATEOF'
bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_log_depth_single.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add bar"
echo t_log_depth_single.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_depth_single.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_depth_single.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message \"Addition of bar.\""
echo t_log_depth_single.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message \"Addition of bar.\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message "Addition of bar." ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message "Addition of bar." ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_depth_single.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >baz <<'_ATEOF'
baz
_ATEOF

$at_traceoff
echo "$at_srcdir/t_log_depth_single.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add baz"
echo t_log_depth_single.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add baz" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add baz ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add baz ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_depth_single.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_depth_single.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message \"Addition of baz.\""
echo t_log_depth_single.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message \"Addition of baz.\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message "Addition of baz." ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message "Addition of baz." ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_depth_single.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_depth_single.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log --last=1 foo | grep '^Revision:'"
echo t_log_depth_single.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --last=1 foo | grep '^Revision:'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --last=1 foo | grep '^Revision:' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --last=1 foo | grep '^Revision:' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_depth_single.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_depth_single.at:20: test 1 -eq \"\`wc -l <stdout\`\""
echo t_log_depth_single.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test 1 -eq "`wc -l <stdout`" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test 1 -eq "`wc -l <stdout`" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_depth_single.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  192 ) # 192. t_attr_init.at:1: attr init functions
    at_setup_line='t_attr_init.at:1'
    at_desc='attr init functions'
    $at_quiet $ECHO_N "192: attr init functions                          $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "192. t_attr_init.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_attr_init.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_attr_init.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_init.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_init.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_attr_init.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_init.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_init.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_attr_init.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_init.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_init.at:2: rm test_keys"
echo t_attr_init.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_init.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >hook.lua <<'_ATEOF'

if (attr_init_functions == nil) then
  attr_init_functions = {}
end
attr_init_functions["test:test_attr"] =
  function(filename)
     if filename == "magic" then
        return "bob"
     else
        return nil
     end
  end
_ATEOF


cat >testfile <<'_ATEOF'
foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_attr_init.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=hook.lua add testfile"
echo t_attr_init.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=hook.lua add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=hook.lua add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=hook.lua add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_init.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >magic <<'_ATEOF'
stuff
_ATEOF

$at_traceoff
echo "$at_srcdir/t_attr_init.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=hook.lua add magic"
echo t_attr_init.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=hook.lua add magic" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=hook.lua add magic ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=hook.lua add magic ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_init.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_attr_init.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr get testfile"
echo t_attr_init.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_init.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_init.at:26: grep test:test_attr stdout >/dev/null"
echo t_attr_init.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep test:test_attr stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep test:test_attr stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_attr_init.at:26: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_init.at:27: grep bob stdout >/dev/null"
echo t_attr_init.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep bob stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep bob stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_attr_init.at:27: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_attr_init.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr get magic"
echo t_attr_init.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get magic" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get magic ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get magic ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_init.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_init.at:30: grep test:test_attr stdout >/dev/null"
echo t_attr_init.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep test:test_attr stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep test:test_attr stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_init.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_attr_init.at:31: grep bob stdout >/dev/null"
echo t_attr_init.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep bob stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep bob stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_attr_init.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  193 ) # 193. t_add_executable.at:1: add executable
    at_setup_line='t_add_executable.at:1'
    at_desc='add executable'
    $at_quiet $ECHO_N "193: add executable                               $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "193. t_add_executable.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_add_executable.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_add_executable.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_executable.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_executable.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_add_executable.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_executable.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_executable.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_add_executable.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_executable.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_executable.at:2: rm test_keys"
echo t_add_executable.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_executable.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




if test "$OSTYPE" = "msys"; then
  echo 77 > $at_status_file
  exit 77
fi


cat >foo <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_add_executable.at:8: chmod 755 foo"
echo t_add_executable.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; chmod 755 foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; chmod 755 foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_executable.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# Have to use RAW_MTN, because we're testing the standard hooks...
$at_traceoff
echo "$at_srcdir/t_add_executable.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=test_hooks.lua add foo"
echo t_add_executable.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=test_hooks.lua add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=test_hooks.lua add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=test_hooks.lua add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_executable.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_add_executable.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_add_executable.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_executable.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# Have to use RAW_MTN, because we're testing the standard hooks...
$at_traceoff
echo "$at_srcdir/t_add_executable.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=test_hooks.lua checkout --branch=testbranch codir"
echo t_add_executable.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=test_hooks.lua checkout --branch=testbranch codir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=test_hooks.lua checkout --branch=testbranch codir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=test_hooks.lua checkout --branch=testbranch codir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_executable.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_executable.at:15: test -x codir/foo"
echo t_add_executable.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -x codir/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -x codir/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_executable.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  194 ) # 194. t_inodeprints_hook.at:1: use_inodeprints hook
    at_setup_line='t_inodeprints_hook.at:1'
    at_desc='use_inodeprints hook'
    $at_quiet $ECHO_N "194: use_inodeprints hook                         $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "194. t_inodeprints_hook.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_inodeprints_hook.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_inodeprints_hook.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_hook.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints_hook.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_inodeprints_hook.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_hook.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints_hook.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_inodeprints_hook.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_hook.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints_hook.at:2: rm test_keys"
echo t_inodeprints_hook.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_hook.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >on.lua <<'_ATEOF'

function use_inodeprints()
  return true
end
_ATEOF


cat >off.lua <<'_ATEOF'

function use_inodeprints()
  return false
end
_ATEOF


$at_traceoff
echo "$at_srcdir/t_inodeprints_hook.at:16: test ! -e _MTN/inodeprints"
echo t_inodeprints_hook.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e _MTN/inodeprints ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e _MTN/inodeprints ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_hook.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_inodeprints_hook.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_inodeprints_hook.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_hook.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_inodeprints_hook.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_inodeprints_hook.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_hook.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_inodeprints_hook.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch setup_default"
echo t_inodeprints_hook.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch setup_default" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch setup_default ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch setup_default ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_hook.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints_hook.at:23: test ! -e setup_default/_MTN/inodeprints"
echo t_inodeprints_hook.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e setup_default/_MTN/inodeprints ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e setup_default/_MTN/inodeprints ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_hook.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints_hook.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV co_default"
echo t_inodeprints_hook.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV co_default" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV co_default ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV co_default ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_hook.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints_hook.at:25: test ! -e co_default/_MTN/inodeprints"
echo t_inodeprints_hook.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e co_default/_MTN/inodeprints ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e co_default/_MTN/inodeprints ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_hook.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_inodeprints_hook.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=off.lua setup --branch=testbranch setup_off"
echo t_inodeprints_hook.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=off.lua setup --branch=testbranch setup_off" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=off.lua setup --branch=testbranch setup_off ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=off.lua setup --branch=testbranch setup_off ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_hook.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints_hook.at:28: test ! -e setup_off/_MTN/inodeprints"
echo t_inodeprints_hook.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e setup_off/_MTN/inodeprints ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e setup_off/_MTN/inodeprints ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_hook.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints_hook.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=off.lua checkout --revision=\$REV co_off"
echo t_inodeprints_hook.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=off.lua checkout --revision=$REV co_off" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=off.lua checkout --revision=$REV co_off ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=off.lua checkout --revision=$REV co_off ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_hook.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints_hook.at:30: test ! -e co_off/_MTN/inodeprints"
echo t_inodeprints_hook.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e co_off/_MTN/inodeprints ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e co_off/_MTN/inodeprints ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_hook.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_inodeprints_hook.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=on.lua setup --branch=testbranch setup_on"
echo t_inodeprints_hook.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=on.lua setup --branch=testbranch setup_on" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=on.lua setup --branch=testbranch setup_on ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=on.lua setup --branch=testbranch setup_on ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_hook.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints_hook.at:33: test -e setup_on/_MTN/inodeprints"
echo t_inodeprints_hook.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e setup_on/_MTN/inodeprints ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e setup_on/_MTN/inodeprints ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_hook.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints_hook.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=on.lua checkout --revision=\$REV co_on"
echo t_inodeprints_hook.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=on.lua checkout --revision=$REV co_on" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=on.lua checkout --revision=$REV co_on ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=on.lua checkout --revision=$REV co_on ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_hook.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints_hook.at:35: test -e co_on/_MTN/inodeprints"
echo t_inodeprints_hook.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e co_on/_MTN/inodeprints ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e co_on/_MTN/inodeprints ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_hook.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_inodeprints_hook.at:36: test -s co_on/_MTN/inodeprints"
echo t_inodeprints_hook.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -s co_on/_MTN/inodeprints ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -s co_on/_MTN/inodeprints ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_inodeprints_hook.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  195 ) # 195. t_bad_packets.at:1: bad packet args
    at_setup_line='t_bad_packets.at:1'
    at_desc='bad packet args'
    $at_quiet $ECHO_N "195: bad packet args                              $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "195. t_bad_packets.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_bad_packets.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_bad_packets.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_bad_packets.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_bad_packets.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_bad_packets.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_bad_packets.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_bad_packets.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_bad_packets.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_bad_packets.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_bad_packets.at:2: rm test_keys"
echo t_bad_packets.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_bad_packets.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_bad_packets.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate packet_for_fdelta 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f 6c704fbd4ef58f2447fd1a3e76911b2ebe97dc77"
echo t_bad_packets.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate packet_for_fdelta 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f 6c704fbd4ef58f2447fd1a3e76911b2ebe97dc77" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate packet_for_fdelta 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f 6c704fbd4ef58f2447fd1a3e76911b2ebe97dc77 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate packet_for_fdelta 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f 6c704fbd4ef58f2447fd1a3e76911b2ebe97dc77 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_bad_packets.at:4: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_bad_packets.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate packet_for_fdata 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f"
echo t_bad_packets.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate packet_for_fdata 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate packet_for_fdata 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate packet_for_fdata 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_bad_packets.at:5: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_bad_packets.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate packet_for_rdata 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f"
echo t_bad_packets.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate packet_for_rdata 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate packet_for_rdata 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate packet_for_rdata 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_bad_packets.at:6: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_bad_packets.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net pubkey foo@bar"
echo t_bad_packets.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pubkey foo@bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pubkey foo@bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pubkey foo@bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_bad_packets.at:7: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_bad_packets.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net privkey foo@bar"
echo t_bad_packets.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net privkey foo@bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net privkey foo@bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net privkey foo@bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_bad_packets.at:8: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_bad_packets.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate packets_for_certs 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f"
echo t_bad_packets.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate packets_for_certs 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate packets_for_certs 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate packets_for_certs 73070030f7b0d0f3d4ee02545d45ca4bbe5e189f ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_bad_packets.at:10: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_bad_packets.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db check"
echo t_bad_packets.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_bad_packets.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  196 ) # 196. t_multiple_heads_msg.at:3: commit/update multiple heads message
    at_setup_line='t_multiple_heads_msg.at:3'
    at_desc='commit/update multiple heads message'
    $at_quiet $ECHO_N "196: commit/update multiple heads message         $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "196. t_multiple_heads_msg.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_multiple_heads_msg.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_multiple_heads_msg.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_multiple_heads_msg.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:5: rm test_keys"
echo t_multiple_heads_msg.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# Create a single revision in branch1
#
#          root (branch1)
#
# branch1 heads: root

cat >f <<'_ATEOF'
base data
_ATEOF


$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add f"
echo t_multiple_heads_msg.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add f" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add f ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add f ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah"
echo t_multiple_heads_msg.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:18: grep 'creates divergence' stderr >/dev/null"
echo t_multiple_heads_msg.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'creates divergence' stderr >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'creates divergence' stderr >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:18: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

ROOT_R_SHA=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads"
echo t_multiple_heads_msg.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:22: grep \$ROOT_R_SHA stdout >/dev/null"
echo t_multiple_heads_msg.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $ROOT_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $ROOT_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $ROOT_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Create a child
#
#          root (branch1)
#          /
#    child1 (branch1)
#
# branch1 heads: child1

cat >f <<'_ATEOF'
child1 data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah"
echo t_multiple_heads_msg.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:35: grep 'creates divergence' stderr >/dev/null"
echo t_multiple_heads_msg.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'creates divergence' stderr >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'creates divergence' stderr >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:35: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

CHILD1_R_SHA=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads"
echo t_multiple_heads_msg.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 heads ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:39: grep \$ROOT_R_SHA stdout >/dev/null"
echo t_multiple_heads_msg.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $ROOT_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $ROOT_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $ROOT_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:39: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:40: grep \$CHILD1_R_SHA stdout >/dev/null"
echo t_multiple_heads_msg.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $CHILD1_R_SHA stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $CHILD1_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $CHILD1_R_SHA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Create another child
#
#          root (branch1)
#          /           \
#    child1 (branch1)   child2 (branch1)
#
# branch1 heads: child1, child2


$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:50: rm -rf _MTN.old"
echo t_multiple_heads_msg.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:50: mv  _MTN _MTN.old"
echo t_multiple_heads_msg.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:50: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$ROOT_R_SHA ."
echo t_multiple_heads_msg.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$ROOT_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:50: test \$PROBE_R_SHA = \$ROOT_R_SHA"
echo t_multiple_heads_msg.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $ROOT_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $ROOT_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >f <<'_ATEOF'
child2 data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:53: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah"
echo t_multiple_heads_msg.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

CHILD2_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:55: grep 'this revision creates divergence' stderr >/dev/null"
echo t_multiple_heads_msg.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'this revision creates divergence' stderr >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'this revision creates divergence' stderr >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:57: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 update"
echo t_multiple_heads_msg.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:58: grep 'has multiple heads' stderr >/dev/null"
echo t_multiple_heads_msg.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'has multiple heads' stderr >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'has multiple heads' stderr >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Create a new branch
#
#          root (branch1)
#          /           \
#    child1 (branch1)   child2 (branch1)
#        /
#     new1 (branch2)
#
# branch1 heads: child1, child2
# branch2 heads: new2


$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:71: rm -rf _MTN.old"
echo t_multiple_heads_msg.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:71: mv  _MTN _MTN.old"
echo t_multiple_heads_msg.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:71: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$CHILD1_R_SHA ."
echo t_multiple_heads_msg.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$CHILD1_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$CHILD1_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$CHILD1_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:71: test \$PROBE_R_SHA = \$CHILD1_R_SHA"
echo t_multiple_heads_msg.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $CHILD1_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $CHILD1_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $CHILD1_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >f <<'_ATEOF'
new1 data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:75: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah"
echo t_multiple_heads_msg.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

NEW1_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:77: grep 'this revision creates divergence' stderr >/dev/null"
echo t_multiple_heads_msg.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'this revision creates divergence' stderr >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'this revision creates divergence' stderr >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:77: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:79: rm -rf _MTN.old"
echo t_multiple_heads_msg.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:79: mv  _MTN _MTN.old"
echo t_multiple_heads_msg.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:79: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$CHILD2_R_SHA ."
echo t_multiple_heads_msg.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$CHILD2_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$CHILD2_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$CHILD2_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:79: test \$PROBE_R_SHA = \$CHILD2_R_SHA"
echo t_multiple_heads_msg.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $CHILD2_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $CHILD2_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $CHILD2_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >f <<'_ATEOF'
new2 data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:83: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah"
echo t_multiple_heads_msg.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

NEW2_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_multiple_heads_msg.at:85: grep 'this revision creates divergence' stderr >/dev/null"
echo t_multiple_heads_msg.at:85 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'this revision creates divergence' stderr >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'this revision creates divergence' stderr >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_multiple_heads_msg.at:85: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  197 ) # 197. t_diff_currev.at:3: diffing with explicit rev same as wc rev
    at_setup_line='t_diff_currev.at:3'
    at_desc='diffing with explicit rev same as wc rev'
    $at_quiet $ECHO_N "197: diffing with explicit rev same as wc rev     $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "197. t_diff_currev.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_diff_currev.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_diff_currev.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_currev.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_currev.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_diff_currev.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_currev.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_currev.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_diff_currev.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_currev.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_currev.at:5: rm test_keys"
echo t_diff_currev.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_currev.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo1 <<'_ATEOF'
foo file 1
_ATEOF


$at_traceoff
echo "$at_srcdir/t_diff_currev.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo1"
echo t_diff_currev.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_currev.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_currev.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah"
echo t_diff_currev.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_currev.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

parent=`cat _MTN/revision`

# should return 'no changes' (i.e. same as diff without --revision=<current>)

$at_traceoff
echo "$at_srcdir/t_diff_currev.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff"
echo t_diff_currev.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_currev.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_currev.at:15: mv stdout expout"
echo t_diff_currev.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_currev.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_currev.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff --revision=\$parent"
echo t_diff_currev.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision=$parent" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision=$parent ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision=$parent ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_currev.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo1 <<'_ATEOF'
foo changed file
_ATEOF


# should show local changes against wc's base rev

$at_traceoff
echo "$at_srcdir/t_diff_currev.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff"
echo t_diff_currev.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_currev.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_currev.at:21: mv stdout expout"
echo t_diff_currev.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_currev.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_currev.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff --revision=\$parent"
echo t_diff_currev.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision=$parent" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision=$parent ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision=$parent ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_currev.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  198 ) # 198. t_normalized_filenames.at:1: normalized filenames
    at_setup_line='t_normalized_filenames.at:1'
    at_desc='normalized filenames'
    $at_quiet $ECHO_N "198: normalized filenames                         $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "198. t_normalized_filenames.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_normalized_filenames.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_normalized_filenames.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_normalized_filenames.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_normalized_filenames.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_normalized_filenames.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_normalized_filenames.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_normalized_filenames.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_normalized_filenames.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_normalized_filenames.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_normalized_filenames.at:2: rm test_keys"
echo t_normalized_filenames.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_normalized_filenames.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo <<'_ATEOF'
blah blah
_ATEOF

# The UI used to fix these, while later code did not, so let's check
# the inner code directly.
cat >_MTN/work <<'_ATEOF'
add_dir "."
_ATEOF

$at_traceoff
echo "$at_srcdir/t_normalized_filenames.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of"
echo t_normalized_filenames.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   3) ;;
   *) echo "$at_srcdir/t_normalized_filenames.at:10: exit code was $at_status, expected 3"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >_MTN/work <<'_ATEOF'
add_dir "./bar"
_ATEOF


$at_traceoff
echo "$at_srcdir/t_normalized_filenames.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of"
echo t_normalized_filenames.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   3) ;;
   *) echo "$at_srcdir/t_normalized_filenames.at:15: exit code was $at_status, expected 3"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_normalized_filenames.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision"
echo t_normalized_filenames.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   3) ;;
   *) echo "$at_srcdir/t_normalized_filenames.at:16: exit code was $at_status, expected 3"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_normalized_filenames.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message=foo --branch=foo"
echo t_normalized_filenames.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo --branch=foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo --branch=foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message=foo --branch=foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   3) ;;
   *) echo "$at_srcdir/t_normalized_filenames.at:17: exit code was $at_status, expected 3"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  199 ) # 199. t_automate_inventory.at:1: workspace inventory
    at_setup_line='t_automate_inventory.at:1'
    at_desc='workspace inventory'
    $at_quiet $ECHO_N "199: workspace inventory                          $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "199. t_automate_inventory.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_automate_inventory.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_automate_inventory.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_automate_inventory.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:2: rm test_keys"
echo t_automate_inventory.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >inventory_hooks.lua <<'_ATEOF'


function ignore_file(name)
	if (string.find(name, "%~$")) then return true end
	return false
end
_ATEOF



cat >missing <<'_ATEOF'
missing
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add missing"
echo t_automate_inventory.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add missing" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add missing ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add missing ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >dropped <<'_ATEOF'
dropped
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add dropped"
echo t_automate_inventory.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dropped" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dropped ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dropped ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >original <<'_ATEOF'
original
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add original"
echo t_automate_inventory.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add original" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add original ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add original ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >unchanged <<'_ATEOF'
unchanged
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add unchanged"
echo t_automate_inventory.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add unchanged" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add unchanged ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add unchanged ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >patched <<'_ATEOF'
patched
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add patched"
echo t_automate_inventory.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add patched" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add patched ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add patched ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_inventory.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# single status changes


cat >added <<'_ATEOF'
added
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add added"
echo t_automate_inventory.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add added" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add added ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add added ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >unknown <<'_ATEOF'
unknown
_ATEOF

cat >ignored~ <<'_ATEOF'
ignored~
_ATEOF


$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:35: rm missing"
echo t_automate_inventory.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm missing ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm missing ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:36: rm dropped"
echo t_automate_inventory.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm dropped ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm dropped ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:37: mv original renamed"
echo t_automate_inventory.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv original renamed ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv original renamed ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >patched <<'_ATEOF'
something has changed
_ATEOF


$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add added"
echo t_automate_inventory.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add added" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add added ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add added ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename original renamed"
echo t_automate_inventory.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename original renamed" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename original renamed ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename original renamed ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop dropped"
echo t_automate_inventory.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop dropped" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop dropped ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop dropped ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:45: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua"
echo t_automate_inventory.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:46: grep '^  M 0 0 missing\$' stdout"
echo t_automate_inventory.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^  M 0 0 missing$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^  M 0 0 missing$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^  M 0 0 missing$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:47: grep '^ A  0 0 added\$' stdout"
echo t_automate_inventory.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^ A  0 0 added$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^ A  0 0 added$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^ A  0 0 added$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:48: grep '^D   0 0 dropped\$' stdout"
echo t_automate_inventory.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^D   0 0 dropped$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^D   0 0 dropped$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^D   0 0 dropped$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:49: grep '^R   1 0 original\$' stdout"
echo t_automate_inventory.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^R   1 0 original$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^R   1 0 original$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^R   1 0 original$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:50: grep '^ R  0 1 renamed\$' stdout"
echo t_automate_inventory.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^ R  0 1 renamed$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^ R  0 1 renamed$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^ R  0 1 renamed$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:51: grep '^  P 0 0 patched\$' stdout"
echo t_automate_inventory.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^  P 0 0 patched$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^  P 0 0 patched$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^  P 0 0 patched$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:52: grep '^    0 0 unchanged\$' stdout"
echo t_automate_inventory.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^    0 0 unchanged$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^    0 0 unchanged$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^    0 0 unchanged$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:53: grep '^  U 0 0 unknown\$' stdout"
echo t_automate_inventory.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^  U 0 0 unknown$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^  U 0 0 unknown$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^  U 0 0 unknown$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:54: grep '^  I 0 0 ignored~\$' stdout"
echo t_automate_inventory.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^  I 0 0 ignored~$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^  I 0 0 ignored~$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^  I 0 0 ignored~$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# swapped but not moved

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:58: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert ."
echo t_automate_inventory.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:60: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename unchanged temporary"
echo t_automate_inventory.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename unchanged temporary" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename unchanged temporary ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename unchanged temporary ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:61: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename original unchanged"
echo t_automate_inventory.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename original unchanged" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename original unchanged ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename original unchanged ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:62: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename temporary original"
echo t_automate_inventory.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename temporary original" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename temporary original ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename temporary original ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:64: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua"
echo t_automate_inventory.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:64: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:65: grep '^RRP 1 2 original\$' stdout"
echo t_automate_inventory.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^RRP 1 2 original$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^RRP 1 2 original$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^RRP 1 2 original$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:66: grep '^RRP 2 1 unchanged\$' stdout"
echo t_automate_inventory.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^RRP 2 1 unchanged$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^RRP 2 1 unchanged$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^RRP 2 1 unchanged$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:66: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# swapped and moved

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:70: mv unchanged temporary"
echo t_automate_inventory.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv unchanged temporary ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv unchanged temporary ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:71: mv original unchanged"
echo t_automate_inventory.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv original unchanged ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv original unchanged ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:72: mv temporary original"
echo t_automate_inventory.at:72 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv temporary original ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv temporary original ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:72: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:74: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua"
echo t_automate_inventory.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:75: grep '^RR  1 2 original\$' stdout"
echo t_automate_inventory.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^RR  1 2 original$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^RR  1 2 original$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^RR  1 2 original$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:76: grep '^RR  2 1 unchanged\$' stdout"
echo t_automate_inventory.at:76 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^RR  2 1 unchanged$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^RR  2 1 unchanged$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^RR  2 1 unchanged$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:76: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# rename foo bar; add foo

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:80: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert ."
echo t_automate_inventory.at:80 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:80: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:82: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename original renamed"
echo t_automate_inventory.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename original renamed" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename original renamed ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename original renamed ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:83: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add original"
echo t_automate_inventory.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add original" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add original ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add original ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:85: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua"
echo t_automate_inventory.at:85 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:85: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:86: grep '^RA  1 0 original\$' stdout"
echo t_automate_inventory.at:86 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^RA  1 0 original$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^RA  1 0 original$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^RA  1 0 original$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:86: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:87: grep '^ R  0 1 renamed\$' stdout"
echo t_automate_inventory.at:87 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^ R  0 1 renamed$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^ R  0 1 renamed$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^ R  0 1 renamed$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:87: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# rotated but not moved
# - note that things are listed and numbered in path collating order
#   dropped -> missing -> original -> dropped

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:93: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert ."
echo t_automate_inventory.at:93 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:93: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:95: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename original temporary"
echo t_automate_inventory.at:95 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename original temporary" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename original temporary ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename original temporary ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:95: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:96: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename missing original"
echo t_automate_inventory.at:96 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename missing original" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename missing original ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename missing original ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:96: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:97: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename dropped missing"
echo t_automate_inventory.at:97 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename dropped missing" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename dropped missing ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename dropped missing ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:97: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:98: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename temporary dropped"
echo t_automate_inventory.at:98 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename temporary dropped" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename temporary dropped ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename temporary dropped ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:98: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:100: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua"
echo t_automate_inventory.at:100 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:100: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:101: grep '^RRP 1 3 dropped\$' stdout"
echo t_automate_inventory.at:101 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^RRP 1 3 dropped$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^RRP 1 3 dropped$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^RRP 1 3 dropped$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:101: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:102: grep '^RRP 2 1 missing\$' stdout"
echo t_automate_inventory.at:102 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^RRP 2 1 missing$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^RRP 2 1 missing$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^RRP 2 1 missing$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:102: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:103: grep '^RRP 3 2 original\$' stdout"
echo t_automate_inventory.at:103 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^RRP 3 2 original$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^RRP 3 2 original$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^RRP 3 2 original$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:103: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# rotated and moved

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:107: mv original temporary"
echo t_automate_inventory.at:107 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv original temporary ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv original temporary ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:107: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:108: mv missing original"
echo t_automate_inventory.at:108 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv missing original ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv missing original ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:108: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:109: mv dropped missing"
echo t_automate_inventory.at:109 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv dropped missing ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv dropped missing ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:109: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:110: mv temporary dropped"
echo t_automate_inventory.at:110 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv temporary dropped ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv temporary dropped ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:110: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:112: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua"
echo t_automate_inventory.at:112 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:112: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:113: grep '^RR  1 3 dropped\$' stdout"
echo t_automate_inventory.at:113 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^RR  1 3 dropped$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^RR  1 3 dropped$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^RR  1 3 dropped$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:113: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:114: grep '^RR  2 1 missing\$' stdout"
echo t_automate_inventory.at:114 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^RR  2 1 missing$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^RR  2 1 missing$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^RR  2 1 missing$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:114: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:115: grep '^RR  3 2 original\$' stdout"
echo t_automate_inventory.at:115 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^RR  3 2 original$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^RR  3 2 original$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^RR  3 2 original$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:115: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# dropped but not removed and thus unknown

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:119: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert ."
echo t_automate_inventory.at:119 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:119: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:121: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop dropped"
echo t_automate_inventory.at:121 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop dropped" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop dropped ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop dropped ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:121: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:123: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua"
echo t_automate_inventory.at:123 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:123: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:124: grep '^D U 0 0 dropped\$' stdout"
echo t_automate_inventory.at:124 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^D U 0 0 dropped$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^D U 0 0 dropped$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^D U 0 0 dropped$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:124: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# added but removed and thus missing

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:128: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert ."
echo t_automate_inventory.at:128 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:128: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:130: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add added"
echo t_automate_inventory.at:130 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add added" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add added ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add added ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:130: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:131: rm added"
echo t_automate_inventory.at:131 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm added ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm added ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:131: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:133: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua"
echo t_automate_inventory.at:133 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:133: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:134: grep '^ AM 0 0 added\$' stdout"
echo t_automate_inventory.at:134 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^ AM 0 0 added$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^ AM 0 0 added$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^ AM 0 0 added$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:134: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# renamed but not moved and thus unknown source and  missing target

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:138: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert ."
echo t_automate_inventory.at:138 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:138: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:140: rm renamed"
echo t_automate_inventory.at:140 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm renamed ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm renamed ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:140: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:141: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename original renamed"
echo t_automate_inventory.at:141 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename original renamed" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename original renamed ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename original renamed ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:141: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:143: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua"
echo t_automate_inventory.at:143 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:143: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:144: grep '^R U 1 0 original\$' stdout"
echo t_automate_inventory.at:144 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^R U 1 0 original$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^R U 1 0 original$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^R U 1 0 original$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:144: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:145: grep '^ RM 0 1 renamed\$' stdout"
echo t_automate_inventory.at:145 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^ RM 0 1 renamed$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^ RM 0 1 renamed$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^ RM 0 1 renamed$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:145: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# moved but not renamed and thus missing source and unknown target

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:149: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert ."
echo t_automate_inventory.at:149 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:149: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:151: mv original renamed"
echo t_automate_inventory.at:151 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv original renamed ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv original renamed ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:151: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:153: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua"
echo t_automate_inventory.at:153 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:153: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:154: grep '^  M 0 0 original\$' stdout"
echo t_automate_inventory.at:154 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^  M 0 0 original$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^  M 0 0 original$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^  M 0 0 original$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:154: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:155: grep '^  U 0 0 renamed\$' stdout"
echo t_automate_inventory.at:155 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^  U 0 0 renamed$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^  U 0 0 renamed$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^  U 0 0 renamed$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:155: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# renamed and patched

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:159: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert ."
echo t_automate_inventory.at:159 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:159: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >renamed <<'_ATEOF'
renamed and patched
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:163: rm original"
echo t_automate_inventory.at:163 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm original ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm original ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:163: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:165: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename original renamed"
echo t_automate_inventory.at:165 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename original renamed" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename original renamed ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename original renamed ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:165: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:166: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua"
echo t_automate_inventory.at:166 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory --rcfile=inventory_hooks.lua ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:166: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:168: grep '^R   1 0 original\$' stdout"
echo t_automate_inventory.at:168 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^R   1 0 original$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^R   1 0 original$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^R   1 0 original$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:168: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_inventory.at:169: grep '^ RP 0 1 renamed\$' stdout"
echo t_automate_inventory.at:169 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^ RP 0 1 renamed$' stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^ RP 0 1 renamed$' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^ RP 0 1 renamed$' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_inventory.at:169: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# need tests for deleted and renamed directories, once these actually work!

      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  200 ) # 200. t_rename_file_to_dir.at:1: rename file to dir
    at_setup_line='t_rename_file_to_dir.at:1'
    at_desc='rename file to dir'
    $at_quiet $ECHO_N "200: rename file to dir                           $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "200. t_rename_file_to_dir.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_rename_file_to_dir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_rename_file_to_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_file_to_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_file_to_dir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_rename_file_to_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_file_to_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_file_to_dir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_rename_file_to_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_file_to_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_file_to_dir.at:2: rm test_keys"
echo t_rename_file_to_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_file_to_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# this test is a bug report
# the situation where a file is renamed to a dir should be trapped and
# reported with N(...) or something




cat >file <<'_ATEOF'
file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_file_to_dir.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file"
echo t_rename_file_to_dir.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_file_to_dir.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rename_file_to_dir.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_rename_file_to_dir.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_file_to_dir.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rename_file_to_dir.at:14: mkdir dir"
echo t_rename_file_to_dir.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_file_to_dir.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_file_to_dir.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename file dir"
echo t_rename_file_to_dir.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename file dir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename file dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename file dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_file_to_dir.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_file_to_dir.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_rename_file_to_dir.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   3) ;;
   *) echo "$at_srcdir/t_rename_file_to_dir.at:16: exit code was $at_status, expected 3"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_file_to_dir.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff"
echo t_rename_file_to_dir.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   3) ;;
   *) echo "$at_srcdir/t_rename_file_to_dir.at:17: exit code was $at_status, expected 3"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_file_to_dir.at:19: false"
echo t_rename_file_to_dir.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; false ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; false ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_file_to_dir.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  201 ) # 201. t_replace_file_with_dir.at:1: replace file with dir
    at_setup_line='t_replace_file_with_dir.at:1'
    at_desc='replace file with dir'
    $at_quiet $ECHO_N "201: replace file with dir                        $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "201. t_replace_file_with_dir.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_replace_file_with_dir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_replace_file_with_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_replace_file_with_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_replace_file_with_dir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_replace_file_with_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_replace_file_with_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_replace_file_with_dir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_replace_file_with_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_replace_file_with_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_replace_file_with_dir.at:2: rm test_keys"
echo t_replace_file_with_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_replace_file_with_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# this test is a bug report
# the situation where a file is replaced by a dir should be trapped and
# reported with N(...) or something




cat >file <<'_ATEOF'
file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_replace_file_with_dir.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file"
echo t_replace_file_with_dir.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_replace_file_with_dir.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_replace_file_with_dir.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_replace_file_with_dir.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_replace_file_with_dir.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_replace_file_with_dir.at:14: rm file"
echo t_replace_file_with_dir.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_replace_file_with_dir.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_replace_file_with_dir.at:15: mkdir file"
echo t_replace_file_with_dir.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_replace_file_with_dir.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_replace_file_with_dir.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_replace_file_with_dir.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   3) ;;
   *) echo "$at_srcdir/t_replace_file_with_dir.at:16: exit code was $at_status, expected 3"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_replace_file_with_dir.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff"
echo t_replace_file_with_dir.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   3) ;;
   *) echo "$at_srcdir/t_replace_file_with_dir.at:17: exit code was $at_status, expected 3"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_replace_file_with_dir.at:19: false"
echo t_replace_file_with_dir.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; false ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; false ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_replace_file_with_dir.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  202 ) # 202. t_replace_dir_with_file.at:1: replace dir with file
    at_setup_line='t_replace_dir_with_file.at:1'
    at_desc='replace dir with file'
    $at_quiet $ECHO_N "202: replace dir with file                        $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "202. t_replace_dir_with_file.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_replace_dir_with_file.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_replace_dir_with_file.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_replace_dir_with_file.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_replace_dir_with_file.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_replace_dir_with_file.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_replace_dir_with_file.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_replace_dir_with_file.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_replace_dir_with_file.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_replace_dir_with_file.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_replace_dir_with_file.at:2: rm test_keys"
echo t_replace_dir_with_file.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_replace_dir_with_file.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_replace_dir_with_file.at:4: mkdir dir"
echo t_replace_dir_with_file.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_replace_dir_with_file.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >dir/file <<'_ATEOF'
file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_replace_dir_with_file.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add dir/file"
echo t_replace_dir_with_file.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir/file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir/file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir/file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_replace_dir_with_file.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_replace_dir_with_file.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_replace_dir_with_file.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_replace_dir_with_file.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_replace_dir_with_file.at:9: rm -rf dir"
echo t_replace_dir_with_file.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_replace_dir_with_file.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >dir <<'_ATEOF'
this isn't a directory
_ATEOF


$at_traceoff
echo "$at_srcdir/t_replace_dir_with_file.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_replace_dir_with_file.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_replace_dir_with_file.at:13: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_replace_dir_with_file.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff"
echo t_replace_dir_with_file.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_replace_dir_with_file.at:14: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  203 ) # 203. t_parents_children.at:1: automate parents, automate children
    at_setup_line='t_parents_children.at:1'
    at_desc='automate parents, automate children'
    $at_quiet $ECHO_N "203: automate parents, automate children          $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "203. t_parents_children.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_parents_children.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_parents_children.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_parents_children.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_parents_children.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:2: rm test_keys"
echo t_parents_children.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_parents_children.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate parents c7539264e83c5d6af4c792f079b5d46e9c128665"
echo t_parents_children.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate parents c7539264e83c5d6af4c792f079b5d46e9c128665" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate parents c7539264e83c5d6af4c792f079b5d46e9c128665 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate parents c7539264e83c5d6af4c792f079b5d46e9c128665 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_parents_children.at:4: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate children c7539264e83c5d6af4c792f079b5d46e9c128665"
echo t_parents_children.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate children c7539264e83c5d6af4c792f079b5d46e9c128665" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate children c7539264e83c5d6af4c792f079b5d46e9c128665 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate children c7539264e83c5d6af4c792f079b5d46e9c128665 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_parents_children.at:5: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


#   A
#  / \
# B   C
#     |\
#     D E
#     \/
#      F


cat >testfile <<'_ATEOF'
A
_ATEOF

$at_traceoff
echo "$at_srcdir/t_parents_children.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_parents_children.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_parents_children.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_parents_children.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_A=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
B
_ATEOF



$at_traceoff
echo "$at_srcdir/t_parents_children.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_parents_children.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_B=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_parents_children.at:25: rm -rf _MTN.old"
echo t_parents_children.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:25: mv  _MTN _MTN.old"
echo t_parents_children.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV_A ."
echo t_parents_children.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_parents_children.at:25: test \$PROBE_R_SHA = \$REV_A"
echo t_parents_children.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
C
_ATEOF



$at_traceoff
echo "$at_srcdir/t_parents_children.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_parents_children.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_C=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
D
_ATEOF



$at_traceoff
echo "$at_srcdir/t_parents_children.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_parents_children.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_D=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_parents_children.at:37: rm -rf _MTN.old"
echo t_parents_children.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:37: mv  _MTN _MTN.old"
echo t_parents_children.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV_C ."
echo t_parents_children.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_C ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_C . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_C . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_parents_children.at:37: test \$PROBE_R_SHA = \$REV_C"
echo t_parents_children.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $REV_C" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $REV_C ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $REV_C ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >otherfile <<'_ATEOF'
E
_ATEOF

$at_traceoff
echo "$at_srcdir/t_parents_children.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add otherfile"
echo t_parents_children.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_parents_children.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_parents_children.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_E=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_parents_children.at:44: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net explicit_merge \$REV_D \$REV_E testbranch"
echo t_parents_children.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV_D $REV_E testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV_D $REV_E testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV_D $REV_E testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:45: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_parents_children.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REV_F=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_parents_children.at:48: test \$REV_F != \$REV_D"
echo t_parents_children.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $REV_F != $REV_D" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $REV_F != $REV_D ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $REV_F != $REV_D ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:49: test \$REV_F != \$REV_E"
echo t_parents_children.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $REV_F != $REV_E" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $REV_F != $REV_E ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $REV_F != $REV_E ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Now do some checks

$at_traceoff
echo "$at_srcdir/t_parents_children.at:53: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate parents \$REV_A"
echo t_parents_children.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate parents $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate parents $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate parents $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:54: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate children \$REV_B"
echo t_parents_children.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate children $REV_B" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate children $REV_B ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate children $REV_B ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:55: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate children \$REV_F"
echo t_parents_children.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate children $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate children $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate children $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_parents_children.at:57: echo \$REV_A > tmp"
echo t_parents_children.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A > tmp" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A > tmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A > tmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:58: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate parents \$REV_B"
echo t_parents_children.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate parents $REV_B" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate parents $REV_B ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate parents $REV_B ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:59:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_parents_children.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:60: cmp tmp stdout"
echo t_parents_children.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp tmp stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp tmp stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_parents_children.at:62: echo \$REV_A > tmp"
echo t_parents_children.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A > tmp" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A > tmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A > tmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:63: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate parents \$REV_C"
echo t_parents_children.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate parents $REV_C" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate parents $REV_C ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate parents $REV_C ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:64:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_parents_children.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:64: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:65: cmp tmp stdout"
echo t_parents_children.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp tmp stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp tmp stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_parents_children.at:67: echo \$REV_C > tmp"
echo t_parents_children.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_C > tmp" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_C > tmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_C > tmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:67: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:68: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate parents \$REV_D"
echo t_parents_children.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate parents $REV_D" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate parents $REV_D ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate parents $REV_D ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:69:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_parents_children.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:70: cmp tmp stdout"
echo t_parents_children.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp tmp stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp tmp stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_parents_children.at:72: echo \$REV_C > tmp"
echo t_parents_children.at:72 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_C > tmp" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_C > tmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_C > tmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:72: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:73: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate parents \$REV_E"
echo t_parents_children.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate parents $REV_E" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate parents $REV_E ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate parents $REV_E ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:73: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:74:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_parents_children.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:75: cmp tmp stdout"
echo t_parents_children.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp tmp stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp tmp stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_parents_children.at:77: echo \$REV_D >revs_de.unsorted"
echo t_parents_children.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_D >revs_de.unsorted" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_D >revs_de.unsorted ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_D >revs_de.unsorted ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:78: echo \$REV_E >>revs_de.unsorted"
echo t_parents_children.at:78 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_E >>revs_de.unsorted" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_E >>revs_de.unsorted ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_E >>revs_de.unsorted ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:78: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:79: sort revs_de.unsorted > revs_de"
echo t_parents_children.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sort revs_de.unsorted > revs_de ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sort revs_de.unsorted > revs_de ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:80: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate parents \$REV_F"
echo t_parents_children.at:80 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate parents $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate parents $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate parents $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:80: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:81:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_parents_children.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:81: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:82: cmp revs_de stdout"
echo t_parents_children.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp revs_de stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp revs_de stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_parents_children.at:84: echo \$REV_F > tmp"
echo t_parents_children.at:84 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_F > tmp" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_F > tmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_F > tmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:84: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:85: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate children \$REV_D"
echo t_parents_children.at:85 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate children $REV_D" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate children $REV_D ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate children $REV_D ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:85: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:86:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_parents_children.at:86 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:86: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:87: cmp tmp stdout"
echo t_parents_children.at:87 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp tmp stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp tmp stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:87: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_parents_children.at:89: echo \$REV_F > tmp"
echo t_parents_children.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_F > tmp" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_F > tmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_F > tmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:89: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:90: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate children \$REV_E"
echo t_parents_children.at:90 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate children $REV_E" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate children $REV_E ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate children $REV_E ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:90: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:91:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_parents_children.at:91 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:91: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:92: cmp tmp stdout"
echo t_parents_children.at:92 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp tmp stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp tmp stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:92: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_parents_children.at:94: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate children \$REV_C"
echo t_parents_children.at:94 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate children $REV_C" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate children $REV_C ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate children $REV_C ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:94: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:95:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_parents_children.at:95 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:95: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:96: cmp revs_de stdout"
echo t_parents_children.at:96 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp revs_de stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp revs_de stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:96: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_parents_children.at:98: echo \$REV_B >revs_bc.unsorted"
echo t_parents_children.at:98 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_B >revs_bc.unsorted" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_B >revs_bc.unsorted ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_B >revs_bc.unsorted ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:98: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:99: echo \$REV_C >>revs_bc.unsorted"
echo t_parents_children.at:99 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_C >>revs_bc.unsorted" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_C >>revs_bc.unsorted ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_C >>revs_bc.unsorted ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:99: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:100: sort revs_bc.unsorted > revs_bc"
echo t_parents_children.at:100 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sort revs_bc.unsorted > revs_bc ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sort revs_bc.unsorted > revs_bc ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:100: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:101: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate children \$REV_A"
echo t_parents_children.at:101 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate children $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate children $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate children $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:101: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:102:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_parents_children.at:102 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:102: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_parents_children.at:103: cmp revs_bc stdout"
echo t_parents_children.at:103 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp revs_bc stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp revs_bc stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_parents_children.at:103: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  204 ) # 204. t_automate_graph.at:1: automate graph
    at_setup_line='t_automate_graph.at:1'
    at_desc='automate graph'
    $at_quiet $ECHO_N "204: automate graph                               $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "204. t_automate_graph.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_automate_graph.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_automate_graph.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_graph.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_automate_graph.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_graph.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_automate_graph.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_graph.at:2: rm test_keys"
echo t_automate_graph.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_graph.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate graph"
echo t_automate_graph.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate graph" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate graph ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate graph ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


#   A
#  / \
# B   C
#     |\
#     D E
#     \/
#      F


cat >testfile <<'_ATEOF'
A
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_graph.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_automate_graph.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_graph.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_graph.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_A=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
B
_ATEOF



$at_traceoff
echo "$at_srcdir/t_automate_graph.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_graph.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_B=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_automate_graph.at:24: rm -rf _MTN.old"
echo t_automate_graph.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_graph.at:24: mv  _MTN _MTN.old"
echo t_automate_graph.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_graph.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV_A ."
echo t_automate_graph.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_automate_graph.at:24: test \$PROBE_R_SHA = \$REV_A"
echo t_automate_graph.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
C
_ATEOF



$at_traceoff
echo "$at_srcdir/t_automate_graph.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_graph.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_C=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
D
_ATEOF



$at_traceoff
echo "$at_srcdir/t_automate_graph.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_graph.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_D=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_automate_graph.at:36: rm -rf _MTN.old"
echo t_automate_graph.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_graph.at:36: mv  _MTN _MTN.old"
echo t_automate_graph.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_graph.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV_C ."
echo t_automate_graph.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_C ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_C . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_C . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_automate_graph.at:36: test \$PROBE_R_SHA = \$REV_C"
echo t_automate_graph.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $REV_C" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $REV_C ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $REV_C ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >otherfile <<'_ATEOF'
E
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_graph.at:39: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add otherfile"
echo t_automate_graph.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_graph.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_graph.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_E=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_automate_graph.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net explicit_merge \$REV_D \$REV_E testbranch"
echo t_automate_graph.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV_D $REV_E testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV_D $REV_E testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV_D $REV_E testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_graph.at:44: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_automate_graph.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REV_F=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_automate_graph.at:47: test \$REV_F != \$REV_D"
echo t_automate_graph.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $REV_F != $REV_D" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $REV_F != $REV_D ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $REV_F != $REV_D ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_graph.at:48: test \$REV_F != \$REV_E"
echo t_automate_graph.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $REV_F != $REV_E" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $REV_F != $REV_E ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $REV_F != $REV_E ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Now do some checks

$at_traceoff
echo "$at_srcdir/t_automate_graph.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate graph"
echo t_automate_graph.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate graph" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate graph ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate graph ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_graph.at:53:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_graph.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_graph.at:55: echo \$REV_A >>graph"
echo t_automate_graph.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A >>graph" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A >>graph ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A >>graph ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_graph.at:56: echo \$REV_B \$REV_A >>graph"
echo t_automate_graph.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_B $REV_A >>graph" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_B $REV_A >>graph ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_B $REV_A >>graph ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_graph.at:57: echo \$REV_C \$REV_A >>graph"
echo t_automate_graph.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_C $REV_A >>graph" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_C $REV_A >>graph ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_C $REV_A >>graph ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_graph.at:58: echo \$REV_D \$REV_C >>graph"
echo t_automate_graph.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_D $REV_C >>graph" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_D $REV_C >>graph ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_D $REV_C >>graph ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_graph.at:59: echo \$REV_E \$REV_C >>graph"
echo t_automate_graph.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_E $REV_C >>graph" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_E $REV_C >>graph ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_E $REV_C >>graph ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_graph.at:60: echo \$REV_F \`(echo \$REV_D; echo \$REV_E) | sort\` >>graph"
echo t_automate_graph.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_F `(echo $REV_D; echo $REV_E) | sort` >>graph ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_F `(echo $REV_D; echo $REV_E) | sort` >>graph ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_graph.at:61: sort graph > graph.sorted"
echo t_automate_graph.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sort graph > graph.sorted ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sort graph > graph.sorted ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_graph.at:63: cmp stdout graph.sorted"
echo t_automate_graph.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout graph.sorted ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout graph.sorted ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_graph.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  205 ) # 205. t_i18n_file_data.at:1: files with non-utf8 data
    at_setup_line='t_i18n_file_data.at:1'
    at_desc='files with non-utf8 data'
    $at_quiet $ECHO_N "205: files with non-utf8 data                     $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "205. t_i18n_file_data.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_i18n_file_data.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_i18n_file_data.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_i18n_file_data.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:2: rm test_keys"
echo t_i18n_file_data.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >ru-8859-5.gz.b64 <<'_ATEOF'
H4sICA/DbUICA3J1LWFscGhhYmV0Ljg4NTktNQBNzEdKQ1EAQNH5W8XZQJwJ0akjR4JZwTME
EvhKyP8uyB3Ye++99957wR2oM6f3wG3tTNNK7BCTajm2lbK60FxoyeXz9Q25esVyrMViVqpJ
/yQU2mOSSErZb0obQ9i2Y9eefQe+HTpy7MSpM+cuXLpy7catO/cePHry7MWrN+8+fPoKoSlW
K1n8P+3Wo1effgO6DBoybMSoMeMmTJoybcasOfMWLFqybMWqNes2bNoK4QcEmO6X1QAAAA==
_ATEOF


cat >ru-utf8.gz.b64 <<'_ATEOF'
H4sICL/EbUICA3V0ZjgAVc05TkJhGEbh/l/F2QB0JGhrRWUiK/glN4Hkagj32osi4ojzPI8I
CM44u4X325FY2p5TPCMTUVTw4/iwmPejQZx0mexwIp1ODSRS5PK+5HNxUCL6Oy475sOQMIj7
KRp0TnfoHj2gR/SEnrFV9IJ66BW9oXf0gT7RF/pGP9gkVsamsGmsgs1gVWwWq2Fz2Dy2gC1i
S9gyVnduyBcLsf+nrqA+s4bW0QbaRGW0hbbRDtpFe2gfHaBDdISO0Qk6RWfoHF2gS3SFrlED
3aAmaqE2ukUd1HXuF5Oh9TwXAQAA
_ATEOF


cat >jp-euc.gz.b64 <<'_ATEOF'
H4sICHpGOzECA2pwLWV1Yy50eHQAATcAyP+ks6TspM9FVUMtSlCkx6Wzobylx6WjpfOlsKS1
pOykv8b8y9y47KTOpdWloaWkpeukx6S5oaMKf3eNizcAAAA=
_ATEOF


cat >jp-utf8.gz.b64 <<'_ATEOF'
H4sICPPPbUICA2pwLXV0ZjgudHh0AHvcOPlxU8/jxvWuoc66XgGPG5c/btr8uHnP4+b2x02L
Hzdvfty04XHjVLCa+c+mL302Z82LVfMeN6573AwUXPi4acnj5tUgXY0zHzc0cQEAMBwsQE8A
AAA=
_ATEOF




if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:26: echo \$UNB64_COMMAND"
echo t_i18n_file_data.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test -n "`command -v gunzip`" 2>/dev/null; then
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  UNGZ_COMMAND="gunzip -c"
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:26: echo \$UNGZ_COMMAND"
echo t_i18n_file_data.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNGZ_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:28: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o ru-8859-5.gz ru-8859-5.gz.b64
else
  \$UNB64_COMMAND <ru-8859-5.gz.b64 >ru-8859-5.gz
fi
"
echo t_i18n_file_data.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o ru-8859-5.gz ru-8859-5.gz.b64
else
  $UNB64_COMMAND <ru-8859-5.gz.b64 >ru-8859-5.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o ru-8859-5.gz ru-8859-5.gz.b64
else
  $UNB64_COMMAND <ru-8859-5.gz.b64 >ru-8859-5.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:28: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"ru-8859-5.gz\" != \"ru-8859-5.gz\"; then
    mv ru-8859-5.gz ru-8859-5.gz
  fi
  gunzip ru-8859-5.gz
else
  \$UNGZ_COMMAND <ru-8859-5.gz >ru-8859-5
fi
"
echo t_i18n_file_data.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "ru-8859-5.gz" != "ru-8859-5.gz"; then
    mv ru-8859-5.gz ru-8859-5.gz
  fi
  gunzip ru-8859-5.gz
else
  $UNGZ_COMMAND <ru-8859-5.gz >ru-8859-5
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "ru-8859-5.gz" != "ru-8859-5.gz"; then
    mv ru-8859-5.gz ru-8859-5.gz
  fi
  gunzip ru-8859-5.gz
else
  $UNGZ_COMMAND <ru-8859-5.gz >ru-8859-5
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:29: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o ru-utf8.gz ru-utf8.gz.b64
else
  \$UNB64_COMMAND <ru-utf8.gz.b64 >ru-utf8.gz
fi
"
echo t_i18n_file_data.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o ru-utf8.gz ru-utf8.gz.b64
else
  $UNB64_COMMAND <ru-utf8.gz.b64 >ru-utf8.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o ru-utf8.gz ru-utf8.gz.b64
else
  $UNB64_COMMAND <ru-utf8.gz.b64 >ru-utf8.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:29: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"ru-utf8.gz\" != \"ru-utf8.gz\"; then
    mv ru-utf8.gz ru-utf8.gz
  fi
  gunzip ru-utf8.gz
else
  \$UNGZ_COMMAND <ru-utf8.gz >ru-utf8
fi
"
echo t_i18n_file_data.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "ru-utf8.gz" != "ru-utf8.gz"; then
    mv ru-utf8.gz ru-utf8.gz
  fi
  gunzip ru-utf8.gz
else
  $UNGZ_COMMAND <ru-utf8.gz >ru-utf8
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "ru-utf8.gz" != "ru-utf8.gz"; then
    mv ru-utf8.gz ru-utf8.gz
  fi
  gunzip ru-utf8.gz
else
  $UNGZ_COMMAND <ru-utf8.gz >ru-utf8
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:30: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o jp-euc.gz jp-euc.gz.b64
else
  \$UNB64_COMMAND <jp-euc.gz.b64 >jp-euc.gz
fi
"
echo t_i18n_file_data.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o jp-euc.gz jp-euc.gz.b64
else
  $UNB64_COMMAND <jp-euc.gz.b64 >jp-euc.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o jp-euc.gz jp-euc.gz.b64
else
  $UNB64_COMMAND <jp-euc.gz.b64 >jp-euc.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:30: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"jp-euc.gz\" != \"jp-euc.gz\"; then
    mv jp-euc.gz jp-euc.gz
  fi
  gunzip jp-euc.gz
else
  \$UNGZ_COMMAND <jp-euc.gz >jp-euc
fi
"
echo t_i18n_file_data.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "jp-euc.gz" != "jp-euc.gz"; then
    mv jp-euc.gz jp-euc.gz
  fi
  gunzip jp-euc.gz
else
  $UNGZ_COMMAND <jp-euc.gz >jp-euc
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "jp-euc.gz" != "jp-euc.gz"; then
    mv jp-euc.gz jp-euc.gz
  fi
  gunzip jp-euc.gz
else
  $UNGZ_COMMAND <jp-euc.gz >jp-euc
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:31: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o jp-utf8.gz jp-utf8.gz.b64
else
  \$UNB64_COMMAND <jp-utf8.gz.b64 >jp-utf8.gz
fi
"
echo t_i18n_file_data.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o jp-utf8.gz jp-utf8.gz.b64
else
  $UNB64_COMMAND <jp-utf8.gz.b64 >jp-utf8.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o jp-utf8.gz jp-utf8.gz.b64
else
  $UNB64_COMMAND <jp-utf8.gz.b64 >jp-utf8.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:31: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"jp-utf8.gz\" != \"jp-utf8.gz\"; then
    mv jp-utf8.gz jp-utf8.gz
  fi
  gunzip jp-utf8.gz
else
  \$UNGZ_COMMAND <jp-utf8.gz >jp-utf8
fi
"
echo t_i18n_file_data.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "jp-utf8.gz" != "jp-utf8.gz"; then
    mv jp-utf8.gz jp-utf8.gz
  fi
  gunzip jp-utf8.gz
else
  $UNGZ_COMMAND <jp-utf8.gz >jp-utf8
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "jp-utf8.gz" != "jp-utf8.gz"; then
    mv jp-utf8.gz jp-utf8.gz
  fi
  gunzip jp-utf8.gz
else
  $UNGZ_COMMAND <jp-utf8.gz >jp-utf8
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >8859-5.lua <<'_ATEOF'

function get_charset_conv(name)
    return { "UTF-8", "ISO-8859-5" }
end
_ATEOF


cat >euc.lua <<'_ATEOF'

function get_charset_conv(name)
    return { "UTF-8", "EUC-JP" }
end
_ATEOF


# Create a mock base revision to revert back to

cat >blah <<'_ATEOF'
foo foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:47: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add blah"
echo t_i18n_file_data.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:48: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_i18n_file_data.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


BASE_R=`cat _MTN/revision`

# Test 8859-5 (Russian) conversions.

$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:53: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=8859-5.lua add ru-8859-5"
echo t_i18n_file_data.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=8859-5.lua add ru-8859-5" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=8859-5.lua add ru-8859-5 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=8859-5.lua add ru-8859-5 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:54: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=8859-5.lua commit --message=foo"
echo t_i18n_file_data.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=8859-5.lua commit --message=foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=8859-5.lua commit --message=foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=8859-5.lua commit --message=foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

RU_R=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:56: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=8859-5.lua checkout --revision=\$RU_R co-ru-8859-5"
echo t_i18n_file_data.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=8859-5.lua checkout --revision=$RU_R co-ru-8859-5" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=8859-5.lua checkout --revision=$RU_R co-ru-8859-5 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=8859-5.lua checkout --revision=$RU_R co-ru-8859-5 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:57: cmp ru-8859-5 co-ru-8859-5/ru-8859-5"
echo t_i18n_file_data.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp ru-8859-5 co-ru-8859-5/ru-8859-5 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp ru-8859-5 co-ru-8859-5/ru-8859-5 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:58: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$RU_R co-ru-utf8"
echo t_i18n_file_data.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$RU_R co-ru-utf8" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$RU_R co-ru-utf8 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$RU_R co-ru-utf8 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:59: cmp ru-utf8 co-ru-utf8/ru-8859-5"
echo t_i18n_file_data.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp ru-utf8 co-ru-utf8/ru-8859-5 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp ru-utf8 co-ru-utf8/ru-8859-5 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:61: rm -rf _MTN.old"
echo t_i18n_file_data.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:61: mv  _MTN _MTN.old"
echo t_i18n_file_data.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:61: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE_R ."
echo t_i18n_file_data.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:61: test \$PROBE_R_SHA = \$BASE_R"
echo t_i18n_file_data.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# Test EUC-JP (Japanese) conversions.

$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:65: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=euc.lua add jp-euc"
echo t_i18n_file_data.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=euc.lua add jp-euc" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=euc.lua add jp-euc ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=euc.lua add jp-euc ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:66: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=euc.lua commit --message=foo"
echo t_i18n_file_data.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=euc.lua commit --message=foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=euc.lua commit --message=foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=euc.lua commit --message=foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:66: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

JP_R=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:68: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=euc.lua checkout --revision=\$JP_R co-jp-euc"
echo t_i18n_file_data.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=euc.lua checkout --revision=$JP_R co-jp-euc" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=euc.lua checkout --revision=$JP_R co-jp-euc ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=euc.lua checkout --revision=$JP_R co-jp-euc ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:69: cmp jp-euc co-jp-euc/jp-euc"
echo t_i18n_file_data.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp jp-euc co-jp-euc/jp-euc ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp jp-euc co-jp-euc/jp-euc ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:70: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$JP_R co-jp-utf8"
echo t_i18n_file_data.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$JP_R co-jp-utf8" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$JP_R co-jp-utf8 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$JP_R co-jp-utf8 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_i18n_file_data.at:71: cmp jp-utf8 co-jp-utf8/jp-euc"
echo t_i18n_file_data.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp jp-utf8 co-jp-utf8/jp-euc ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp jp-utf8 co-jp-utf8/jp-euc ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_i18n_file_data.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  206 ) # 206. t_cvsimport_manifest_cycle.at:3: cvs import, file dead on head and branch
    at_setup_line='t_cvsimport_manifest_cycle.at:3'
    at_desc='cvs import, file dead on head and branch'
    $at_quiet $ECHO_N "206: cvs import, file dead on head and branch     $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "206. t_cvsimport_manifest_cycle.at:3: testing ..."
      $at_traceon




if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_cvsimport_manifest_cycle.at:5: echo \$UNB64_COMMAND"
echo t_cvsimport_manifest_cycle.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_manifest_cycle.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test -n "`command -v gunzip`" 2>/dev/null; then
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  UNGZ_COMMAND="gunzip -c"
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_cvsimport_manifest_cycle.at:5: echo \$UNGZ_COMMAND"
echo t_cvsimport_manifest_cycle.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNGZ_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_manifest_cycle.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon






# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_cvsimport_manifest_cycle.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_cvsimport_manifest_cycle.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_manifest_cycle.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_manifest_cycle.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_cvsimport_manifest_cycle.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_manifest_cycle.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_manifest_cycle.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_cvsimport_manifest_cycle.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_manifest_cycle.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_manifest_cycle.at:7: rm test_keys"
echo t_cvsimport_manifest_cycle.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_manifest_cycle.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



CVSROOT=`pwd`/cvs-repository
$at_traceoff
echo "$at_srcdir/t_cvsimport_manifest_cycle.at:10: cvs -q -d \$CVSROOT init"
echo t_cvsimport_manifest_cycle.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -q -d $CVSROOT init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -q -d $CVSROOT init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -q -d $CVSROOT init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_manifest_cycle.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_manifest_cycle.at:11: test -e \$CVSROOT"
echo t_cvsimport_manifest_cycle.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test -e $CVSROOT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e $CVSROOT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e $CVSROOT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_manifest_cycle.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_manifest_cycle.at:12: test -e \$CVSROOT/CVSROOT"
echo t_cvsimport_manifest_cycle.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test -e $CVSROOT/CVSROOT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e $CVSROOT/CVSROOT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e $CVSROOT/CVSROOT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_manifest_cycle.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_manifest_cycle.at:13: test -e \$CVSROOT/CVSROOT/modules"
echo t_cvsimport_manifest_cycle.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test -e $CVSROOT/CVSROOT/modules" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e $CVSROOT/CVSROOT/modules ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e $CVSROOT/CVSROOT/modules ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_manifest_cycle.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >cvsfile.gz.enc <<'_ATEOF'
H4sICJBDd0ICA2N2c2ZpbGUsdgB9kU+PwiAQxc+dT0Gyd1LqX5ZLq/G6Fy/aS4Mt2sYWDKBxv/1C2ygaswmXefPmxxuoBa8ighMGvCyFMQzMb3dQrYEoW62L7f5nXWTfzhDUq6HO8/yl/6jH/m6f5/tdQQrqaoJjTOJQLFbZduM7gbgcnctQ+2RcjMZ5qAVGl3V0TIfgz9ZNVroglFKSxMs37HwcCtPPH7MMWlWeDUPG6qa0DErVdULaKP1CKQMAv3bFrYiSOHaYGU4oThIcUzxJWMSvtlYadepqBIuMdUZUuedncNBclrVwjy/F3Ub9VeCT9TBKPYE4OMFTgifkM2pzvzxJ4CF46kE9cuB5IQy4wLFT3Mcs8GT2oBouLf83oN+1EqaENB23btUJUi06dRPo2LQCQwrWWSG1dWOQOxy1jRRIHZHXfX9YsZ9suovS9m1ydPShe1cn9Emg2iXqMfoqz6iRViH3wWiI+Dr9B+M+Ez/dAgAA
_ATEOF


$at_traceoff
echo "$at_srcdir/t_cvsimport_manifest_cycle.at:18: mkdir \$CVSROOT/attest"
echo t_cvsimport_manifest_cycle.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "mkdir $CVSROOT/attest" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir $CVSROOT/attest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir $CVSROOT/attest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_manifest_cycle.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_cvsimport_manifest_cycle.at:19: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o cvsfile.gz cvsfile.gz.enc
else
  \$UNB64_COMMAND <cvsfile.gz.enc >cvsfile.gz
fi
"
echo t_cvsimport_manifest_cycle.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o cvsfile.gz cvsfile.gz.enc
else
  $UNB64_COMMAND <cvsfile.gz.enc >cvsfile.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o cvsfile.gz cvsfile.gz.enc
else
  $UNB64_COMMAND <cvsfile.gz.enc >cvsfile.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_manifest_cycle.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_manifest_cycle.at:19: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"cvsfile.gz\" != \"cvsfile.gz\"; then
    mv cvsfile.gz cvsfile.gz
  fi
  gunzip cvsfile.gz
else
  \$UNGZ_COMMAND <cvsfile.gz >cvsfile
fi
"
echo t_cvsimport_manifest_cycle.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "cvsfile.gz" != "cvsfile.gz"; then
    mv cvsfile.gz cvsfile.gz
  fi
  gunzip cvsfile.gz
else
  $UNGZ_COMMAND <cvsfile.gz >cvsfile
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "cvsfile.gz" != "cvsfile.gz"; then
    mv cvsfile.gz cvsfile.gz
  fi
  gunzip cvsfile.gz
else
  $UNGZ_COMMAND <cvsfile.gz >cvsfile
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_manifest_cycle.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Autotest doesn't like files with commas in the name, so we rename it
# ourselves.
mv cvsfile $CVSROOT/attest/cvsfile,v

$at_traceoff
echo "$at_srcdir/t_cvsimport_manifest_cycle.at:24: cvs -d \$CVSROOT co -rABC_BASE attest"
echo t_cvsimport_manifest_cycle.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT co -rABC_BASE attest" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT co -rABC_BASE attest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT co -rABC_BASE attest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_manifest_cycle.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

TSHA0=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify attest/cvsfile`

# import into monotone and check presence of files

$at_traceoff
echo "$at_srcdir/t_cvsimport_manifest_cycle.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch cvs_import \$CVSROOT/attest"
echo t_cvsimport_manifest_cycle.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch cvs_import $CVSROOT/attest" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch cvs_import $CVSROOT/attest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch cvs_import $CVSROOT/attest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_manifest_cycle.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_cvsimport_manifest_cycle.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_file \$TSHA0"
echo t_cvsimport_manifest_cycle.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_manifest_cycle.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  207 ) # 207. t_select_cert.at:1: selecting arbitrary certs
    at_setup_line='t_select_cert.at:1'
    at_desc='selecting arbitrary certs'
    $at_quiet $ECHO_N "207: selecting arbitrary certs                    $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "207. t_select_cert.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_select_cert.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_select_cert.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_select_cert.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_select_cert.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_select_cert.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_select_cert.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_select_cert.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_select_cert.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_select_cert.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_select_cert.at:2: rm test_keys"
echo t_select_cert.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_select_cert.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
this is just a file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_select_cert.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_select_cert.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_select_cert.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_select_cert.at:6: cp testfile testfile1"
echo t_select_cert.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp testfile testfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp testfile testfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_select_cert.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_select_cert.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_select_cert.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_select_cert.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


FIRST=`cat _MTN/revision`

cat >testfile <<'_ATEOF'
Now, this is a different file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_select_cert.at:12: cp testfile testfile2"
echo t_select_cert.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp testfile testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp testfile testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_select_cert.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_select_cert.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_select_cert.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_select_cert.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


SECOND=`cat _MTN/revision`

cat >testfile <<'_ATEOF'
And we change it a third time
_ATEOF

$at_traceoff
echo "$at_srcdir/t_select_cert.at:18: cp testfile testfile3"
echo t_select_cert.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp testfile testfile3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp testfile testfile3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_select_cert.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_select_cert.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_select_cert.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_select_cert.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_select_cert.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net cert \$FIRST testcert 'value=with=equal=signs'"
echo t_select_cert.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $FIRST testcert 'value=with=equal=signs'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $FIRST testcert 'value=with=equal=signs' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $FIRST testcert 'value=with=equal=signs' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_select_cert.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_select_cert.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net cert \$SECOND testcert 'value'"
echo t_select_cert.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $SECOND testcert 'value'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $SECOND testcert 'value' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $SECOND testcert 'value' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_select_cert.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Check that inexact values fail...
$at_traceoff
echo "$at_srcdir/t_select_cert.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net list certs 'c:testcert=value='"
echo t_select_cert.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list certs 'c:testcert=value='" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list certs 'c:testcert=value=' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list certs 'c:testcert=value=' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_select_cert.at:25: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_select_cert.at:26: grep 'no match for selection' stderr"
echo t_select_cert.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'no match for selection' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'no match for selection' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_select_cert.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Check that wild cards succeed...
$at_traceoff
echo "$at_srcdir/t_select_cert.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net list certs 'c:testcert=value=*'"
echo t_select_cert.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list certs 'c:testcert=value=*'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list certs 'c:testcert=value=*' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list certs 'c:testcert=value=*' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_select_cert.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Check that wild cards succeed (this one becomes a misuse, because it will
# match two revisions)...
$at_traceoff
echo "$at_srcdir/t_select_cert.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net list certs 'c:testcert=value*'"
echo t_select_cert.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list certs 'c:testcert=value*'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list certs 'c:testcert=value*' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list certs 'c:testcert=value*' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_select_cert.at:33: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_select_cert.at:34: grep 'has multiple ambiguous expansions' stderr"
echo t_select_cert.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'has multiple ambiguous expansions' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'has multiple ambiguous expansions' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_select_cert.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Check that no value succeeds...
$at_traceoff
echo "$at_srcdir/t_select_cert.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net list certs 'c:testcert'"
echo t_select_cert.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list certs 'c:testcert'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list certs 'c:testcert' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list certs 'c:testcert' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_select_cert.at:37: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_select_cert.at:38: grep 'has multiple ambiguous expansions' stderr"
echo t_select_cert.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'has multiple ambiguous expansions' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'has multiple ambiguous expansions' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_select_cert.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Check that exact value succeed...
rm -Rf _MTN
$at_traceoff
echo "$at_srcdir/t_select_cert.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net co --revision='c:testcert=value' ."
echo t_select_cert.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co --revision='c:testcert=value' ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co --revision='c:testcert=value' . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co --revision='c:testcert=value' . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_select_cert.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_select_cert.at:43: cmp testfile testfile2"
echo t_select_cert.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_select_cert.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


rm -Rf _MTN
$at_traceoff
echo "$at_srcdir/t_select_cert.at:46: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net co --revision='c:testcert=value=with=equal=signs' ."
echo t_select_cert.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co --revision='c:testcert=value=with=equal=signs' ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co --revision='c:testcert=value=with=equal=signs' . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co --revision='c:testcert=value=with=equal=signs' . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_select_cert.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_select_cert.at:47: cmp testfile testfile1"
echo t_select_cert.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile testfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile testfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_select_cert.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  208 ) # 208. t_automate_select.at:1: check automate select
    at_setup_line='t_automate_select.at:1'
    at_desc='check automate select'
    $at_quiet $ECHO_N "208: check automate select                        $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "208. t_automate_select.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_automate_select.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_automate_select.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_select.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_select.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_automate_select.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_select.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_select.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_automate_select.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_select.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_select.at:2: rm test_keys"
echo t_automate_select.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_select.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
this is just a file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_select.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_automate_select.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_select.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_select.at:6: cp testfile testfile1"
echo t_automate_select.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp testfile testfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp testfile testfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_select.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_select.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_select.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_select.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


FIRST=`cat _MTN/revision`

cat >testfile <<'_ATEOF'
Now, this is a different file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_select.at:12: cp testfile testfile2"
echo t_automate_select.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp testfile testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp testfile testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_select.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_select.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_select.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_select.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


SECOND=`cat _MTN/revision`

cat >testfile <<'_ATEOF'
And we change it a third time
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_select.at:18: cp testfile testfile3"
echo t_automate_select.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp testfile testfile3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp testfile testfile3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_select.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_select.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_select.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_select.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_select.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net cert \$FIRST testcert 'value=with=equal=signs'"
echo t_automate_select.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $FIRST testcert 'value=with=equal=signs'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $FIRST testcert 'value=with=equal=signs' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $FIRST testcert 'value=with=equal=signs' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_select.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_select.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net cert \$SECOND testcert 'value'"
echo t_automate_select.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $SECOND testcert 'value'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $SECOND testcert 'value' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $SECOND testcert 'value' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_select.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Check that inexact values fail...
$at_traceoff
echo "$at_srcdir/t_automate_select.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select 'c:testcert=value='"
echo t_automate_select.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select 'c:testcert=value='" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select 'c:testcert=value=' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select 'c:testcert=value=' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_select.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_select.at:26: mv stdout a_s"
echo t_automate_select.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout a_s ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout a_s ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_select.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_select.at:27: test 0 -eq \"\`wc -l <a_s\`\""
echo t_automate_select.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test 0 -eq "`wc -l <a_s`" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test 0 -eq "`wc -l <a_s`" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_select.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Check that wild cards succeed (this one becomes a misuse, because it will
# match two revisions)...
$at_traceoff
echo "$at_srcdir/t_automate_select.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select 'c:testcert=value*'"
echo t_automate_select.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select 'c:testcert=value*'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select 'c:testcert=value*' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select 'c:testcert=value*' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_select.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_select.at:32: mv stdout a_s"
echo t_automate_select.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout a_s ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout a_s ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_select.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_select.at:33: test 2 -eq \"\`wc -l <a_s\`\""
echo t_automate_select.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test 2 -eq "`wc -l <a_s`" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test 2 -eq "`wc -l <a_s`" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_select.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Check that no value succeeds...
$at_traceoff
echo "$at_srcdir/t_automate_select.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select 'c:testcert'"
echo t_automate_select.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select 'c:testcert'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select 'c:testcert' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select 'c:testcert' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_select.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_select.at:37: mv stdout a_s"
echo t_automate_select.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout a_s ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout a_s ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_select.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_select.at:38: test 2 -eq \"\`wc -l <a_s\`\""
echo t_automate_select.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test 2 -eq "`wc -l <a_s`" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test 2 -eq "`wc -l <a_s`" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_select.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Check that exact value succeed...
$at_traceoff
echo "$at_srcdir/t_automate_select.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select 'c:testcert=value'"
echo t_automate_select.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select 'c:testcert=value'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select 'c:testcert=value' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select 'c:testcert=value' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_select.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_select.at:42: mv stdout a_s"
echo t_automate_select.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout a_s ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout a_s ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_select.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_select.at:43: test 1 -eq \"\`wc -l <a_s\`\""
echo t_automate_select.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test 1 -eq "`wc -l <a_s`" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test 1 -eq "`wc -l <a_s`" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_select.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  209 ) # 209. t_refresh_inodeprints.at:1: refresh_inodeprints
    at_setup_line='t_refresh_inodeprints.at:1'
    at_desc='refresh_inodeprints'
    $at_quiet $ECHO_N "209: refresh_inodeprints                          $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "209. t_refresh_inodeprints.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_refresh_inodeprints.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_refresh_inodeprints.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_refresh_inodeprints.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_refresh_inodeprints.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_refresh_inodeprints.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_refresh_inodeprints.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_refresh_inodeprints.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_refresh_inodeprints.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_refresh_inodeprints.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_refresh_inodeprints.at:2: rm test_keys"
echo t_refresh_inodeprints.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_refresh_inodeprints.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_refresh_inodeprints.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_refresh_inodeprints.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_refresh_inodeprints.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_refresh_inodeprints.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_refresh_inodeprints.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_refresh_inodeprints.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_refresh_inodeprints.at:8: test -e _MTN/inodeprints"
echo t_refresh_inodeprints.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e _MTN/inodeprints ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e _MTN/inodeprints ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_refresh_inodeprints.at:8: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_refresh_inodeprints.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net refresh_inodeprints"
echo t_refresh_inodeprints.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net refresh_inodeprints" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net refresh_inodeprints ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net refresh_inodeprints ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_refresh_inodeprints.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_refresh_inodeprints.at:12: test -s _MTN/inodeprints"
echo t_refresh_inodeprints.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -s _MTN/inodeprints ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -s _MTN/inodeprints ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_refresh_inodeprints.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  210 ) # 210. t_merge_6.at:1: test a merge 6
    at_setup_line='t_merge_6.at:1'
    at_desc='test a merge 6'
    $at_quiet $ECHO_N "210: test a merge 6                               $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "210. t_merge_6.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge_6.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_merge_6.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_6.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_6.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_merge_6.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_6.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_6.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_merge_6.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_6.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_6.at:2: rm test_keys"
echo t_merge_6.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_6.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_merge_6.at:4: echo \$UNB64_COMMAND"
echo t_merge_6.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_6.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This tests a case where file normalisation previously wasn't
# working correctly, leading to:

# --- correct     Thu Apr 28 15:38:27 2005
# +++ testfile    Thu Apr 28 15:38:36 2005
# @@ -5,6 +5,10 @@
#  3
#  4
#  a
# +2
# +3
# +4
# +a
#  q
#  d
#  g

# merge(1) can handle this merge correctly.

cat >parent <<'_ATEOF'

o
a
q
e
g
_ATEOF


cat >left <<'_ATEOF'

o
a
2
3
4
a
q
d
g
_ATEOF


cat >right <<'_ATEOF'

o
a
2
3
4
a
q
e
g
_ATEOF


cat >correct <<'_ATEOF'

o
a
2
3
4
a
q
d
g
_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge_6.at:69: cp -f parent testfile"
echo t_merge_6.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f parent testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f parent testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_6.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_6.at:70: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_merge_6.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_6.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_6.at:71: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge_6.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_6.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


PARENT_SHA=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_merge_6.at:74: cp -f left testfile"
echo t_merge_6.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f left testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f left testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_6.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_6.at:75: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge_6.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_6.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_merge_6.at:77: rm -rf _MTN.old"
echo t_merge_6.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_6.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_6.at:77: mv  _MTN _MTN.old"
echo t_merge_6.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_6.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_6.at:77: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$PARENT_SHA ."
echo t_merge_6.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$PARENT_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$PARENT_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$PARENT_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_6.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_merge_6.at:77: test \$PROBE_R_SHA = \$PARENT_SHA"
echo t_merge_6.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $PARENT_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $PARENT_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $PARENT_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_6.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_6.at:79: cp -f right testfile"
echo t_merge_6.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f right testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f right testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_6.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_6.at:80: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge_6.at:80 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_6.at:80: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_6.at:82: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge"
echo t_merge_6.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_6.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_6.at:84: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_merge_6.at:84 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_6.at:84: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_6.at:85: cmp testfile correct"
echo t_merge_6.at:85 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile correct ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile correct ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_6.at:85: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  211 ) # 211. t_annotate.at:1: test annotate command
    at_setup_line='t_annotate.at:1'
    at_desc='test annotate command'
    $at_quiet $ECHO_N "211: test annotate command                        $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "211. t_annotate.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_annotate.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_annotate.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_annotate.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_annotate.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:2: rm test_keys"
echo t_annotate.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo1 <<'_ATEOF'
z
a
b
x
_ATEOF


cat >bar1 <<'_ATEOF'
0
11
2
_ATEOF


cat >bar2 <<'_ATEOF'
0
11
22
_ATEOF



cat >foo0 <<'_ATEOF'
a
b
c
_ATEOF

$at_traceoff
echo "$at_srcdir/t_annotate.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo0"
echo t_annotate.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >unchanged <<'_ATEOF'
static
file
contents
_ATEOF

$at_traceoff
echo "$at_srcdir/t_annotate.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add unchanged"
echo t_annotate.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add unchanged" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add unchanged ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add unchanged ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_annotate.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV0=`cat _MTN/revision`


cat >bar0 <<'_ATEOF'
0
1
2
_ATEOF

$at_traceoff
echo "$at_srcdir/t_annotate.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add bar0"
echo t_annotate.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate.at:35: cp foo1 foo0"
echo t_annotate.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foo1 foo0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foo1 foo0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV1=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_annotate.at:39: cp bar1 bar0"
echo t_annotate.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp bar1 bar0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp bar1 bar0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV2=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_annotate.at:43: cp bar2 bar0"
echo t_annotate.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp bar2 bar0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp bar2 bar0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate.at:44: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV3=`cat _MTN/revision`

# annotate on a non-existent file gives an error
$at_traceoff
echo "$at_srcdir/t_annotate.at:48: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net annotate nonexistent"
echo t_annotate.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate nonexistent" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate nonexistent ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate nonexistent ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_annotate.at:48: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# annotate on dirs gives an error
$at_traceoff
echo "$at_srcdir/t_annotate.at:50: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net annotate ."
echo t_annotate.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_annotate.at:50: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


#
# annotate foo0 should now be
# REV1: z
# REV0: a
# REV0: b
# REV1: x

$at_traceoff
echo "$at_srcdir/t_annotate.at:59: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net annotate foo0"
echo t_annotate.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate foo0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate foo0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate foo0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:60: head -n 1 stdout | grep \$REV1"
echo t_annotate.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 1 stdout | grep $REV1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 1 stdout | grep $REV1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 1 stdout | grep $REV1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:61: head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REV0"
echo t_annotate.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:62: head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REV0"
echo t_annotate.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:63: head -n 4 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REV1"
echo t_annotate.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 4 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 4 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 4 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



#
# unchanged should have all (3) lines from REV0
#
$at_traceoff
echo "$at_srcdir/t_annotate.at:69: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net annotate unchanged"
echo t_annotate.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate unchanged" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate unchanged ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate unchanged ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:70: head -n 1 stdout | grep \$REV0"
echo t_annotate.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 1 stdout | grep $REV0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 1 stdout | grep $REV0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 1 stdout | grep $REV0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:71: head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REV0"
echo t_annotate.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:72: head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REV0"
echo t_annotate.at:72 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:72: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


#
# annotate bar0 should now be
# REV1: 0
# REV2: 11
# REV3: 22

$at_traceoff
echo "$at_srcdir/t_annotate.at:80: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net annotate bar0"
echo t_annotate.at:80 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate bar0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate bar0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate bar0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:80: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:81: head -n 1 stdout | grep \$REV1"
echo t_annotate.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 1 stdout | grep $REV1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 1 stdout | grep $REV1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 1 stdout | grep $REV1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:81: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:82: head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REV2"
echo t_annotate.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:83: head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REV3"
echo t_annotate.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



#
# OK, now try some renames
#
$at_traceoff
echo "$at_srcdir/t_annotate.at:89: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename foo0 tmp"
echo t_annotate.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo0 tmp" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo0 tmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo0 tmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:89: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:90: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename bar0 foo0"
echo t_annotate.at:90 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename bar0 foo0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename bar0 foo0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename bar0 foo0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:90: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:91: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename tmp bar0"
echo t_annotate.at:91 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename tmp bar0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename tmp bar0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename tmp bar0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:91: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:92: mv foo0 tmp"
echo t_annotate.at:92 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv foo0 tmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv foo0 tmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:92: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:93: mv bar0 foo0"
echo t_annotate.at:93 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv bar0 foo0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv bar0 foo0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:93: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:94: mv tmp bar0"
echo t_annotate.at:94 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv tmp bar0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv tmp bar0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:94: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate.at:95: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate.at:95 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:95: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV4=`cat _MTN/revision`

#
# Now the previous annotate results should be reversed
#
$at_traceoff
echo "$at_srcdir/t_annotate.at:101: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net annotate bar0"
echo t_annotate.at:101 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate bar0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate bar0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate bar0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:101: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:102: head -n 1 stdout | grep \$REV1"
echo t_annotate.at:102 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 1 stdout | grep $REV1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 1 stdout | grep $REV1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 1 stdout | grep $REV1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:102: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:103: head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REV0"
echo t_annotate.at:103 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:103: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:104: head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REV0"
echo t_annotate.at:104 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:104: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:105: head -n 4 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REV1"
echo t_annotate.at:105 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 4 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 4 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 4 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:105: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate.at:107: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net annotate foo0"
echo t_annotate.at:107 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate foo0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate foo0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate foo0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:107: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:108: head -n 1 stdout | grep \$REV1"
echo t_annotate.at:108 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 1 stdout | grep $REV1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 1 stdout | grep $REV1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 1 stdout | grep $REV1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:108: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:109: head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REV2"
echo t_annotate.at:109 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:109: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:110: head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REV3"
echo t_annotate.at:110 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:110: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


#
# Try add of file on one side of branch
#

# Making left side of fork, we won't add the file here
cat >foo0 <<'_ATEOF'
foo
now has other data
_ATEOF


$at_traceoff
echo "$at_srcdir/t_annotate.at:120: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate.at:120 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:120: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV5=`cat _MTN/revision`
cat >foo0 <<'_ATEOF'
foo
still has other data
_ATEOF


$at_traceoff
echo "$at_srcdir/t_annotate.at:125: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate.at:125 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:125: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV6=`cat _MTN/revision`

# Now make right side
rm -rf _MTN
$at_traceoff
echo "$at_srcdir/t_annotate.at:130: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net co --revision=\$REV4 ."
echo t_annotate.at:130 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co --revision=$REV4 ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co --revision=$REV4 . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co --revision=$REV4 . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:130: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >bar0 <<'_ATEOF'
bar
on right side of fork
_ATEOF


$at_traceoff
echo "$at_srcdir/t_annotate.at:134: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate.at:134 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:134: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV7=`cat _MTN/revision`

cat >forkfile <<'_ATEOF'
a file
on the
right fork
_ATEOF

$at_traceoff
echo "$at_srcdir/t_annotate.at:139: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add forkfile"
echo t_annotate.at:139 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add forkfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add forkfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add forkfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:139: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_annotate.at:140: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate.at:140 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:140: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV8=`cat _MTN/revision`
cat >forkfile <<'_ATEOF'
a file
changed on the
right fork
_ATEOF


$at_traceoff
echo "$at_srcdir/t_annotate.at:146: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate.at:146 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:146: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV9=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_annotate.at:149: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge"
echo t_annotate.at:149 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:149: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

#REV10=`BASE_REVISION` # how does commit create this?

#
# ok, so annotate forkfile should be
# REV8: a file
# REV9: changed on the
# REV8: right fork

$at_traceoff
echo "$at_srcdir/t_annotate.at:158: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net annotate forkfile"
echo t_annotate.at:158 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate forkfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate forkfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate forkfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:158: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:159: head -n 1 stdout | grep \$REV8"
echo t_annotate.at:159 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 1 stdout | grep $REV8" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 1 stdout | grep $REV8 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 1 stdout | grep $REV8 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:159: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:160: head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REV9"
echo t_annotate.at:160 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV9" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV9 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV9 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:160: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate.at:161: head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REV8"
echo t_annotate.at:161 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV8" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV8 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV8 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate.at:161: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  212 ) # 212. t_annotate_add_collision.at:1: annotate file added on different forks
    at_setup_line='t_annotate_add_collision.at:1'
    at_desc='annotate file added on different forks'
    $at_quiet $ECHO_N "212: annotate file added on different forks       $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "212. t_annotate_add_collision.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_annotate_add_collision.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_annotate_add_collision.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_add_collision.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_add_collision.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_annotate_add_collision.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_add_collision.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_add_collision.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_annotate_add_collision.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_add_collision.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_add_collision.at:2: rm test_keys"
echo t_annotate_add_collision.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_add_collision.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This test relies on file-suturing


cat >foo.left <<'_ATEOF'
z
a
b
x
_ATEOF


cat >foo.right <<'_ATEOF'
z
j
k
x
_ATEOF



cat >initialfile <<'_ATEOF'
a
b
c
_ATEOF

$at_traceoff
echo "$at_srcdir/t_annotate_add_collision.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add initialfile"
echo t_annotate_add_collision.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add initialfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add initialfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add initialfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_add_collision.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_annotate_add_collision.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate_add_collision.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_add_collision.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV0=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_annotate_add_collision.at:27: cp foo.left foo"
echo t_annotate_add_collision.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foo.left foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foo.left foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_add_collision.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_add_collision.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_annotate_add_collision.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_add_collision.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate_add_collision.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate_add_collision.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_add_collision.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REVL=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_annotate_add_collision.at:32: rm -rf _MTN.old"
echo t_annotate_add_collision.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_add_collision.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_add_collision.at:32: mv  _MTN _MTN.old"
echo t_annotate_add_collision.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_add_collision.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_add_collision.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV0 ."
echo t_annotate_add_collision.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV0 ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV0 . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV0 . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_add_collision.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_annotate_add_collision.at:32: test \$PROBE_R_SHA = \$REV0"
echo t_annotate_add_collision.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $REV0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $REV0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $REV0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_add_collision.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate_add_collision.at:33: cp foo.right foo"
echo t_annotate_add_collision.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foo.right foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foo.right foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_add_collision.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_add_collision.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_annotate_add_collision.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_add_collision.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate_add_collision.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate_add_collision.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_add_collision.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REVR=`cat _MTN/revision`

cat >merge2.lua <<'_ATEOF'

function merge2 (left, right)
        data = "z\na\nk\nx\n"
        return data
end
_ATEOF


$at_traceoff
echo "$at_srcdir/t_annotate_add_collision.at:45: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=merge2.lua merge"
echo t_annotate_add_collision.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=merge2.lua merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=merge2.lua merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=merge2.lua merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_add_collision.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_add_collision.at:46: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_annotate_add_collision.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_add_collision.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REV1=`cat _MTN/revision`

#
# annotate foo should now be
# REVC: z
# REVL: a
# REVR: k
# REVC: x
#
# where REVC (choice) is either REVL or REVR

$at_traceoff
echo "$at_srcdir/t_annotate_add_collision.at:58: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net annotate foo"
echo t_annotate_add_collision.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_add_collision.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

#AT_CHECK(head -n 1 stdout | grep $REV1, [0], [ignore], [ignore])
$at_traceoff
echo "$at_srcdir/t_annotate_add_collision.at:60: head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REVL"
echo t_annotate_add_collision.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVL" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVL ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVL ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_add_collision.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_add_collision.at:61: head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REVR"
echo t_annotate_add_collision.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVR" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVR ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVR ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_add_collision.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

#AT_CHECK(head -n 4 stdout | TAIL(1) | grep $REV1, [0], [ignore], [ignore])

      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  213 ) # 213. t_annotate_branch_collision.at:1: annotate file on multirooted branch
    at_setup_line='t_annotate_branch_collision.at:1'
    at_desc='annotate file on multirooted branch'
    $at_quiet $ECHO_N "213: annotate file on multirooted branch          $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "213. t_annotate_branch_collision.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_annotate_branch_collision.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_annotate_branch_collision.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_branch_collision.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_branch_collision.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_annotate_branch_collision.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_branch_collision.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_branch_collision.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_annotate_branch_collision.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_branch_collision.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_branch_collision.at:2: rm test_keys"
echo t_annotate_branch_collision.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_branch_collision.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This test relies on file-suturing


#
# If two people begin a branch with the same name,
# then the branch does not have a unique root.  If they
# also happened to both add a file with some shared and
# some differing lines, we must do the right thing.
#

cat >foo.left <<'_ATEOF'
z
a
b
x
_ATEOF


cat >foo.right <<'_ATEOF'
z
j
k
x
_ATEOF


$at_traceoff
echo "$at_srcdir/t_annotate_branch_collision.at:26: cp foo.left foo"
echo t_annotate_branch_collision.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foo.left foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foo.left foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_branch_collision.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_branch_collision.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_annotate_branch_collision.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_branch_collision.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate_branch_collision.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate_branch_collision.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_branch_collision.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REVL=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_annotate_branch_collision.at:31: rm -r -f _MTN foo"
echo t_annotate_branch_collision.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -r -f _MTN foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -r -f _MTN foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_branch_collision.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_branch_collision.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_annotate_branch_collision.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_branch_collision.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate_branch_collision.at:34: cp foo.right foo"
echo t_annotate_branch_collision.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foo.right foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foo.right foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_branch_collision.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_branch_collision.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_annotate_branch_collision.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_branch_collision.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate_branch_collision.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate_branch_collision.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_branch_collision.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REVR=`cat _MTN/revision`

cat >merge2.lua <<'_ATEOF'

function merge2 (left, right)
        data = "z\na\nk\nx\n"
        return data
end
_ATEOF


$at_traceoff
echo "$at_srcdir/t_annotate_branch_collision.at:46: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=merge2.lua merge"
echo t_annotate_branch_collision.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=merge2.lua merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=merge2.lua merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=merge2.lua merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_branch_collision.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_branch_collision.at:47: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_annotate_branch_collision.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_branch_collision.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REVM=`cat _MTN/revision`

#
# annotate foo should now be
# REVC: z
# REVL: a
# REVR: k
# REVC: x
#
# where REVC (choice) is either REVL or REVR

$at_traceoff
echo "$at_srcdir/t_annotate_branch_collision.at:59: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net annotate foo"
echo t_annotate_branch_collision.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_branch_collision.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

#AT_CHECK(head -n 1 stdout | grep $REV1, [0], [ignore], [ignore])
$at_traceoff
echo "$at_srcdir/t_annotate_branch_collision.at:61: head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REVL"
echo t_annotate_branch_collision.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVL" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVL ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVL ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_branch_collision.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_branch_collision.at:62: head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REVR"
echo t_annotate_branch_collision.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVR" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVR ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVR ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_branch_collision.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

#AT_CHECK(head -n 4 stdout | TAIL(1) | grep $REV1, [0], [ignore], [ignore])

      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  214 ) # 214. t_netsync_error.at:1: netsync badhost gives nice error
    at_setup_line='t_netsync_error.at:1'
    at_desc='netsync badhost gives nice error'
    $at_quiet $ECHO_N "214: netsync badhost gives nice error             $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "214. t_netsync_error.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_netsync_error.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_netsync_error.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_error.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_error.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_netsync_error.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_error.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_error.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_netsync_error.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_error.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_error.at:2: rm test_keys"
echo t_netsync_error.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_error.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_error.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net pull nosuchhost__blahblah__asdvasoih.com some.pattern"
echo t_netsync_error.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pull nosuchhost__blahblah__asdvasoih.com some.pattern" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pull nosuchhost__blahblah__asdvasoih.com some.pattern ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pull nosuchhost__blahblah__asdvasoih.com some.pattern ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_error.at:4: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  215 ) # 215. t_options.at:3: checking a few command specific options
    at_setup_line='t_options.at:3'
    at_desc='checking a few command specific options'
    $at_quiet $ECHO_N "215: checking a few command specific options      $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "215. t_options.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_options.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_options.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_options.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_options.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_options.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_options.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_options.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_options.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_options.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_options.at:5: rm test_keys"
echo t_options.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_options.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
This is complete junk
_ATEOF

$at_traceoff
echo "$at_srcdir/t_options.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch add testfile"
echo t_options.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_options.at:9: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_options.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_options.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_options.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_options.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah"
echo t_options.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_options.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

ROOT_R_SHA=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_options.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --last=1 log"
echo t_options.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --last=1 log" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --last=1 log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --last=1 log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_options.at:14: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_options.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --last=1 log"
echo t_options.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --last=1 log" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --last=1 log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --last=1 log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_options.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_options.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --depth=0 status"
echo t_options.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --depth=0 status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --depth=0 status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --depth=0 status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_options.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  216 ) # 216. t_annotate_copy_all.at:1: annotate where one parent is full copy
    at_setup_line='t_annotate_copy_all.at:1'
    at_desc='annotate where one parent is full copy'
    $at_quiet $ECHO_N "216: annotate where one parent is full copy       $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "216. t_annotate_copy_all.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_annotate_copy_all.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_annotate_copy_all.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_copy_all.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_copy_all.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_annotate_copy_all.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_copy_all.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_copy_all.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_annotate_copy_all.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_copy_all.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_copy_all.at:2: rm test_keys"
echo t_annotate_copy_all.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_copy_all.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



#
#     A      Where B -> D is no change, but
#    / \     C -> D shows a delta for a line modified in
#   B   C    B.
#    \ /
#     D
#

cat >A <<'_ATEOF'
a
b
c
_ATEOF


cat >B <<'_ATEOF'
a
b
x
y
c
_ATEOF


# C == A
# D == B

$at_traceoff
echo "$at_srcdir/t_annotate_copy_all.at:27: cp A foo"
echo t_annotate_copy_all.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp A foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp A foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_copy_all.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >initialfile <<'_ATEOF'
foo
file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_annotate_copy_all.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add initialfile"
echo t_annotate_copy_all.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add initialfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add initialfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add initialfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_copy_all.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate_copy_all.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_annotate_copy_all.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_copy_all.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate_copy_all.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate_copy_all.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_copy_all.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REVA=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_annotate_copy_all.at:36: cp B foo"
echo t_annotate_copy_all.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp B foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp B foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_copy_all.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate_copy_all.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate_copy_all.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_copy_all.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REVB=`cat _MTN/revision`



$at_traceoff
echo "$at_srcdir/t_annotate_copy_all.at:41: rm -rf _MTN.old"
echo t_annotate_copy_all.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_copy_all.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_copy_all.at:41: mv  _MTN _MTN.old"
echo t_annotate_copy_all.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_copy_all.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_copy_all.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REVA ."
echo t_annotate_copy_all.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REVA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REVA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REVA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_copy_all.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_annotate_copy_all.at:41: test \$PROBE_R_SHA = \$REVA"
echo t_annotate_copy_all.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $REVA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $REVA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $REVA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_copy_all.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate_copy_all.at:42: cp A initialfile"
echo t_annotate_copy_all.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp A initialfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp A initialfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_copy_all.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate_copy_all.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate_copy_all.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_copy_all.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REVC=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_annotate_copy_all.at:47: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge"
echo t_annotate_copy_all.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_copy_all.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_copy_all.at:48: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_annotate_copy_all.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_copy_all.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REVD=`cat _MTN/revision`

#
# annotate foo should now be
# REVA: a
# REVA: b
# REVB: x
# REVB: y
# REVA: c
#

$at_traceoff
echo "$at_srcdir/t_annotate_copy_all.at:60: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net annotate foo"
echo t_annotate_copy_all.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_copy_all.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_copy_all.at:61: head -n 1 stdout | grep \$REVA"
echo t_annotate_copy_all.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 1 stdout | grep $REVA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 1 stdout | grep $REVA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 1 stdout | grep $REVA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_copy_all.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_copy_all.at:62: head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REVA"
echo t_annotate_copy_all.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_copy_all.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_copy_all.at:63: head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REVB"
echo t_annotate_copy_all.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVB" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVB ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVB ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_copy_all.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_copy_all.at:64: head -n 4 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REVB"
echo t_annotate_copy_all.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 4 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVB" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 4 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVB ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 4 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVB ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_copy_all.at:64: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_copy_all.at:65: head -n 5 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REVA"
echo t_annotate_copy_all.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 5 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 5 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 5 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_copy_all.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  217 ) # 217. t_cvsimport_deleted_invar.at:3: cvs import, deleted file invariant
    at_setup_line='t_cvsimport_deleted_invar.at:3'
    at_desc='cvs import, deleted file invariant'
    $at_quiet $ECHO_N "217: cvs import, deleted file invariant           $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "217. t_cvsimport_deleted_invar.at:3: testing ..."
      $at_traceon




if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_cvsimport_deleted_invar.at:5: echo \$UNB64_COMMAND"
echo t_cvsimport_deleted_invar.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_deleted_invar.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test -n "`command -v gunzip`" 2>/dev/null; then
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  UNGZ_COMMAND="gunzip -c"
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_cvsimport_deleted_invar.at:5: echo \$UNGZ_COMMAND"
echo t_cvsimport_deleted_invar.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNGZ_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_deleted_invar.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon






# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_cvsimport_deleted_invar.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_cvsimport_deleted_invar.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_deleted_invar.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_deleted_invar.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_cvsimport_deleted_invar.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_deleted_invar.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_deleted_invar.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_cvsimport_deleted_invar.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_deleted_invar.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_deleted_invar.at:7: rm test_keys"
echo t_cvsimport_deleted_invar.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_deleted_invar.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



CVSROOT=`pwd`/cvs-repository
$at_traceoff
echo "$at_srcdir/t_cvsimport_deleted_invar.at:10: cvs -q -d \$CVSROOT init"
echo t_cvsimport_deleted_invar.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -q -d $CVSROOT init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -q -d $CVSROOT init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -q -d $CVSROOT init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_deleted_invar.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_deleted_invar.at:11: test -e \$CVSROOT"
echo t_cvsimport_deleted_invar.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test -e $CVSROOT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e $CVSROOT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e $CVSROOT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_deleted_invar.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_deleted_invar.at:12: test -e \$CVSROOT/CVSROOT"
echo t_cvsimport_deleted_invar.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test -e $CVSROOT/CVSROOT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e $CVSROOT/CVSROOT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e $CVSROOT/CVSROOT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_deleted_invar.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_deleted_invar.at:13: test -e \$CVSROOT/CVSROOT/modules"
echo t_cvsimport_deleted_invar.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test -e $CVSROOT/CVSROOT/modules" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e $CVSROOT/CVSROOT/modules ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e $CVSROOT/CVSROOT/modules ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_deleted_invar.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >cvsrepo.gz.enc <<'_ATEOF'
H4sICOVTd0ICA2F0dGVzdC50YXIA7VfJbtswFPTV/AoCPRQoApak9upQJ0GuveSS+GLIEhML1hJIdJr+fUltphV6QQvHaMGBAVmPw+dHPXqGijhnNf86OSewgOc48ko8B6vXHhOCqeW4DvEImWBiOZhMoDP5AGxqHlUQTtZpwXi63ss7Nt4vpL/+I4ja/kdPacauXs/Xf9u29/WfWBbt+m97nif2CbE9l04gNv0/O1YsSqYE0RBEcczqOgT1r3xZZjWYXt/cLu4ff9wurr8JgnJ/097P5/Od8eG+G394nM8fHxZkEYh7gjAiWA0ubq7v7+SIEvQ7pq/GdESvI7pqTCGKWjuG3Ra+HXotkmpBgiAgFPujtG43Sa3eHeaGICvjdR3CmldpzEMQl3nOCj6dfYKzEAAgl51EnE2p2NUIO4gGiFKEA2TRcBpt+KqsYF5uahZOxbbjDCbi8YdgWUVFvGLi4RfsjU+bnwKysiZZEMgMRCQnyCbIIvpUd28v20xAJkG2TNSkbPPJgFqgh7CIiMZ4yHKGrHVU8OhggXKtCatjMJt1q87KZzCrWF6+MiilBIEZ4IIKZnyV1lB8IpiJfxAsn6CMy/F2ic3MKElG07rhpuKGkrPqmUG5XZsc1aZYw7TgJRTdhW19u7MnBqfr//KS+u9Zbu//mHpWo/+Oa/T/f9N/Sk/Vf4pPNQDiH3UA4v6JBRBb6wFK0OmZ6rIcHdPWGaCtY1oaA7R0RKoxQKojkq0PbmM6ItZ4H76497nSpSjuXIoEJ3sfccfmJyOXcr+6zFljfFBwKmFjFTvZApu6z+WBnf7HF9R/6oh3w/79z+n037WM/l9Y/0fKcEgdkE5zDukO0qnZIUVDOp08pJVIJ8EHZRi9l3c6WvGg7nTkGHS0UldH9Dqi1rLoyAbpuFBfxwx6ptZat0HaNJHu+hrddlBlkp7pq0Edk/aPCKtBHdPqmTtBHdPumWqdto45NMhVgzpm3yGqrsjVMfsWWeqK1B61xwra7lPlVEFPOi/1T9ZtT0vbucfOUuMTiwyxIikr9d+236Phl5FJy3dKMcNq3FV4LNH7346v7nFop/FQH2EfOeLBeUOmZZplhwz6nT//RUrFmnXePJjiz1XEP9dQ2vJ3mMqvu++lV7BOq6POnBBIwGDPPS8tUp5GGWwbA9P8paz4jh+b100DAwMDAwMDAwMDAwMDAwMDgw/Gbz8GWA0AKAAA
_ATEOF



$at_traceoff
echo "$at_srcdir/t_cvsimport_deleted_invar.at:18: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o cvsrepo.tar.gz cvsrepo.gz.enc
else
  \$UNB64_COMMAND <cvsrepo.gz.enc >cvsrepo.tar.gz
fi
"
echo t_cvsimport_deleted_invar.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o cvsrepo.tar.gz cvsrepo.gz.enc
else
  $UNB64_COMMAND <cvsrepo.gz.enc >cvsrepo.tar.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o cvsrepo.tar.gz cvsrepo.gz.enc
else
  $UNB64_COMMAND <cvsrepo.gz.enc >cvsrepo.tar.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_deleted_invar.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_deleted_invar.at:18: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"cvsrepo.tar.gz\" != \"cvsrepo.tar.gz\"; then
    mv cvsrepo.tar.gz cvsrepo.tar.gz
  fi
  gunzip cvsrepo.tar.gz
else
  \$UNGZ_COMMAND <cvsrepo.tar.gz >cvsrepo.tar
fi
"
echo t_cvsimport_deleted_invar.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "cvsrepo.tar.gz" != "cvsrepo.tar.gz"; then
    mv cvsrepo.tar.gz cvsrepo.tar.gz
  fi
  gunzip cvsrepo.tar.gz
else
  $UNGZ_COMMAND <cvsrepo.tar.gz >cvsrepo.tar
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "cvsrepo.tar.gz" != "cvsrepo.tar.gz"; then
    mv cvsrepo.tar.gz cvsrepo.tar.gz
  fi
  gunzip cvsrepo.tar.gz
else
  $UNGZ_COMMAND <cvsrepo.tar.gz >cvsrepo.tar
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_deleted_invar.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_cvsimport_deleted_invar.at:19: cd \$CVSROOT && tar -xf ../cvsrepo.tar"
echo t_cvsimport_deleted_invar.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd $CVSROOT && tar -xf ../cvsrepo.tar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd $CVSROOT && tar -xf ../cvsrepo.tar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd $CVSROOT && tar -xf ../cvsrepo.tar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_deleted_invar.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_deleted_invar.at:20: test -d \$CVSROOT/attest"
echo t_cvsimport_deleted_invar.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test -d $CVSROOT/attest" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -d $CVSROOT/attest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -d $CVSROOT/attest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_deleted_invar.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_cvsimport_deleted_invar.at:22: cvs -d \$CVSROOT co -rABC_BASE attest"
echo t_cvsimport_deleted_invar.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT co -rABC_BASE attest" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT co -rABC_BASE attest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT co -rABC_BASE attest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_deleted_invar.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

TSHA0=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify attest/afile`
TSHA1=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify attest/bfile`
TSHA2=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify attest/cfile`

# import into monotone and check presence of files

$at_traceoff
echo "$at_srcdir/t_cvsimport_deleted_invar.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch cvs_import \$CVSROOT/attest"
echo t_cvsimport_deleted_invar.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch cvs_import $CVSROOT/attest" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch cvs_import $CVSROOT/attest ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch cvs_import $CVSROOT/attest ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_deleted_invar.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_cvsimport_deleted_invar.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_file \$TSHA0"
echo t_cvsimport_deleted_invar.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_deleted_invar.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_deleted_invar.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_file \$TSHA1"
echo t_cvsimport_deleted_invar.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_deleted_invar.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_deleted_invar.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_file \$TSHA2"
echo t_cvsimport_deleted_invar.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TSHA2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_deleted_invar.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  218 ) # 218. t_rcfile_stdin.at:1: --rcfile=-
    at_setup_line='t_rcfile_stdin.at:1'
    at_desc='--rcfile=-'
    $at_quiet $ECHO_N "218: --rcfile=-                                   $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "218. t_rcfile_stdin.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_rcfile_stdin.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_rcfile_stdin.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcfile_stdin.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rcfile_stdin.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_rcfile_stdin.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcfile_stdin.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rcfile_stdin.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_rcfile_stdin.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcfile_stdin.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rcfile_stdin.at:2: rm test_keys"
echo t_rcfile_stdin.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcfile_stdin.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo.rc <<'_ATEOF'
function note_commit(new_id, certs)
  io.write("BOOGA BOOGA\n")
end
_ATEOF



cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rcfile_stdin.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_rcfile_stdin.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcfile_stdin.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rcfile_stdin.at:11: <foo.rc \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=- commit --message=foo --branch=testbranch"
echo t_rcfile_stdin.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "<foo.rc $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=- commit --message=foo --branch=testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; <foo.rc $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=- commit --message=foo --branch=testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; <foo.rc $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=- commit --message=foo --branch=testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcfile_stdin.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rcfile_stdin.at:13: grep BOOGA stdout >/dev/null"
echo t_rcfile_stdin.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep BOOGA stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep BOOGA stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcfile_stdin.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  219 ) # 219. t_monotone_up.at:1: mtn up
    at_setup_line='t_monotone_up.at:1'
    at_desc='mtn up'
    $at_quiet $ECHO_N "219: mtn up                                       $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "219. t_monotone_up.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_monotone_up.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_monotone_up.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_monotone_up.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_monotone_up.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_monotone_up.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_monotone_up.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_monotone_up.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_monotone_up.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_monotone_up.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_monotone_up.at:2: rm test_keys"
echo t_monotone_up.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_monotone_up.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# People expect 'mtn up' to run update.
# Make sure it does.


cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_monotone_up.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_monotone_up.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_monotone_up.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_monotone_up.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_monotone_up.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_monotone_up.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV0=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
other stuff
_ATEOF



$at_traceoff
echo "$at_srcdir/t_monotone_up.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_monotone_up.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_monotone_up.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV1=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_monotone_up.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch --revision=\$REV0 codir"
echo t_monotone_up.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch --revision=$REV0 codir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch --revision=$REV0 codir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=testbranch --revision=$REV0 codir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_monotone_up.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_monotone_up.at:18: cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net up"
echo t_monotone_up.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net up" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net up ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net up ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_monotone_up.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_monotone_up.at:19: cmp testfile codir/testfile"
echo t_monotone_up.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile codir/testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile codir/testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_monotone_up.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  220 ) # 220. t_drop_vs_patch_rename.at:1: merge(<drop a>, <rename a b, patch b>)
    at_setup_line='t_drop_vs_patch_rename.at:1'
    at_desc='merge(<drop a>, <rename a b, patch b>)'
    $at_quiet $ECHO_N "220: merge(<drop a>, <rename a b, patch b>)       $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "220. t_drop_vs_patch_rename.at:1: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_drop_vs_patch_rename.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_drop_vs_patch_rename.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_patch_rename.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_vs_patch_rename.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_drop_vs_patch_rename.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_patch_rename.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_vs_patch_rename.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_drop_vs_patch_rename.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_patch_rename.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_vs_patch_rename.at:3: rm test_keys"
echo t_drop_vs_patch_rename.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_patch_rename.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >original <<'_ATEOF'
some stuff here
_ATEOF


$at_traceoff
echo "$at_srcdir/t_drop_vs_patch_rename.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add original"
echo t_drop_vs_patch_rename.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add original" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add original ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add original ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_patch_rename.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_drop_vs_patch_rename.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_drop_vs_patch_rename.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_patch_rename.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


BASE_R_SHA=`cat _MTN/revision`

# drop it
$at_traceoff
echo "$at_srcdir/t_drop_vs_patch_rename.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop original"
echo t_drop_vs_patch_rename.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop original" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop original ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop original ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_patch_rename.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_drop_vs_patch_rename.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_drop_vs_patch_rename.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_patch_rename.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_drop_vs_patch_rename.at:16: rm -rf _MTN.old"
echo t_drop_vs_patch_rename.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_patch_rename.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_vs_patch_rename.at:16: mv  _MTN _MTN.old"
echo t_drop_vs_patch_rename.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_patch_rename.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_vs_patch_rename.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE_R_SHA ."
echo t_drop_vs_patch_rename.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_patch_rename.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_drop_vs_patch_rename.at:16: test \$PROBE_R_SHA = \$BASE_R_SHA"
echo t_drop_vs_patch_rename.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_patch_rename.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# patch and rename it
$at_traceoff
echo "$at_srcdir/t_drop_vs_patch_rename.at:19: mv original different"
echo t_drop_vs_patch_rename.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv original different ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv original different ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_patch_rename.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_vs_patch_rename.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename original different"
echo t_drop_vs_patch_rename.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename original different" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename original different ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename original different ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_patch_rename.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

echo "more" >> different

$at_traceoff
echo "$at_srcdir/t_drop_vs_patch_rename.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_drop_vs_patch_rename.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_patch_rename.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_drop_vs_patch_rename.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge"
echo t_drop_vs_patch_rename.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_patch_rename.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_vs_patch_rename.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch clean"
echo t_drop_vs_patch_rename.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch clean" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch clean ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch clean ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_patch_rename.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check that the file doesn't exist
$at_traceoff
echo "$at_srcdir/t_drop_vs_patch_rename.at:28: test -f clean/original"
echo t_drop_vs_patch_rename.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f clean/original ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f clean/original ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_drop_vs_patch_rename.at:28: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_vs_patch_rename.at:29: test -f clean/different"
echo t_drop_vs_patch_rename.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f clean/different ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f clean/different ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_drop_vs_patch_rename.at:29: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  221 ) # 221. t_unreadable__MTN.at:3: fail cleanly on unreadable _MTN/options
    at_setup_line='t_unreadable__MTN.at:3'
    at_desc='fail cleanly on unreadable _MTN/options'
    $at_quiet $ECHO_N "221: fail cleanly on unreadable _MTN/options      $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "221. t_unreadable__MTN.at:3: testing ..."
      $at_traceon


# disable for now; can't see a sane way to test this

if test "$OSTYPE" = "msys"; then
  echo 77 > $at_status_file
  exit 77
fi




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_unreadable__MTN.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_unreadable__MTN.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unreadable__MTN.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unreadable__MTN.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_unreadable__MTN.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unreadable__MTN.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unreadable__MTN.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_unreadable__MTN.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unreadable__MTN.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unreadable__MTN.at:8: rm test_keys"
echo t_unreadable__MTN.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unreadable__MTN.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_unreadable__MTN.at:10: chmod a-rwx _MTN/"
echo t_unreadable__MTN.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; chmod a-rwx _MTN/ ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; chmod a-rwx _MTN/ ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unreadable__MTN.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_unreadable__MTN.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR"
echo t_unreadable__MTN.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_unreadable__MTN.at:12: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_unreadable__MTN.at:14: chmod u+rwx _MTN/"
echo t_unreadable__MTN.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; chmod u+rwx _MTN/ ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; chmod u+rwx _MTN/ ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unreadable__MTN.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  222 ) # 222. t_cvsimport3.at:3: importing CVS with vendor imports and branches
    at_setup_line='t_cvsimport3.at:3'
    at_desc='importing CVS with vendor imports and branches'
    $at_quiet $ECHO_N "222: importing CVS with vendor imports and branches$ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "222. t_cvsimport3.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_cvsimport3.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_cvsimport3.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_cvsimport3.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:5: rm test_keys"
echo t_cvsimport3.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >file1.0 <<'_ATEOF'
version 0 of test file1
_ATEOF


cat >file1.1 <<'_ATEOF'
version 1 of test file1
_ATEOF


cat >file1.2 <<'_ATEOF'
version 2 of test file1
_ATEOF


cat >file2.0 <<'_ATEOF'
version 0 of test file2
_ATEOF


cat >file2.1 <<'_ATEOF'
version 1 of test file2
_ATEOF


cat >changelog.0 <<'_ATEOF'
first changelog entry
_ATEOF


cat >changelog.1 <<'_ATEOF'
second changelog

first changelog entry
_ATEOF


cat >changelog.2 <<'_ATEOF'
third changelog -not on branch-

second changelog

first changelog entry
_ATEOF


cat >changelog.3 <<'_ATEOF'
third changelog -on branch-

second changelog

first changelog entry
_ATEOF


F1SHA0=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify file1.0`
F1SHA1=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify file1.1`
F1SHA2=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify file1.2`
F2SHA0=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify file2.0`
T2SHA1=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify file2.1`
CSHA0=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify changelog.0`
CSHA1=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify changelog.1`
CSHA2=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify changelog.2`
CSHA3=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify changelog.3`

# build the cvs repository

CVSROOT=`pwd`/cvs-repository
$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:57: cvs -q -d \$CVSROOT init"
echo t_cvsimport3.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -q -d $CVSROOT init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -q -d $CVSROOT init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -q -d $CVSROOT init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:58: test -e \$CVSROOT"
echo t_cvsimport3.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test -e $CVSROOT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e $CVSROOT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e $CVSROOT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:59: test -e \$CVSROOT/CVSROOT"
echo t_cvsimport3.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test -e $CVSROOT/CVSROOT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e $CVSROOT/CVSROOT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e $CVSROOT/CVSROOT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:60: test -e \$CVSROOT/CVSROOT/modules"
echo t_cvsimport3.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test -e $CVSROOT/CVSROOT/modules" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e $CVSROOT/CVSROOT/modules ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e $CVSROOT/CVSROOT/modules ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# create the initial 3rd-party vendor import

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:64: mkdir importdir"
echo t_cvsimport3.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir importdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir importdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:64: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:65: cp file1.0 importdir/file1"
echo t_cvsimport3.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp file1.0 importdir/file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp file1.0 importdir/file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:66: cp file2.0 importdir/file2"
echo t_cvsimport3.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp file2.0 importdir/file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp file2.0 importdir/file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:66: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:67: cp changelog.0 importdir/changelog"
echo t_cvsimport3.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp changelog.0 importdir/changelog ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp changelog.0 importdir/changelog ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:67: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:68: cd importdir && cvs -d \$CVSROOT import -m \"Initial import of VENDORWARE 1\" testsrc VENDOR VENDOR_REL_1"
echo t_cvsimport3.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd importdir && cvs -d $CVSROOT import -m \"Initial import of VENDORWARE 1\" testsrc VENDOR VENDOR_REL_1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd importdir && cvs -d $CVSROOT import -m "Initial import of VENDORWARE 1" testsrc VENDOR VENDOR_REL_1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd importdir && cvs -d $CVSROOT import -m "Initial import of VENDORWARE 1" testsrc VENDOR VENDOR_REL_1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# now we alter some of the files.
$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:71: cvs -d \$CVSROOT co testsrc"
echo t_cvsimport3.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT co testsrc" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT co testsrc ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT co testsrc ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:72: cp file1.1 testsrc/file1"
echo t_cvsimport3.at:72 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp file1.1 testsrc/file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp file1.1 testsrc/file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:72: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:73: cp changelog.1 testsrc/changelog"
echo t_cvsimport3.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp changelog.1 testsrc/changelog ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp changelog.1 testsrc/changelog ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:73: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:74: cd testsrc; cvs -d \$CVSROOT commit -m 'commit 0'"
echo t_cvsimport3.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd testsrc; cvs -d $CVSROOT commit -m 'commit 0'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd testsrc; cvs -d $CVSROOT commit -m 'commit 0' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd testsrc; cvs -d $CVSROOT commit -m 'commit 0' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# now we create a branch
$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:77: cd testsrc; cvs -d \$CVSROOT tag -b branched"
echo t_cvsimport3.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd testsrc; cvs -d $CVSROOT tag -b branched" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd testsrc; cvs -d $CVSROOT tag -b branched ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd testsrc; cvs -d $CVSROOT tag -b branched ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:78: cd testsrc; cvs -d \$CVSROOT up -r branched"
echo t_cvsimport3.at:78 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd testsrc; cvs -d $CVSROOT up -r branched" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd testsrc; cvs -d $CVSROOT up -r branched ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd testsrc; cvs -d $CVSROOT up -r branched ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:78: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# alter the files on the branch
$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:81: cp file1.2 testsrc/file1"
echo t_cvsimport3.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp file1.2 testsrc/file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp file1.2 testsrc/file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:81: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:82: cp file2.1 testsrc/file2"
echo t_cvsimport3.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp file2.1 testsrc/file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp file2.1 testsrc/file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:83: cp changelog.3 testsrc/changelog"
echo t_cvsimport3.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp changelog.3 testsrc/changelog ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp changelog.3 testsrc/changelog ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:84: cd testsrc; cvs -d \$CVSROOT commit -m 'commit on branch'"
echo t_cvsimport3.at:84 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd testsrc; cvs -d $CVSROOT commit -m 'commit on branch'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd testsrc; cvs -d $CVSROOT commit -m 'commit on branch' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd testsrc; cvs -d $CVSROOT commit -m 'commit on branch' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:84: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# and create some mainline changes after the branch
$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:87: cd testsrc; cvs -d \$CVSROOT up -A"
echo t_cvsimport3.at:87 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd testsrc; cvs -d $CVSROOT up -A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd testsrc; cvs -d $CVSROOT up -A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd testsrc; cvs -d $CVSROOT up -A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:87: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:88: cp changelog.2 testsrc/changelog"
echo t_cvsimport3.at:88 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp changelog.2 testsrc/changelog ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp changelog.2 testsrc/changelog ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:88: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:89: cd testsrc; cvs -d \$CVSROOT commit -m 'commit on mainline after branch'"
echo t_cvsimport3.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd testsrc; cvs -d $CVSROOT commit -m 'commit on mainline after branch'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd testsrc; cvs -d $CVSROOT commit -m 'commit on mainline after branch' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd testsrc; cvs -d $CVSROOT commit -m 'commit on mainline after branch' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:89: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# import into monotone and check presence of files

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:93: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=test cvs_import \$CVSROOT/testsrc"
echo t_cvsimport3.at:93 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=test cvs_import $CVSROOT/testsrc" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=test cvs_import $CVSROOT/testsrc ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=test cvs_import $CVSROOT/testsrc ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:93: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# also check that checkout is correct
# right one.

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:98: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --branch=test maindir"
echo t_cvsimport3.at:98 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=test maindir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=test maindir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=test maindir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:98: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:99: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --branch=test.branched branchdir"
echo t_cvsimport3.at:99 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=test.branched branchdir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=test.branched branchdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=test.branched branchdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:99: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:101: cmp file1.1 maindir/file1"
echo t_cvsimport3.at:101 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp file1.1 maindir/file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp file1.1 maindir/file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:101: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:102: cmp file2.0 maindir/file2"
echo t_cvsimport3.at:102 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp file2.0 maindir/file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp file2.0 maindir/file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:102: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:103: cmp changelog.2 maindir/changelog"
echo t_cvsimport3.at:103 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp changelog.2 maindir/changelog ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp changelog.2 maindir/changelog ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:103: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:105: cmp file1.2 branchdir/file1"
echo t_cvsimport3.at:105 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp file1.2 branchdir/file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp file1.2 branchdir/file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:105: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:106: cmp file2.1 branchdir/file2"
echo t_cvsimport3.at:106 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp file2.1 branchdir/file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp file2.1 branchdir/file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:106: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport3.at:107: cmp changelog.3 branchdir/changelog"
echo t_cvsimport3.at:107 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp changelog.3 branchdir/changelog ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp changelog.3 branchdir/changelog ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport3.at:107: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  223 ) # 223. t_commit_message_file.at:1: commit with --message-file
    at_setup_line='t_commit_message_file.at:1'
    at_desc='commit with --message-file'
    $at_quiet $ECHO_N "223: commit with --message-file                   $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "223. t_commit_message_file.at:1: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_commit_message_file.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_commit_message_file.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_message_file.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_message_file.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_commit_message_file.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_message_file.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_message_file.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_commit_message_file.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_message_file.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_message_file.at:3: rm test_keys"
echo t_commit_message_file.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_message_file.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_commit_message_file.at:5: rm -f _MTN/log"
echo t_commit_message_file.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f _MTN/log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f _MTN/log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_message_file.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


#--------------------
#first, verify that --message-file actually works
#--------------------

cat >input.txt <<'_ATEOF'
version 0 of the file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_commit_message_file.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add input.txt"
echo t_commit_message_file.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_message_file.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >msgfile.txt <<'_ATEOF'
this commit uses the --message-file option
_ATEOF


$at_traceoff
echo "$at_srcdir/t_commit_message_file.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message-file=msgfile.txt"
echo t_commit_message_file.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message-file=msgfile.txt" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message-file=msgfile.txt ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message-file=msgfile.txt ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_message_file.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


TSHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_commit_message_file.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls certs \$TSHA"
echo t_commit_message_file.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $TSHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $TSHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $TSHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_message_file.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_message_file.at:23: grep 'this commit uses the --message-file option' stdout >/dev/null"
echo t_commit_message_file.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'this commit uses the --message-file option' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'this commit uses the --message-file option' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_message_file.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


#--------------------
#also with a file coming outside the workspace
#--------------------
$at_traceoff
echo "$at_srcdir/t_commit_message_file.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch alt_wrk"
echo t_commit_message_file.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch alt_wrk" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch alt_wrk ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch alt_wrk ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_message_file.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >alt_wrk/input1.txt <<'_ATEOF'
files... files...
_ATEOF


cat >message-out-of-copy.txt <<'_ATEOF'
out out out
_ATEOF


$at_traceoff
echo "$at_srcdir/t_commit_message_file.at:36: cd alt_wrk && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add input1.txt"
echo t_commit_message_file.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd alt_wrk && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input1.txt" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd alt_wrk && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input1.txt ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd alt_wrk && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input1.txt ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_message_file.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_commit_message_file.at:38: cd alt_wrk && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=outbranch commit --message-file=../message-out-of-copy.txt"
echo t_commit_message_file.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd alt_wrk && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=outbranch commit --message-file=../message-out-of-copy.txt" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd alt_wrk && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=outbranch commit --message-file=../message-out-of-copy.txt ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd alt_wrk && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=outbranch commit --message-file=../message-out-of-copy.txt ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_message_file.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


TSHA=`cd alt_wrk && cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_commit_message_file.at:41: cd alt_wrk && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls certs \$TSHA"
echo t_commit_message_file.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd alt_wrk && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $TSHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd alt_wrk && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $TSHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd alt_wrk && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $TSHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_message_file.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_message_file.at:42: grep 'out out out' stdout >/dev/null"
echo t_commit_message_file.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'out out out' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'out out out' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_message_file.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


#--------------------
#start with the failures: non existing file
#--------------------
cat >input2.txt <<'_ATEOF'
another file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_commit_message_file.at:50: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add input2.txt"
echo t_commit_message_file.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input2.txt" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input2.txt ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input2.txt ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_message_file.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_commit_message_file.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message-file=to-be-or-not-to-be.txt"
echo t_commit_message_file.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message-file=to-be-or-not-to-be.txt" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message-file=to-be-or-not-to-be.txt ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message-file=to-be-or-not-to-be.txt ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_commit_message_file.at:52: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


#--------------------
#then verify that --message and --message-file together cause an error
#--------------------

$at_traceoff
echo "$at_srcdir/t_commit_message_file.at:58: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message-file=msgfile.txt --message=\"also a message\""
echo t_commit_message_file.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message-file=msgfile.txt --message=\"also a message\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message-file=msgfile.txt --message="also a message" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message-file=msgfile.txt --message="also a message" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_commit_message_file.at:58: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# --------------------
# finally, --message-file and a filled _MTN/log should also fail
# --------------------

cat >commit_log.lua <<'_ATEOF'

function edit_comment(summary, user_log_file)
  return user_log_file
end
_ATEOF


cat >_MTN/log <<'_ATEOF'
Log entry
_ATEOF


$at_traceoff
echo "$at_srcdir/t_commit_message_file.at:73: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=commit_log.lua commit --message-file=msgfile.txt"
echo t_commit_message_file.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=commit_log.lua commit --message-file=msgfile.txt" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=commit_log.lua commit --message-file=msgfile.txt ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=commit_log.lua commit --message-file=msgfile.txt ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_commit_message_file.at:73: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  224 ) # 224. t_automate_attributes.at:1: automate attributes
    at_setup_line='t_automate_attributes.at:1'
    at_desc='automate attributes'
    $at_quiet $ECHO_N "224: automate attributes                          $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "224. t_automate_attributes.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_automate_attributes.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_automate_attributes.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_attributes.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_attributes.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_automate_attributes.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_attributes.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_attributes.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_automate_attributes.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_attributes.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_attributes.at:2: rm test_keys"
echo t_automate_attributes.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_attributes.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
foo bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_attributes.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_automate_attributes.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_attributes.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_attributes.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr set testfile unique_key unique_value"
echo t_automate_attributes.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set testfile unique_key unique_value" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set testfile unique_key unique_value ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set testfile unique_key unique_value ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_attributes.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_attributes.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate attributes testfile"
echo t_automate_attributes.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate attributes testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate attributes testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate attributes testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_attributes.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_attributes.at:8: grep unique_key stdout >/dev/null"
echo t_automate_attributes.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep unique_key stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep unique_key stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_attributes.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_attributes.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate attributes"
echo t_automate_attributes.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate attributes" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate attributes ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate attributes ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_attributes.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_attributes.at:10: grep testfile stdout >/dev/null"
echo t_automate_attributes.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_attributes.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  225 ) # 225. t_unidiff3.at:1: diff against empty file
    at_setup_line='t_unidiff3.at:1'
    at_desc='diff against empty file'
    $at_quiet $ECHO_N "225: diff against empty file                      $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "225. t_unidiff3.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_unidiff3.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_unidiff3.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff3.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff3.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_unidiff3.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff3.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff3.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_unidiff3.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff3.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff3.at:2: rm test_keys"
echo t_unidiff3.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff3.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_unidiff3.at:4: printf \"1\\n2\\n\""
echo t_unidiff3.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; printf "1\n2\n" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; printf "1\n2\n" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff3.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff3.at:5: mv stdout foo"
echo t_unidiff3.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff3.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_unidiff3.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_unidiff3.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff3.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff3.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=foo commit -m foo"
echo t_unidiff3.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=foo commit -m foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=foo commit -m foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=foo commit -m foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff3.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_unidiff3.at:10: mv foo foo.away"
echo t_unidiff3.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv foo foo.away ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv foo foo.away ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff3.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff3.at:11: touch foo"
echo t_unidiff3.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; touch foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; touch foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff3.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff3.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff foo"
echo t_unidiff3.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff3.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unidiff3.at:13: mv stdout monodiff"
echo t_unidiff3.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout monodiff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout monodiff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff3.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# see whether the patch is well-formed
$at_traceoff
echo "$at_srcdir/t_unidiff3.at:16: patch -p0 -R < monodiff"
echo t_unidiff3.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; patch -p0 -R < monodiff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; patch -p0 -R < monodiff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff3.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# see whether the resulting file is the same as the original one
$at_traceoff
echo "$at_srcdir/t_unidiff3.at:19: cmp foo foo.away"
echo t_unidiff3.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp foo foo.away ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp foo foo.away ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unidiff3.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  226 ) # 226. t_netsync_permissions.at:3: netsync permissions
    at_setup_line='t_netsync_permissions.at:3'
    at_desc='netsync permissions'
    $at_quiet $ECHO_N "226: netsync permissions                          $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "226. t_netsync_permissions.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_netsync_permissions.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_netsync_permissions.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_netsync_permissions.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:5: rm test_keys"
echo t_netsync_permissions.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# generate a new key

OTHER=other@test.net
$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:10: (echo \$OTHER; echo \$OTHER) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net genkey \$OTHER"
echo t_netsync_permissions.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo $OTHER; echo $OTHER) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $OTHER" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo $OTHER; echo $OTHER) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $OTHER ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo $OTHER; echo $OTHER) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey $OTHER ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:12: cp test.db test2.db"
echo t_netsync_permissions.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:12: cp -r keys/ keys2"
echo t_netsync_permissions.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:12: cp test.db test3.db"
echo t_netsync_permissions.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:12: cp -r keys/ keys3"
echo t_netsync_permissions.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT



# test with open security settings
$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:15: mkdir open"
echo t_netsync_permissions.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir open ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir open ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >open/read-permissions <<'_ATEOF'

pattern "*"
allow "*"
_ATEOF

cat >open/write-permissions <<'_ATEOF'

*
_ATEOF



cat >badfile <<'_ATEOF'
badfile
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add badfile"
echo t_netsync_permissions.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add badfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add badfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add badfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=badbranch commit --message badfile"
echo t_netsync_permissions.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=badbranch commit --message badfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=badbranch commit --message badfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=badbranch commit --message badfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:28: cp test.db clean.db"
echo t_netsync_permissions.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db clean.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db clean.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:29: cp -r keys/ clean_keys"
echo t_netsync_permissions.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ clean_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ clean_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
testfile
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_netsync_permissions.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message testfile"
echo t_netsync_permissions.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

BASE=`cat _MTN/revision`



# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --rcfile=$_ROOT_DIR/min_hooks.lua --key=tester@test.net --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch --confdir open &
sleep 4


# anonymous pull

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:40: cp clean.db test2.db"
echo t_netsync_permissions.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp clean.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp clean.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:41: rm -r keys2 && cp -r clean_keys/ keys2"
echo t_netsync_permissions.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -r keys2 && cp -r clean_keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -r keys2 && cp -r clean_keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --key=\"\" localhost:\$_PORT testbranch"
echo t_netsync_permissions.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --key=\"\" localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --key="" localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --key="" localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$BASE"
echo t_netsync_permissions.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# pull with default key

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:47: cp clean.db test2.db"
echo t_netsync_permissions.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp clean.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp clean.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:48: rm -r keys2 && cp -r clean_keys/ keys2"
echo t_netsync_permissions.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -r keys2 && cp -r clean_keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -r keys2 && cp -r clean_keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:49: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_netsync_permissions.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:50: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$BASE"
echo t_netsync_permissions.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# pull with other key

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:54: cp clean.db test2.db"
echo t_netsync_permissions.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp clean.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp clean.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:55: rm -r keys2 && cp -r clean_keys/ keys2"
echo t_netsync_permissions.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -r keys2 && cp -r clean_keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -r keys2 && cp -r clean_keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:56: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --key=\$OTHER localhost:\$_PORT testbranch"
echo t_netsync_permissions.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --key=$OTHER localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --key=$OTHER localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --key=$OTHER localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:57: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$BASE"
echo t_netsync_permissions.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# pull with unknown key fails

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:61: cp clean.db test2.db"
echo t_netsync_permissions.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp clean.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp clean.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:62: rm -r keys2 && cp -r clean_keys/ keys2"
echo t_netsync_permissions.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -r keys2 && cp -r clean_keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -r keys2 && cp -r clean_keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

UNKNOWN=unknown@test.net
$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:64: (echo \$UNKNOWN; echo \$UNKNOWN) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 genkey \$UNKNOWN"
echo t_netsync_permissions.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo $UNKNOWN; echo $UNKNOWN) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 genkey $UNKNOWN" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo $UNKNOWN; echo $UNKNOWN) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 genkey $UNKNOWN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo $UNKNOWN; echo $UNKNOWN) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 genkey $UNKNOWN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:64: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:65: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --key=\$UNKNOWN localhost:\$_PORT testbranch"
echo t_netsync_permissions.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --key=$UNKNOWN localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --key=$UNKNOWN localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --key=$UNKNOWN localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:65: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:66: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$BASE"
echo t_netsync_permissions.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:66: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# push with default key

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:70: cp test.db test2.db"
echo t_netsync_permissions.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:71: rm -r keys2 && cp -r keys/ keys2"
echo t_netsync_permissions.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -r keys2 && cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -r keys2 && cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:72: rm -rf _MTN.old"
echo t_netsync_permissions.at:72 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:72: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:72: mv  _MTN _MTN.old"
echo t_netsync_permissions.at:72 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:72: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:72: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=\$BASE ."
echo t_netsync_permissions.at:72 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$BASE ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$BASE . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$BASE . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:72: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:72: test \$PROBE_R_SHA = \$BASE"
echo t_netsync_permissions.at:72 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:72: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >default <<'_ATEOF'
default
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:74: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add default"
echo t_netsync_permissions.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add default" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add default ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add default ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:75: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message default"
echo t_netsync_permissions.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message default" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message default ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message default ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

DEFAULT_REV=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:77: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:\$_PORT testbranch"
echo t_netsync_permissions.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# push with other key


$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:81: rm -rf _MTN.old"
echo t_netsync_permissions.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:81: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:81: mv  _MTN _MTN.old"
echo t_netsync_permissions.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:81: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:81: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=\$BASE ."
echo t_netsync_permissions.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$BASE ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$BASE . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$BASE . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:81: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:81: test \$PROBE_R_SHA = \$BASE"
echo t_netsync_permissions.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:81: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >other <<'_ATEOF'
other
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:83: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add other"
echo t_netsync_permissions.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add other" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add other ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add other ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:84: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message other"
echo t_netsync_permissions.at:84 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message other" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message other ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message other ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:84: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

OTHER_REV=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:86: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push --key=\$OTHER  localhost:\$_PORT testbranch"
echo t_netsync_permissions.at:86 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push --key=$OTHER  localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push --key=$OTHER  localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push --key=$OTHER  localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:86: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# push with unknown key fails


$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:90: rm -rf _MTN.old"
echo t_netsync_permissions.at:90 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:90: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:90: mv  _MTN _MTN.old"
echo t_netsync_permissions.at:90 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:90: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:90: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=\$BASE ."
echo t_netsync_permissions.at:90 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$BASE ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$BASE . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$BASE . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:90: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:90: test \$PROBE_R_SHA = \$BASE"
echo t_netsync_permissions.at:90 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:90: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >unknown <<'_ATEOF'
unknown
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:92: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add unknown"
echo t_netsync_permissions.at:92 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add unknown" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add unknown ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add unknown ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:92: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:93: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message unknown"
echo t_netsync_permissions.at:93 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message unknown" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message unknown ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message unknown ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:93: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

UNKNOWN_REV=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:95: (echo \$UNKNOWN; echo \$UNKNOWN) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 genkey \$UNKNOWN"
echo t_netsync_permissions.at:95 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo $UNKNOWN; echo $UNKNOWN) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 genkey $UNKNOWN" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo $UNKNOWN; echo $UNKNOWN) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 genkey $UNKNOWN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo $UNKNOWN; echo $UNKNOWN) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 genkey $UNKNOWN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:95: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:96: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push --key=\$UNKNOWN localhost:\$_PORT testbranch"
echo t_netsync_permissions.at:96 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push --key=$UNKNOWN localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push --key=$UNKNOWN localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push --key=$UNKNOWN localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:96: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon






# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:100: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision \$DEFAULT_REV"
echo t_netsync_permissions.at:100 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $DEFAULT_REV" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $DEFAULT_REV ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $DEFAULT_REV ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:100: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:101: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision \$OTHER_REV"
echo t_netsync_permissions.at:101 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $OTHER_REV" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $OTHER_REV ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $OTHER_REV ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:101: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:102: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision \$UNKNOWN_REV"
echo t_netsync_permissions.at:102 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $UNKNOWN_REV" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $UNKNOWN_REV ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $UNKNOWN_REV ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:102: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# test with closed security settings
$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:106: mkdir closed"
echo t_netsync_permissions.at:106 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir closed ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir closed ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:106: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >closed/read-permissions <<'_ATEOF'

pattern "*"
allow "tester@test.net"
_ATEOF

cat >closed/write-permissions <<'_ATEOF'

tester@test.net
_ATEOF


$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:115: cp clean.db test.db"
echo t_netsync_permissions.at:115 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp clean.db test.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp clean.db test.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:115: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:116: rm -r keys && cp -r clean_keys/ keys"
echo t_netsync_permissions.at:116 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -r keys && cp -r clean_keys/ keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -r keys && cp -r clean_keys/ keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:116: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >_MTN/revision  <<'_ATEOF'
_ATEOF



cat >testfile <<'_ATEOF'
testfile
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:120: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add testfile"
echo t_netsync_permissions.at:120 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:120: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:121: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message testfile"
echo t_netsync_permissions.at:121 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:121: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

BASE=`cat _MTN/revision`



# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --rcfile=$_ROOT_DIR/min_hooks.lua --key=tester@test.net --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch --confdir closed &
sleep 4


# anonymous pull fails

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:128: cp clean.db test2.db"
echo t_netsync_permissions.at:128 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp clean.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp clean.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:128: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:129: rm -r keys2 && cp -r clean_keys/ keys2"
echo t_netsync_permissions.at:129 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -r keys2 && cp -r clean_keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -r keys2 && cp -r clean_keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:129: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:130: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --key=\"\" localhost:\$_PORT testbranch"
echo t_netsync_permissions.at:130 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --key=\"\" localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --key="" localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --key="" localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:130: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:131: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$BASE"
echo t_netsync_permissions.at:131 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:131: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# pull with default key

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:135: cp clean.db test2.db"
echo t_netsync_permissions.at:135 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp clean.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp clean.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:135: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:136: rm -r keys2 && cp -r clean_keys/ keys2"
echo t_netsync_permissions.at:136 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -r keys2 && cp -r clean_keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -r keys2 && cp -r clean_keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:136: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:137: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_netsync_permissions.at:137 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:137: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:138: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$BASE"
echo t_netsync_permissions.at:138 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:138: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# pull with bad branch fails

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:142: cp clean.db test2.db"
echo t_netsync_permissions.at:142 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp clean.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp clean.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:142: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:143: rm -r keys2 && cp -r clean_keys/ keys2"
echo t_netsync_permissions.at:143 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -r keys2 && cp -r clean_keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -r keys2 && cp -r clean_keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:143: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:144: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT badbranch"
echo t_netsync_permissions.at:144 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT badbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT badbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT badbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:144: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:145: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$BASE"
echo t_netsync_permissions.at:145 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:145: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# pull with other key fails

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:149: cp clean.db test2.db"
echo t_netsync_permissions.at:149 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp clean.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp clean.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:149: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:150: rm -r keys2 && cp -r clean_keys/ keys2"
echo t_netsync_permissions.at:150 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -r keys2 && cp -r clean_keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -r keys2 && cp -r clean_keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:150: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:151: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --key=\$OTHER localhost:\$_PORT testbranch"
echo t_netsync_permissions.at:151 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --key=$OTHER localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --key=$OTHER localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --key=$OTHER localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:151: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:152: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$BASE"
echo t_netsync_permissions.at:152 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:152: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# pull with unknown key fails

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:156: cp clean.db test2.db"
echo t_netsync_permissions.at:156 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp clean.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp clean.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:156: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:157: rm -r keys2 && cp -r clean_keys/ keys2"
echo t_netsync_permissions.at:157 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -r keys2 && cp -r clean_keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -r keys2 && cp -r clean_keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:157: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

UNKNOWN=unknown@test.net
$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:159: (echo \$UNKNOWN; echo \$UNKNOWN) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 genkey \$UNKNOWN"
echo t_netsync_permissions.at:159 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo $UNKNOWN; echo $UNKNOWN) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 genkey $UNKNOWN" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo $UNKNOWN; echo $UNKNOWN) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 genkey $UNKNOWN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo $UNKNOWN; echo $UNKNOWN) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 genkey $UNKNOWN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:159: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:160: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --key=\$UNKNOWN localhost:\$_PORT testbranch"
echo t_netsync_permissions.at:160 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --key=$UNKNOWN localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --key=$UNKNOWN localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --key=$UNKNOWN localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:160: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:161: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$BASE"
echo t_netsync_permissions.at:161 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $BASE ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:161: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# push with default key

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:165: cp test.db test2.db"
echo t_netsync_permissions.at:165 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:165: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:166: rm -r keys2 && cp -r keys/ keys2"
echo t_netsync_permissions.at:166 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -r keys2 && cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -r keys2 && cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:166: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:167: rm -rf _MTN.old"
echo t_netsync_permissions.at:167 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:167: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:167: mv  _MTN _MTN.old"
echo t_netsync_permissions.at:167 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:167: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:167: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=\$BASE ."
echo t_netsync_permissions.at:167 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$BASE ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$BASE . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$BASE . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:167: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:167: test \$PROBE_R_SHA = \$BASE"
echo t_netsync_permissions.at:167 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:167: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >default <<'_ATEOF'
default
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:169: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add default"
echo t_netsync_permissions.at:169 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add default" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add default ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add default ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:169: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:170: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message default"
echo t_netsync_permissions.at:170 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message default" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message default ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message default ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:170: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

DEFAULT_REV=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:172: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:\$_PORT testbranch"
echo t_netsync_permissions.at:172 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:172: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# push with other key


$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:176: rm -rf _MTN.old"
echo t_netsync_permissions.at:176 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:176: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:176: mv  _MTN _MTN.old"
echo t_netsync_permissions.at:176 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:176: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:176: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=\$BASE ."
echo t_netsync_permissions.at:176 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$BASE ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$BASE . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$BASE . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:176: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:176: test \$PROBE_R_SHA = \$BASE"
echo t_netsync_permissions.at:176 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:176: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >other <<'_ATEOF'
other
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:178: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add other"
echo t_netsync_permissions.at:178 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add other" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add other ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add other ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:178: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:179: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message other"
echo t_netsync_permissions.at:179 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message other" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message other ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message other ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:179: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

OTHER_REV=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:181: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push --key=\$OTHER localhost:\$_PORT testbranch"
echo t_netsync_permissions.at:181 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push --key=$OTHER localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push --key=$OTHER localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push --key=$OTHER localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:181: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# push with unknown key fails


$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:185: rm -rf _MTN.old"
echo t_netsync_permissions.at:185 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:185: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:185: mv  _MTN _MTN.old"
echo t_netsync_permissions.at:185 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:185: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:185: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=\$BASE ."
echo t_netsync_permissions.at:185 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$BASE ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$BASE . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 checkout --revision=$BASE . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:185: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:185: test \$PROBE_R_SHA = \$BASE"
echo t_netsync_permissions.at:185 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:185: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >unknown <<'_ATEOF'
unknown
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:187: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add unknown"
echo t_netsync_permissions.at:187 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add unknown" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add unknown ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add unknown ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:187: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:188: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message unknown"
echo t_netsync_permissions.at:188 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message unknown" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message unknown ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit --message unknown ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:188: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

UNKNOWN_REV=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:190: (echo \$UNKNOWN; echo \$UNKNOWN) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 genkey \$UNKNOWN"
echo t_netsync_permissions.at:190 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo $UNKNOWN; echo $UNKNOWN) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 genkey $UNKNOWN" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo $UNKNOWN; echo $UNKNOWN) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 genkey $UNKNOWN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo $UNKNOWN; echo $UNKNOWN) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 genkey $UNKNOWN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:190: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:191: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push --key=\$UNKNOWN localhost:\$_PORT testbranch"
echo t_netsync_permissions.at:191 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push --key=$UNKNOWN localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push --key=$UNKNOWN localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push --key=$UNKNOWN localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:191: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon






# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:195: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision \$DEFAULT_REV"
echo t_netsync_permissions.at:195 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $DEFAULT_REV" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $DEFAULT_REV ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $DEFAULT_REV ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:195: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:196: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision \$OTHER_REV"
echo t_netsync_permissions.at:196 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $OTHER_REV" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $OTHER_REV ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $OTHER_REV ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:196: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_permissions.at:197: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision \$UNKNOWN_REV"
echo t_netsync_permissions.at:197 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $UNKNOWN_REV" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $UNKNOWN_REV ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $UNKNOWN_REV ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_permissions.at:197: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  227 ) # 227. t_update_with_blocked_rename.at:1: update with blocked rename
    at_setup_line='t_update_with_blocked_rename.at:1'
    at_desc='update with blocked rename'
    $at_quiet $ECHO_N "227: update with blocked rename                   $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "227. t_update_with_blocked_rename.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_update_with_blocked_rename.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_update_with_blocked_rename.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_update_with_blocked_rename.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:2: rm test_keys"
echo t_update_with_blocked_rename.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This test is a bug report


# 1. Alice starts a project and creates some files
# 2. Bob checks out the project and gets the files
# 3. Bob creates a file bar, but forgets to add it
# 4. Alice renames one of her files to bar
# 5. Bob updates
#
# the update fails after moving renamed files to _MTN/tmp/N
# where N is the file's tid.
#
# Bob is left with a bunch of missing files.

$at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:18: mkdir alice"
echo t_update_with_blocked_rename.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir alice ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir alice ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

for i in 1 2 3 4 5 6 7 8 9 10
do
  $at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:21: echo \"file \$i\""
echo t_update_with_blocked_rename.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo \"file $i\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo "file $i" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo "file $i" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

  $at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:22: mv stdout alice/file.\$i"
echo t_update_with_blocked_rename.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "mv stdout alice/file.$i" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout alice/file.$i ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout alice/file.$i ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done

# Alice starts a projectand creates foo
$at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch setup alice"
echo t_update_with_blocked_rename.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch setup alice" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch setup alice ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch setup alice ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:27: (cd alice; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file.*)"
echo t_update_with_blocked_rename.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd alice; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file.*)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd alice; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file.*) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd alice; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file.*) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:28: (cd alice; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit -m 'alice adds files')"
echo t_update_with_blocked_rename.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd alice; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m 'alice adds files')" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd alice; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m 'alice adds files') ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd alice; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m 'alice adds files') ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Bob checks out project, gets files and creates file bar
$at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout bob"
echo t_update_with_blocked_rename.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout bob" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout bob ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout bob ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >bob/bar <<'_ATEOF'
bob's bar
_ATEOF


# Alice renames some files
$at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:36: (cd alice; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename file.3 bar)"
echo t_update_with_blocked_rename.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd alice; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename file.3 bar)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd alice; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename file.3 bar) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd alice; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename file.3 bar) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:37: (cd alice; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename file.4 bar.4)"
echo t_update_with_blocked_rename.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd alice; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename file.4 bar.4)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd alice; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename file.4 bar.4) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd alice; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename file.4 bar.4) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:38: (cd alice; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename file.5 bar.5)"
echo t_update_with_blocked_rename.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd alice; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename file.5 bar.5)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd alice; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename file.5 bar.5) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd alice; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename file.5 bar.5) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:39: mv alice/file.3 alice/bar"
echo t_update_with_blocked_rename.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv alice/file.3 alice/bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv alice/file.3 alice/bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:40: mv alice/file.4 alice/bar.4"
echo t_update_with_blocked_rename.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv alice/file.4 alice/bar.4 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv alice/file.4 alice/bar.4 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:41: mv alice/file.5 alice/bar.5"
echo t_update_with_blocked_rename.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv alice/file.5 alice/bar.5 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv alice/file.5 alice/bar.5 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:42: (cd alice; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit -m 'alice renames files')"
echo t_update_with_blocked_rename.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd alice; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m 'alice renames files')" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd alice; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m 'alice renames files') ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd alice; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m 'alice renames files') ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Bob updates but bar is in the way
$at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:45: (cd bob; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update)"
echo t_update_with_blocked_rename.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd bob; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd bob; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd bob; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# non-renamed files remain

for i in 1 2 6 7 8 9 10
do
  $at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:51: test -e bob/file.\$i"
echo t_update_with_blocked_rename.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test -e bob/file.$i" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e bob/file.$i ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e bob/file.$i ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:51: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done

# renamed files are gone

$at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:56: test -e bob/file.3"
echo t_update_with_blocked_rename.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e bob/file.3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e bob/file.3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:56: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:57: test -e bob/file.4"
echo t_update_with_blocked_rename.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e bob/file.4 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e bob/file.4 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:57: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:58: test -e bob/file.5"
echo t_update_with_blocked_rename.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e bob/file.5 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e bob/file.5 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:58: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# original bar still exists

$at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:62: test -e bob/bar"
echo t_update_with_blocked_rename.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e bob/bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e bob/bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# other renames are also gone

$at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:66: test -e bob/bar.4"
echo t_update_with_blocked_rename.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e bob/bar.4 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e bob/bar.4 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:66: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_blocked_rename.at:67: test -e bob/bar.5"
echo t_update_with_blocked_rename.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e bob/bar.5 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e bob/bar.5 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_update_with_blocked_rename.at:67: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  228 ) # 228. t_drop_vs_dropadd.at:2: merge(<drop a>, <drop a, add a>)
    at_setup_line='t_drop_vs_dropadd.at:2'
    at_desc='merge(<drop a>, <drop a, add a>)'
    $at_quiet $ECHO_N "228: merge(<drop a>, <drop a, add a>)             $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "228. t_drop_vs_dropadd.at:2: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_drop_vs_dropadd.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_drop_vs_dropadd.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_dropadd.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_vs_dropadd.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_drop_vs_dropadd.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_dropadd.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_vs_dropadd.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_drop_vs_dropadd.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_dropadd.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_vs_dropadd.at:4: rm test_keys"
echo t_drop_vs_dropadd.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_dropadd.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >original <<'_ATEOF'
some stuff here
_ATEOF


cat >replaced <<'_ATEOF'
the re-added file
_ATEOF


cat >nonce <<'_ATEOF'
...nothing here...
_ATEOF


$at_traceoff
echo "$at_srcdir/t_drop_vs_dropadd.at:15: cp original testfile"
echo t_drop_vs_dropadd.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp original testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp original testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_dropadd.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_vs_dropadd.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_drop_vs_dropadd.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_dropadd.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_drop_vs_dropadd.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_drop_vs_dropadd.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_dropadd.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


BASE_R_SHA=`cat _MTN/revision`

# drop it
$at_traceoff
echo "$at_srcdir/t_drop_vs_dropadd.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop testfile"
echo t_drop_vs_dropadd.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_dropadd.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_drop_vs_dropadd.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_drop_vs_dropadd.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_dropadd.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_drop_vs_dropadd.at:24: rm -rf _MTN.old"
echo t_drop_vs_dropadd.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_dropadd.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_vs_dropadd.at:24: mv  _MTN _MTN.old"
echo t_drop_vs_dropadd.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_dropadd.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_vs_dropadd.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$BASE_R_SHA ."
echo t_drop_vs_dropadd.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$BASE_R_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_dropadd.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_drop_vs_dropadd.at:24: test \$PROBE_R_SHA = \$BASE_R_SHA"
echo t_drop_vs_dropadd.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $BASE_R_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $BASE_R_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $BASE_R_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_dropadd.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# on the other side of the fork, drop it ...
$at_traceoff
echo "$at_srcdir/t_drop_vs_dropadd.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop testfile"
echo t_drop_vs_dropadd.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_dropadd.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# we add this file so that we don't end up with the same revision as
# our first "drop" commit
$at_traceoff
echo "$at_srcdir/t_drop_vs_dropadd.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add nonce"
echo t_drop_vs_dropadd.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add nonce" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add nonce ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add nonce ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_dropadd.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_drop_vs_dropadd.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_drop_vs_dropadd.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_dropadd.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# ... and add the replacement
# on the other side of the fork, drop it
$at_traceoff
echo "$at_srcdir/t_drop_vs_dropadd.at:35: cp replaced testfile"
echo t_drop_vs_dropadd.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp replaced testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp replaced testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_dropadd.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_vs_dropadd.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_drop_vs_dropadd.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_dropadd.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_drop_vs_dropadd.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_drop_vs_dropadd.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_dropadd.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_drop_vs_dropadd.at:39: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge"
echo t_drop_vs_dropadd.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_dropadd.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_vs_dropadd.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch clean"
echo t_drop_vs_dropadd.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch clean" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch clean ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch clean ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_dropadd.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check that the file is the replacement one
$at_traceoff
echo "$at_srcdir/t_drop_vs_dropadd.at:43: cmp clean/testfile replaced"
echo t_drop_vs_dropadd.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp clean/testfile replaced ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp clean/testfile replaced ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_dropadd.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# just for good measure
$at_traceoff
echo "$at_srcdir/t_drop_vs_dropadd.at:45: cmp clean/nonce nonce"
echo t_drop_vs_dropadd.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp clean/nonce nonce ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp clean/nonce nonce ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_vs_dropadd.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  229 ) # 229. t_annotate_lineage_dependent.at:1: annotate where lineage depends on traversal
    at_setup_line='t_annotate_lineage_dependent.at:1'
    at_desc='annotate where lineage depends on traversal'
    $at_quiet $ECHO_N "229: annotate where lineage depends on traversal  $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "229. t_annotate_lineage_dependent.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_annotate_lineage_dependent.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_annotate_lineage_dependent.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_lineage_dependent.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_lineage_dependent.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_annotate_lineage_dependent.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_lineage_dependent.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_lineage_dependent.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_annotate_lineage_dependent.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_lineage_dependent.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_lineage_dependent.at:2: rm test_keys"
echo t_annotate_lineage_dependent.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_lineage_dependent.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo.A <<'_ATEOF'
a
b
c
d
e
_ATEOF


cat >foo.B <<'_ATEOF'
x
b
p
d
e
_ATEOF


cat >foo.C <<'_ATEOF'
a
b
q
d changed in C
y
_ATEOF


# foo.D, the ultimate version, as created by our merge3 hook:
# a
# b
# p
# d changed in C
# e
# added line

cat >merge.lua <<'_ATEOF'

function merge3 (ancestor, left, right)
        data = "a\nb\np\nd changed in C\ne\nadded line\n"
        return data
end
_ATEOF



$at_traceoff
echo "$at_srcdir/t_annotate_lineage_dependent.at:41: cp foo.A foo"
echo t_annotate_lineage_dependent.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foo.A foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foo.A foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_lineage_dependent.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_lineage_dependent.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_annotate_lineage_dependent.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_lineage_dependent.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate_lineage_dependent.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate_lineage_dependent.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_lineage_dependent.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REVA=`cat _MTN/revision`
echo rev letter A $REVA

$at_traceoff
echo "$at_srcdir/t_annotate_lineage_dependent.at:47: cp foo.B foo"
echo t_annotate_lineage_dependent.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foo.B foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foo.B foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_lineage_dependent.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate_lineage_dependent.at:48: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate_lineage_dependent.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_lineage_dependent.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REVB=`cat _MTN/revision`
echo rev letter B $REVB


$at_traceoff
echo "$at_srcdir/t_annotate_lineage_dependent.at:52: rm -rf _MTN.old"
echo t_annotate_lineage_dependent.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_lineage_dependent.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_lineage_dependent.at:52: mv  _MTN _MTN.old"
echo t_annotate_lineage_dependent.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_lineage_dependent.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_lineage_dependent.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REVA ."
echo t_annotate_lineage_dependent.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REVA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REVA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REVA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_lineage_dependent.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_annotate_lineage_dependent.at:52: test \$PROBE_R_SHA = \$REVA"
echo t_annotate_lineage_dependent.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $REVA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $REVA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $REVA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_lineage_dependent.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_annotate_lineage_dependent.at:54: cp foo.C foo"
echo t_annotate_lineage_dependent.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foo.C foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foo.C foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_lineage_dependent.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate_lineage_dependent.at:55: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate_lineage_dependent.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_lineage_dependent.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REVC=`cat _MTN/revision`
echo rev letter C $REVC

$at_traceoff
echo "$at_srcdir/t_annotate_lineage_dependent.at:59: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=./merge.lua merge"
echo t_annotate_lineage_dependent.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=./merge.lua merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=./merge.lua merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=./merge.lua merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_lineage_dependent.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_lineage_dependent.at:60: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_annotate_lineage_dependent.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_lineage_dependent.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REVD=`cat _MTN/revision`
echo rev letter D $REVD

#
# annotate foo should now be
# REVA: a
# REVA: b
# REVB: p
# REVC: d changed in C
# REVA: e
# REVD: added line
#

$at_traceoff
echo "$at_srcdir/t_annotate_lineage_dependent.at:74: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --debug annotate foo"
echo t_annotate_lineage_dependent.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --debug annotate foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --debug annotate foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --debug annotate foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_lineage_dependent.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate_lineage_dependent.at:76: head -n 1 stdout | grep \$REVA"
echo t_annotate_lineage_dependent.at:76 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 1 stdout | grep $REVA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 1 stdout | grep $REVA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 1 stdout | grep $REVA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_lineage_dependent.at:76: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_lineage_dependent.at:77: head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REVA"
echo t_annotate_lineage_dependent.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_lineage_dependent.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_lineage_dependent.at:78: head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REVB"
echo t_annotate_lineage_dependent.at:78 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVB" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVB ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVB ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_lineage_dependent.at:78: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_lineage_dependent.at:79: head -n 4 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REVC"
echo t_annotate_lineage_dependent.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 4 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVC" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 4 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVC ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 4 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVC ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_lineage_dependent.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_lineage_dependent.at:80: head -n 5 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REVA"
echo t_annotate_lineage_dependent.at:80 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 5 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 5 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 5 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_lineage_dependent.at:80: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_lineage_dependent.at:81: head -n 6 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REVD"
echo t_annotate_lineage_dependent.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 6 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVD" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 6 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVD ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 6 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVD ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_lineage_dependent.at:81: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  230 ) # 230. t_annotate_split_line.at:1: annotate where line splits
    at_setup_line='t_annotate_split_line.at:1'
    at_desc='annotate where line splits'
    $at_quiet $ECHO_N "230: annotate where line splits                   $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "230. t_annotate_split_line.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_annotate_split_line.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_annotate_split_line.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_split_line.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_split_line.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_annotate_split_line.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_split_line.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_split_line.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_annotate_split_line.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_split_line.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_split_line.at:2: rm test_keys"
echo t_annotate_split_line.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_split_line.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo.A <<'_ATEOF'
a
ident
d
_ATEOF


cat >foo.B <<'_ATEOF'
a
ident
b
_ATEOF


cat >foo.C <<'_ATEOF'
c
ident
x
_ATEOF


# foo.D, the ultimate version, as created by our merge3 hook:
# a
# ident
# b
# c
# ident
# d

cat >merge.lua <<'_ATEOF'

function merge3 (ancestor, left, right)
        data = "a\nident\nb\nc\nident\nd\n"
        return data
end
_ATEOF



$at_traceoff
echo "$at_srcdir/t_annotate_split_line.at:35: cp foo.A foo"
echo t_annotate_split_line.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foo.A foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foo.A foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_split_line.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_split_line.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_annotate_split_line.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_split_line.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate_split_line.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate_split_line.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_split_line.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REVA=`cat _MTN/revision`
echo rev letter A $REVA

$at_traceoff
echo "$at_srcdir/t_annotate_split_line.at:41: cp foo.B foo"
echo t_annotate_split_line.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foo.B foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foo.B foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_split_line.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate_split_line.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate_split_line.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_split_line.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REVB=`cat _MTN/revision`
echo rev letter B $REVB


$at_traceoff
echo "$at_srcdir/t_annotate_split_line.at:46: rm -rf _MTN.old"
echo t_annotate_split_line.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_split_line.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_split_line.at:46: mv  _MTN _MTN.old"
echo t_annotate_split_line.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_split_line.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_split_line.at:46: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REVA ."
echo t_annotate_split_line.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REVA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REVA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REVA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_split_line.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_annotate_split_line.at:46: test \$PROBE_R_SHA = \$REVA"
echo t_annotate_split_line.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $REVA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $REVA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $REVA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_split_line.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_annotate_split_line.at:48: cp foo.C foo"
echo t_annotate_split_line.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foo.C foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foo.C foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_split_line.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate_split_line.at:49: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate_split_line.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_split_line.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REVC=`cat _MTN/revision`
echo rev letter C $REVC

$at_traceoff
echo "$at_srcdir/t_annotate_split_line.at:53: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=./merge.lua merge"
echo t_annotate_split_line.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=./merge.lua merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=./merge.lua merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=./merge.lua merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_split_line.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_split_line.at:54: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_annotate_split_line.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_split_line.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REVD=`cat _MTN/revision`
echo rev letter D $REVD

#
# annotate foo should now be
# REVA: a
# REVA: ident
# REVB: b
# REVC: c
# REVA: ident
# REVD: d
#

$at_traceoff
echo "$at_srcdir/t_annotate_split_line.at:68: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --debug annotate foo"
echo t_annotate_split_line.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --debug annotate foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --debug annotate foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --debug annotate foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_split_line.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate_split_line.at:70: head -n 1 stdout | grep \$REVA"
echo t_annotate_split_line.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 1 stdout | grep $REVA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 1 stdout | grep $REVA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 1 stdout | grep $REVA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_split_line.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_split_line.at:71: head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REVA"
echo t_annotate_split_line.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_split_line.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_split_line.at:72: head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REVB"
echo t_annotate_split_line.at:72 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVB" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVB ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVB ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_split_line.at:72: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_split_line.at:73: head -n 4 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REVC"
echo t_annotate_split_line.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 4 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVC" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 4 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVC ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 4 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVC ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_split_line.at:73: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_split_line.at:74: head -n 5 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REVA"
echo t_annotate_split_line.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 5 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 5 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 5 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_split_line.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_split_line.at:75: head -n 6 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REVD"
echo t_annotate_split_line.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 6 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVD" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 6 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVD ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 6 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVD ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_split_line.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  231 ) # 231. t_automate_certs.at:3: automate certs
    at_setup_line='t_automate_certs.at:3'
    at_desc='automate certs'
    $at_quiet $ECHO_N "231: automate certs                               $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "231. t_automate_certs.at:3: testing ..."
      $at_traceon


if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_automate_certs.at:4: echo \$UNB64_COMMAND"
echo t_automate_certs.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_certs.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_automate_certs.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_automate_certs.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_certs.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_certs.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_automate_certs.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_certs.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_certs.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_automate_certs.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_certs.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_certs.at:5: rm test_keys"
echo t_automate_certs.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_certs.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >expected <<'_ATEOF'
      key "tester@test.net"
signature "ok"
     name "author"
    value "tester@test.net"
    trust "trusted"

      key "tester@test.net"
signature "ok"
     name "branch"
    value "testbranch"
    trust "trusted"

      key "tester@test.net"
signature "ok"
     name "changelog"
    value "blah-blah"
    trust "trusted"

      key "tester@test.net"
signature "ok"
     name "date"
    value "2005-05-21T12:30:51"
    trust "trusted"
_ATEOF


cat >empty <<'_ATEOF'
_ATEOF



cat >foo <<'_ATEOF'
blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_certs.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_automate_certs.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_certs.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_certs.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --date=2005-05-21T12:30:51 --branch=testbranch --message=blah-blah"
echo t_automate_certs.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --date=2005-05-21T12:30:51 --branch=testbranch --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --date=2005-05-21T12:30:51 --branch=testbranch --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --date=2005-05-21T12:30:51 --branch=testbranch --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_certs.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

BASE_R=`cat _MTN/revision`

# check that a correct usage produces correctly formatted output
$at_traceoff
echo "$at_srcdir/t_automate_certs.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate certs \$BASE_R"
echo t_automate_certs.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate certs $BASE_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate certs $BASE_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate certs $BASE_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_certs.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_certs.at:41:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_certs.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_certs.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_certs.at:42: cmp expected stdout"
echo t_automate_certs.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp expected stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp expected stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_certs.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# ensure that missing revisions fail
NOSUCHREV=0000000000000000000000000000000000000000
$at_traceoff
echo "$at_srcdir/t_automate_certs.at:46: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate certs \$NOSUCHREV"
echo t_automate_certs.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate certs $NOSUCHREV" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate certs $NOSUCHREV ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate certs $NOSUCHREV ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_automate_certs.at:46: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_certs.at:47:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_certs.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_certs.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_certs.at:48: cmp empty stdout"
echo t_automate_certs.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp empty stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp empty stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_certs.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# ensure that revisions are not being completed
# (the above commit will have created rev 306c506078df4b58470f75c845ccd11c2ea8cb26)
TRUNCATEDREV=306c506078df4b58470f75c845ccd1
$at_traceoff
echo "$at_srcdir/t_automate_certs.at:53: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate certs \$TRUNCATEDREV"
echo t_automate_certs.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate certs $TRUNCATEDREV" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate certs $TRUNCATEDREV ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate certs $TRUNCATEDREV ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_automate_certs.at:53: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_certs.at:54:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_certs.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_certs.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_certs.at:55: cmp empty stdout"
echo t_automate_certs.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp empty stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp empty stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_certs.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  232 ) # 232. t_selector_later_earlier.at:1: check later and earlier selectors
    at_setup_line='t_selector_later_earlier.at:1'
    at_desc='check later and earlier selectors'
    $at_quiet $ECHO_N "232: check later and earlier selectors            $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "232. t_selector_later_earlier.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_selector_later_earlier.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_selector_later_earlier.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_selector_later_earlier.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:2: rm test_keys"
echo t_selector_later_earlier.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
this is just a file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_selector_later_earlier.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:6: cp testfile testfile1"
echo t_selector_later_earlier.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp testfile testfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp testfile testfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --date=\"2005-03-11T20:33:01\" --branch=foo --message=march"
echo t_selector_later_earlier.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --date=\"2005-03-11T20:33:01\" --branch=foo --message=march" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --date="2005-03-11T20:33:01" --branch=foo --message=march ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --date="2005-03-11T20:33:01" --branch=foo --message=march ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:8: echo \"\`cat _MTN/revision\`\" "
echo t_selector_later_earlier.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo "`cat _MTN/revision`"  ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo "`cat _MTN/revision`"  ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:9:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_selector_later_earlier.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:10: mv stdout first"
echo t_selector_later_earlier.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout first ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout first ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >testfile <<'_ATEOF'
Now, this is a different file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:14: cp testfile testfile2"
echo t_selector_later_earlier.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp testfile testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp testfile testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --date=\"2005-04-22T12:15:00\" --branch=foo --message=aprila"
echo t_selector_later_earlier.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --date=\"2005-04-22T12:15:00\" --branch=foo --message=aprila" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --date="2005-04-22T12:15:00" --branch=foo --message=aprila ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --date="2005-04-22T12:15:00" --branch=foo --message=aprila ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:16: echo \"\`cat _MTN/revision\`\" "
echo t_selector_later_earlier.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo "`cat _MTN/revision`"  ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo "`cat _MTN/revision`"  ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:17:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_selector_later_earlier.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:18: mv stdout second"
echo t_selector_later_earlier.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout second ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout second ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >testfile <<'_ATEOF'
And we change it a third time
_ATEOF

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:22: cp testfile testfile3"
echo t_selector_later_earlier.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp testfile testfile3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp testfile testfile3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --date=\"2005-04-24T07:44:39\" --branch=foo --message=aprilb"
echo t_selector_later_earlier.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --date=\"2005-04-24T07:44:39\" --branch=foo --message=aprilb" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --date="2005-04-24T07:44:39" --branch=foo --message=aprilb ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --date="2005-04-24T07:44:39" --branch=foo --message=aprilb ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:24: echo \"\`cat _MTN/revision\`\" "
echo t_selector_later_earlier.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo "`cat _MTN/revision`"  ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo "`cat _MTN/revision`"  ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:25:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_selector_later_earlier.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:26: mv stdout third"
echo t_selector_later_earlier.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout third ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout third ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# -------------------
# check 'earlier or equal' selector
# -------------------

# this time is just 'before' the first commit, thus no output should come
$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR automate select \"e:2005-03-11T20:33:00\""
echo t_selector_later_earlier.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select \"e:2005-03-11T20:33:00\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "e:2005-03-11T20:33:00" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "e:2005-03-11T20:33:00" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:34:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_selector_later_earlier.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:35: mv stdout nosel"
echo t_selector_later_earlier.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout nosel ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout nosel ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:36: test -f nosel -a ! -s nosel"
echo t_selector_later_earlier.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f nosel -a ! -s nosel ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f nosel -a ! -s nosel ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# these sels should extract only the first commit
# Note: the second sel is the exact time of the first commit.
$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:40: cp -f first expout"
echo t_selector_later_earlier.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f first expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f first expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:41: cat first"
echo t_selector_later_earlier.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat first ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat first ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:41: mv stdout output1"
echo t_selector_later_earlier.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:41:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selector_later_earlier.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR automate select \"e:2005-04\""
echo t_selector_later_earlier.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select \"e:2005-04\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "e:2005-04" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "e:2005-04" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:41: mv stdout output2"
echo t_selector_later_earlier.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:41:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selector_later_earlier.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:41: cmp output1 output2"
echo t_selector_later_earlier.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:42: cat first"
echo t_selector_later_earlier.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat first ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat first ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:42: mv stdout output1"
echo t_selector_later_earlier.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:42:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selector_later_earlier.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR automate select \"e:2005-03-11T20:33:01\""
echo t_selector_later_earlier.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select \"e:2005-03-11T20:33:01\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "e:2005-03-11T20:33:01" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "e:2005-03-11T20:33:01" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:42: mv stdout output2"
echo t_selector_later_earlier.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:42:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selector_later_earlier.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:42: cmp output1 output2"
echo t_selector_later_earlier.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:43: cat first"
echo t_selector_later_earlier.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat first ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat first ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:43: mv stdout output1"
echo t_selector_later_earlier.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:43:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selector_later_earlier.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR automate select \"e:2005-03-11T20:33:02\""
echo t_selector_later_earlier.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select \"e:2005-03-11T20:33:02\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "e:2005-03-11T20:33:02" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "e:2005-03-11T20:33:02" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:43: mv stdout output2"
echo t_selector_later_earlier.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:43:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selector_later_earlier.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:43: cmp output1 output2"
echo t_selector_later_earlier.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# now the first two

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:46: sort second first"
echo t_selector_later_earlier.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sort second first ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sort second first ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:46: mv stdout output1"
echo t_selector_later_earlier.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:46:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selector_later_earlier.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:46: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR automate select \"e:2005-04-23\""
echo t_selector_later_earlier.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select \"e:2005-04-23\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "e:2005-04-23" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "e:2005-04-23" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:46: mv stdout output2"
echo t_selector_later_earlier.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:46:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selector_later_earlier.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:46: cmp output1 output2"
echo t_selector_later_earlier.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# finally, all the files
$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:49: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR automate select \"e:2005-04-30\""
echo t_selector_later_earlier.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select \"e:2005-04-30\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "e:2005-04-30" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "e:2005-04-30" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:50:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_selector_later_earlier.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:51: mv stdout a_s"
echo t_selector_later_earlier.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout a_s ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout a_s ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

LINE_COUNT=`wc -l < a_s`
$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:53: test 3 -eq \$LINE_COUNT"
echo t_selector_later_earlier.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test 3 -eq $LINE_COUNT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test 3 -eq $LINE_COUNT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test 3 -eq $LINE_COUNT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:54: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR automate select \"e:2006-07\""
echo t_selector_later_earlier.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select \"e:2006-07\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "e:2006-07" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "e:2006-07" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:55:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_selector_later_earlier.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:56: mv stdout a_s"
echo t_selector_later_earlier.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout a_s ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout a_s ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

LINE_COUNT=`wc -l < a_s`
$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:58: test 3 -eq \$LINE_COUNT"
echo t_selector_later_earlier.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test 3 -eq $LINE_COUNT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test 3 -eq $LINE_COUNT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test 3 -eq $LINE_COUNT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# -------------------
# check 'later' selector
# -------------------

# unlike 'earlier', the 'later' selector matches only strictly greater
# commit times.  Giving a time equal to that of third commit thus
# should not match anything
$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:67: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR automate select \"l:2005-04-24T07:44:39\""
echo t_selector_later_earlier.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select \"l:2005-04-24T07:44:39\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "l:2005-04-24T07:44:39" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "l:2005-04-24T07:44:39" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:67: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:68:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_selector_later_earlier.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:69: mv stdout nosel"
echo t_selector_later_earlier.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout nosel ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout nosel ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:70: test -f nosel -a ! -s nosel"
echo t_selector_later_earlier.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f nosel -a ! -s nosel ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f nosel -a ! -s nosel ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:71: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR automate select \"l:2005-05\""
echo t_selector_later_earlier.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select \"l:2005-05\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "l:2005-05" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "l:2005-05" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:72:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_selector_later_earlier.at:72 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:72: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:73: mv stdout nosel"
echo t_selector_later_earlier.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout nosel ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout nosel ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:73: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:74: test -f nosel -a ! -s nosel"
echo t_selector_later_earlier.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f nosel -a ! -s nosel ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f nosel -a ! -s nosel ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# these sels should extract only the last commit
# Note: the second sel is one sec before the last commit

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:78: cat third"
echo t_selector_later_earlier.at:78 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat third ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat third ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:78: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:78: mv stdout output1"
echo t_selector_later_earlier.at:78 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:78: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:78:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selector_later_earlier.at:78 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:78: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:78: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR automate select \"l:2005-04-23\""
echo t_selector_later_earlier.at:78 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select \"l:2005-04-23\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "l:2005-04-23" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "l:2005-04-23" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:78: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:78: mv stdout output2"
echo t_selector_later_earlier.at:78 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:78: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:78:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selector_later_earlier.at:78 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:78: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:78: cmp output1 output2"
echo t_selector_later_earlier.at:78 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:78: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:79: cat third"
echo t_selector_later_earlier.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat third ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat third ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:79: mv stdout output1"
echo t_selector_later_earlier.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:79:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selector_later_earlier.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:79: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR automate select \"l:2005-04-24T07:44:38\""
echo t_selector_later_earlier.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select \"l:2005-04-24T07:44:38\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "l:2005-04-24T07:44:38" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "l:2005-04-24T07:44:38" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:79: mv stdout output2"
echo t_selector_later_earlier.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:79:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selector_later_earlier.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:79: cmp output1 output2"
echo t_selector_later_earlier.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# now we match the second and third commit

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:82: sort third second"
echo t_selector_later_earlier.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sort third second ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sort third second ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:82: mv stdout output1"
echo t_selector_later_earlier.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:82:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selector_later_earlier.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:82: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR automate select \"l:2005-04-21\""
echo t_selector_later_earlier.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select \"l:2005-04-21\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "l:2005-04-21" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "l:2005-04-21" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:82: mv stdout output2"
echo t_selector_later_earlier.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:82:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selector_later_earlier.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:82: cmp output1 output2"
echo t_selector_later_earlier.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# finally, all the files
$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:85: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR automate select \"l:2005-03\""
echo t_selector_later_earlier.at:85 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select \"l:2005-03\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "l:2005-03" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "l:2005-03" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:85: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:86:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_selector_later_earlier.at:86 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:86: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:87: mv stdout a_s"
echo t_selector_later_earlier.at:87 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout a_s ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout a_s ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:87: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

LINE_COUNT=`wc -l < a_s`
$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:89: test 3 -eq \$LINE_COUNT"
echo t_selector_later_earlier.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test 3 -eq $LINE_COUNT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test 3 -eq $LINE_COUNT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test 3 -eq $LINE_COUNT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:89: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:90: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR automate select \"l:2003-01\""
echo t_selector_later_earlier.at:90 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select \"l:2003-01\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "l:2003-01" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "l:2003-01" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:90: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:91:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_selector_later_earlier.at:91 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:91: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:92: mv stdout a_s"
echo t_selector_later_earlier.at:92 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout a_s ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout a_s ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:92: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

LINE_COUNT=`wc -l < a_s`
$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:94: test 3 -eq \$LINE_COUNT"
echo t_selector_later_earlier.at:94 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test 3 -eq $LINE_COUNT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test 3 -eq $LINE_COUNT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test 3 -eq $LINE_COUNT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:94: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# -------------------
# check combined selectors
# -------------------

# matching only the second commit

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:101: cat second"
echo t_selector_later_earlier.at:101 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat second ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat second ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:101: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:101: mv stdout output1"
echo t_selector_later_earlier.at:101 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:101: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:101:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selector_later_earlier.at:101 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:101: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:101: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR automate select \"l:2005-04-01/e:2005-04-23\""
echo t_selector_later_earlier.at:101 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select \"l:2005-04-01/e:2005-04-23\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "l:2005-04-01/e:2005-04-23" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "l:2005-04-01/e:2005-04-23" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:101: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:101: mv stdout output2"
echo t_selector_later_earlier.at:101 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:101: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:101:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selector_later_earlier.at:101 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:101: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:101: cmp output1 output2"
echo t_selector_later_earlier.at:101 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:101: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:102: cat second"
echo t_selector_later_earlier.at:102 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat second ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat second ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:102: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:102: mv stdout output1"
echo t_selector_later_earlier.at:102 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:102: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:102:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selector_later_earlier.at:102 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:102: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:102: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR automate select \"l:2005-04-01/e:2005-04-22T20:00:00\""
echo t_selector_later_earlier.at:102 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select \"l:2005-04-01/e:2005-04-22T20:00:00\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "l:2005-04-01/e:2005-04-22T20:00:00" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "l:2005-04-01/e:2005-04-22T20:00:00" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:102: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:102: mv stdout output2"
echo t_selector_later_earlier.at:102 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:102: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:102:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selector_later_earlier.at:102 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:102: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:102: cmp output1 output2"
echo t_selector_later_earlier.at:102 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:102: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:103: cat second"
echo t_selector_later_earlier.at:103 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat second ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat second ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:103: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:103: mv stdout output1"
echo t_selector_later_earlier.at:103 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:103: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:103:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selector_later_earlier.at:103 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:103: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:103: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR automate select \"l:2005-04-21T23:01:00/e:2005-04-22T20:00:00\""
echo t_selector_later_earlier.at:103 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select \"l:2005-04-21T23:01:00/e:2005-04-22T20:00:00\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "l:2005-04-21T23:01:00/e:2005-04-22T20:00:00" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "l:2005-04-21T23:01:00/e:2005-04-22T20:00:00" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:103: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:103: mv stdout output2"
echo t_selector_later_earlier.at:103 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:103: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:103:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selector_later_earlier.at:103 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:103: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:103: cmp output1 output2"
echo t_selector_later_earlier.at:103 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:103: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# non overlapping intervals should not match, even if the single selector
# will
$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:107: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR automate select \"l:2005-04-22/e:2005-04-21\""
echo t_selector_later_earlier.at:107 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select \"l:2005-04-22/e:2005-04-21\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "l:2005-04-22/e:2005-04-21" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR automate select "l:2005-04-22/e:2005-04-21" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:107: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:108:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_selector_later_earlier.at:108 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:108: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:109: mv stdout nosel"
echo t_selector_later_earlier.at:109 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout nosel ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout nosel ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:109: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_later_earlier.at:110: test -f nosel -a ! -s nosel"
echo t_selector_later_earlier.at:110 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f nosel -a ! -s nosel ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f nosel -a ! -s nosel ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_later_earlier.at:110: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  233 ) # 233. t_automate_stdio.at:1: automate stdio
    at_setup_line='t_automate_stdio.at:1'
    at_desc='automate stdio'
    $at_quiet $ECHO_N "233: automate stdio                               $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "233. t_automate_stdio.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_automate_stdio.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_automate_stdio.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_stdio.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_stdio.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_automate_stdio.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_stdio.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_stdio.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_automate_stdio.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_stdio.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_stdio.at:2: rm test_keys"
echo t_automate_stdio.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_stdio.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This is the same as contrib/get_stdio.pl. It does:
#
# for i in split_into_packets($x)
#     $results[i.cmdnum] += i.contents
# print $results[n]
#
cat >get_stdio.pl <<'_ATEOF'
#!/usr/bin/env perl
$x="";
open $file, $ARGV[0];
while(<$file>)
{
	$x = $x . $_;
}
while($x =~ /(\d+)\:\d+\:[lm]\:(\d+)\:/s)
{
	$m=int($2);
	my $n="";
	$x = $';#'
	for(;$m > 0; $m--)
	{
		$x =~ /(.)/s;
		$n = $n . $1;
		$x = $';#'
	}
	$results[$1] = $results[$1] . $n;
}
print $results[$ARGV[1]];
_ATEOF


cat >output <<'_ATEOF'
file contents
_ATEOF


$at_traceoff
echo "$at_srcdir/t_automate_stdio.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate inventory"
echo t_automate_stdio.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate inventory ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_stdio.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_stdio.at:37:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_stdio.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_stdio.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_stdio.at:38: mv stdout output"
echo t_automate_stdio.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_stdio.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_stdio.at:39: echo \"l9:inventorye\"|\$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate stdio"
echo t_automate_stdio.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo \"l9:inventorye\"|$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate stdio" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo "l9:inventorye"|$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate stdio ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo "l9:inventorye"|$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate stdio ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_stdio.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_stdio.at:40:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_stdio.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_stdio.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_stdio.at:41: chmod u+x get_stdio.pl"
echo t_automate_stdio.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; chmod u+x get_stdio.pl ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; chmod u+x get_stdio.pl ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_stdio.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_stdio.at:42: ./get_stdio.pl stdout 0"
echo t_automate_stdio.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; ./get_stdio.pl stdout 0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; ./get_stdio.pl stdout 0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_stdio.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_stdio.at:42: mv stdout expout"
echo t_automate_stdio.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_stdio.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_stdio.at:42: cat output"
echo t_automate_stdio.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_stdio.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  234 ) # 234. t_cvsimport_drepper.at:3: importing a small, real CVS repository
    at_setup_line='t_cvsimport_drepper.at:3'
    at_desc='importing a small, real CVS repository'
    $at_quiet $ECHO_N "234: importing a small, real CVS repository       $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "234. t_cvsimport_drepper.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_cvsimport_drepper.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_cvsimport_drepper.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_cvsimport_drepper.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper.at:5: rm test_keys"
echo t_cvsimport_drepper.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper.at:7: echo \$UNB64_COMMAND"
echo t_cvsimport_drepper.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test -n "`command -v gunzip`" 2>/dev/null; then
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  UNGZ_COMMAND="gunzip -c"
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper.at:7: echo \$UNGZ_COMMAND"
echo t_cvsimport_drepper.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNGZ_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >test.manifest <<'_ATEOF'
format_version "1"

dir ""

dir "src"

   file "src/objdump.c"
content [94c86fa749ed82d76fe8d6cce18d11b8c3f0ee38]

dir "tests"

   file "tests/asm-tst3.c"
content [01f722126e54806abfa32f867dbeb8529b79298b]

   file "tests/asm-tst4.c"
content [7968cb0c8f62e6f15d710ce0cd42a65f7acd2567]
_ATEOF


cat >e.tar.gz.enc <<'_ATEOF'
H4sIACBaoUIAA+w8+1fbRrP51fortu6B2GCMMa8UBxoHTMKpAxzjtMlJOLqyJGM1
suRPkgN8bf73OzP70EqWDeTRe3sStyfYq53Z2XnPanfd9Uff/NOAz+7uNv+7s5X5
Kz6PNhrNra3djY3dxs6jxgZ833nEtr89aY8eTePEihh7dBVZt04YzO1313M5Efn3
X/Jx1+PI/sY68BD572wDCzc2m5ubP+T/T3y4/NtJ4n07LXiA/Dd3NlH+W83d3R/y
/yc+uvzDwZ/OdDyp27WPX3UM5MfW1tYc+W83dpvbOfnvbG43H7F/hInfufxHruWU
NuobLcOybTeOW0Z8Ox6EfmyUHC+24vHaILICe7QHfeqNerNl+KH9IW6xOIk8O2kZ
djgeu0FSesZW2LOWYRjQ0XCsxC01Qbb1xla9uVFvbtY3tutbm62SNU1GYcScyJ1M
3KhVAu4nLnOAipbBR3JhaBysiUQF7k1SahFSbHgw4s7NJMWbojMcN7aNZ88EuX54
ZTwber7LlAmwaytmXuAlnuX7t8xyHNdhYcA4LpbhTd14ZiSAWSEkUgnpeeT63tgL
rOiW2SMruIrZEKkkcBZPJ5MwSlJ4q8F2d54Y6yvsPPKCBAiA3mMr8WDkYRSOWad7
zIhQL2Cj6dgK1iJgnTWAFuxZNxhjh+HkNvKuRgmrHFYZMov1gPiXVlJjJ4FNff6I
vCRxYTq37LUPghyxI8449lRw8NmzyHVGVlIHAR/UCE3dQND+yIvZJArBIMYMvp5N
AM9FOI1sl8XhMLm2IrfFbsMps62AARIPVWUwBWl4CbMCZz2MEM84dLzhLbZNAwcG
TkYuS9xoHLNwSD8EYo6RdT3bDWKXfXSjGNkB2sisGBFNpgPfi0cwRZiNBkgUnZAI
E++jy6l/C3TFo3DqO2xkfXSBPtuFhw6zmA18Wzy25YfBFWK59pIR9EsZ0WLekAUh
cBgnPrYA0SCxQEgL0CKiolmRoEdJMtlbX7++vq6HABTTbOphdLXuc5B4PYz9+mQ0
YZydMPdrEKoXXC3gAQMnz7rWdeQG0N4LYzeosU78n3oNUWw2GhvsN8TQIyXvhZZT
Y68/eNaoxg7b7JftrSfNOnRcWTeMn72h4w7Zy/bvHfPw7PT45IX50vgZ9NL2p47L
ntphMPSu6qMD42c3AEkjhHxmRVcTeqJa3CgKo2zT0A4SP9sEJpHcTtw42+p7A2+m
K3gpy3ezbWNwAvaHbFucOIMw9GcavbCgyQQjnWmG4fNtYLtX2bZpAFbgYJve8TZO
3HGmY7leBwEP3IEv/pzXR2VwKuARTq2xi+ajdAV0SmhfnUSCHs+z2cfQc+ABsMSU
PSvHJ90OWwHCXGtcQ9c9tcEUQQomd5Mr9KfaMgi4skKPBHKJxRyF4YeqxFWIpcr2
syO3iPLn0yuwM/R06EcjiDKcYFCROEG3GLHsiIPplSl6Asbz9uFv7Rcd8/nrF73O
+Vmv3+IMOXKH5KABC/ICMEwxEnEPi/jYcBrY9DzDID6sTn44IQ/L/8TvLtm+8RcY
xF/s9HW3W2ONmvbFrJRfhSCp2PVdQr5XrsIT9qlGEGVw+KFdrrHH0eMc2JEXT3zw
DNSD+3TNv9fLVYVjOPX9NSAzwekgrljDhZaawYfmjhBMQhA34HfMCYxhxP9MXdA1
RxuDQlDsjiF04AjOohFkxwiGgKkDevfGtacJxR05Cse9gG1n02QyTQSX5/JPoEOa
/gSayqftV51yhqqzAAKyI0jLREiQuwBnCFZfTBL/wj4Zn7iaXoxQQzEziDyhEMUW
pumtE9qoLkTXewMwXM/GbDSYmFWsegizBzcNbtOa+kkVyBMDk8NQeiu0GCO8608Y
ZgZFCkzjQ/fY1Il4h6PV6/VLifw8CpMQvSahF8yHTMQBcWawkgs2EzaxothFk2AV
TEE+uLe11EYXOg8ySiuxRJ8pRM4kZJgggvuzsSvFzQWmqSHn/3BDFIZZS2mrqZnX
UAYkwjRtEiksspCSpQBcp8OOSSf04bAvCBjzXpM6VnSXNESwGsPwAMlK5JoJsM0M
AznVl8REaXXcBdkjzDTyY3B2m4CUWDqEqNrxh2zF9Yc1XZorkwh82k22jZNhlEqM
PvqjeDqE7llyZIY4jwgYk1U+e/Q5wxs/O+iMIdU47Xd6p+2u2en1znoVgq6y9yBD
Ui8Y+c1J3zxun3Rf9zpkhldughrOKuWleE/BM4JnSxCMluK1pbi6x5ZidBT0eW+U
mJCOaXZPTjumWWO/d3oXJ2en2HTU7lMTzNCEccfxFausbVSrXEe6EIpRWso9Xo8w
ARZZ4cBl09h1itRSAJiQbSakl6QaXmwiKS34DWoeBuhujDyrZA/oA7LYbIKdxXYQ
ODfY+An/KRgDwIAzLeMTsFprFqp+AillNHV5wJWqB5J23JsM8UQkj8oUeeJWAfhM
/FAhQ7FpHlIENQVoEWot0EAFRTGgPg8Xr4twgvDLGGMCXeGzu7I1L/Tx3WWVBACD
vbI+uGzsgoHeMt+1PoB7TUQMmIRx7A2kKUDFkUQWpL0V1FiC/YNkDXk7xFCso2Lw
uOC0uD5g9QJju9GQ2tBzkQlhfkwuzpVhgbEK5k1V0Lxh7CZYIGOnCuaMkF8fX3T6
3bPD305OX5jP3x62u91Or9paBAVc+hwwUPW5YHzCF27CRGacpZxjstAFdg/NNkbG
clmBEY9j8ucjZHYcW1fg+MDVQ5FLjBpgeIE6LocWEnMHrdsJuSxFKldjQGG72zk6
SUnjRYrv/bdwkBzeApwK0TnGCEqUhWtPY6rEgioVuQgOrNNYypNQgq8s44+a0DzU
OfJWywqMJxBq1L4LBoSEQ9oeYbXPlUhm4NdAEbDPvZmgbgb5+aCjUsl653fz8HWv
1zntc+yc2hhSBojxDSQXas2KIoTt7xOVVXIvSMqI1BpXGZzgMbgUGBMrbYviINTo
SA3qPWUkkhKWjpENiWXqBinY0PJjlzTQhS8Ewh0dZ7tktuBDSh+iidNhpGOcjasw
dAq1yjbYU5oYMQE/TmiUBJF/56kkr6CgL2szEZujAKlg79XVdCA+iOjxCceKXMhd
AsEPcL96aoFTk5LSs/d8BWZ8XgVGXm1IsEO0ad69LJalMBhWIRC+x/RYlkWY1ajo
R9OYgU9j7Hsjuzq0FGfXht4H7w1a4IH/h5Grr+jELrdMvhRB2SQubSALQaCOJ4NE
n3wowJ+eITYAjqwguW3h8ghzP7o8T3/V6R2+bJ/2289Puif9twyajk/6p52LC3YM
gb8N0+v1Tw5fd9s9dv66d3520SHiMAco42JU+a6paktcSzHAEmR2sQtxCOmK7Emu
a+VcRjZFNj43RSbpxhBKgIQKQFU1I7ItsEgoefaEpv5llOakBNeQFrObMRhaaMPE
wWNCvK7QgypMqMQpcQNnAj+wde2A5xoABigTSHPIXsCbYSfwawiFPoWA0J80qpBh
MQ4r8hsAJgcAXcn8S0QiUsq7iT6At6U3p9CYEtCjT5IqzG6QpkxuU8pMd5/QSOv9
JP4OQNYfhFvgfHMU3/REQo06DyzKgfEE6U6wOAemp0ALgEXhJ2GFm2n3Xpxjumy+
Pv3t9OyPU+mIVIeGUlJa1KNyH70YhjhMdqIxZt60fAplXj7vNz6nwJHJVWZAPXoO
HZgnLkyyisByZvaOzk67b6syQGGXfQZpdyZSiDIAQil8C8Iaz+OVfxZT3tC8MS59
QVkNhk2UYH0ja/QwkjTJggaowlg6cK8wNaBCq3tsHpq9TvvIfPWqfa7CNicSQX7a
520ZOsVDE5Irh75VcTaI7DcT/gX7IO3PxGa9wqLiKhvdfoWUiu3xdQcoqKikEsyT
qUQpHdhV4/4k7ZHlyivBew3Q9kPMXYZOBqqw9BLsT/0lD40cw/8sxY/RX+r4c1Gx
JI0RvcFCdrV7i7iFRTHKiRjG12T+1UxJM6I/MHsNMOrxqfIXBsJGDwklKnSqzGDR
t9fWrZ4qzZ34vEkrs0kNbabIPvbE6yIroaAcuXZ4FUAccTLT060RHZDmU77KggYr
XE3gMRKIgRKZepo+eBmKXL5yN1VMD1tpRz6M6Ml/SLMGs5Og/EEVbJCyaBoWwovJ
299pSFa1oVdZ81IbipMpiaIfBUOJycwMxdvfaUgkeuJfPB0AC8VP83DsMHuMnjbn
xFoFVYEcZcWe8KgppiU9XZYr3NlR1ziZ2JNbMBPIBASHiOT8s1TD9NbyO1EmqmH5
3OSwWQ7NGVYtJOVwX6YlaL68oKKCViwgjYcM1uNxKrMCp9L9CufrbHAA7pLnqVaL
o4CophAzviiHmgpzV7Jj13cxQdSNFWXWjkYO5YH4h48Hxsd/CjKqLc1JXHzwJiz8
KN5/0uoNA7SRly2ZPJ7i2lgDELK1AysyuZ8sr5e5W0CTWl5m8/vJjsofZ7y2oC4f
53hYllWXHuM4QE1TNqyUM4OKOJfqRZVSwIKYMTM6hY3CwWXIuPf4RcNz3CKFXeAu
8b89nnDNc5lydXQBHTMkaBPbR1dW4o47E0BeQMpDObJc3CvQOe4fkI3UM1Wxgvgh
WXzfEFJQB+sVbjwKr0XGjH8glg58CAEDn4KBeWEH4NDsoMZe0E+yixj+5Y/pRcGK
A/8S/9Km+HZMrVrTDRQvvE064dsxaDm0EqxsHPE2HkLQP8Jsbd+il4hXwhL57wpQ
uXYgGYVdA2F06JlIcvHIRLxsPf2N9SA0kfmiH6DYZwfcAdOXpwpPi62uQkvWnRAj
esAqYNfYHbfyzSvQrpwDsjSlmxjMeQBoaSEKUWQEjX2UG+MWTiFhMB2+22g+uSQt
48K4HSMPiQa9DZlPLdCw2TT/CCOH3dAqNTbCQ40ilMEIq8qKklgqpxdowz3z4u0r
ImvtIDJxtaQqHcIyHx3mgTDcJMjH4RBqCjgxWeCXlxorZXbeO7nZ2WJltrTWbMTs
6VLMlnznABdEhBWmMidHcthtX1xsNiE0P4FgvLFTY4KccIjLpwpq4HNVNjE/M2mj
AGmJmkr/7XknO5eqgP01D00F7x3AnBEID9Lheo1VPPxQePc0P/T05PT3dvfkiPU6
3bPDg9TppF1kD+D587Nu2qOCm1ZQx6tzpZJzytTtoi+oBpGA9ie8J+rXRb9vXnQO
+7jcdA8Z8eWq71M6aCrglCZJlLqcmua9mGQuud65wSl1oFAsJOiPTGm62ccr8rl6
Jht0w6VcRP4AL52SxqeNoJIwbuIgrYuXp+abk9Ojzpu0069k8cCKTG9l5PRZ1kkW
VZPKaIgwZe6lh9h66eGqVPpcPSp9oRKxeYpUulOLSgUGzm1PPNfMu3KX0Nh8maVZ
Cde/xbJQNv29SGGOIY+kHUslpzxBM2aR0/EvdyRQ1pdlUF+UQv37cihrThJl3ZFF
WT/SqLmu9XsN0/+GJOp7lc2PFOrrp1DfVej+f5pAfVcy+JL0ScY0QRWexAkc/U2O
YvTq0s+S0YpxvDvHNpkmFMgrj98Hj6utwsQMX4Ya8hX02KI39emrjdzmvYLErDiP
QkPNvNbWF5vFMht/azxvJ2A0DSYz78oN2hOjZ0fEKOiqXrzrS71yYZh3yG7szEgo
K5ycYNL9ATnSM28EtWH5cHILwr7g3RwMMm3j0xWU0i5ILiq1pk89ZJqmv60SuxRy
b6y0XFtPswteh6cy/rxcWLy8kck74yS29LcR1CrXbLPhA7kz721Eqmxp/JoJX4WR
ioqIZT2EzI0gc9+mZiFIIWhbOXnJvgn2zv7+m8171iZFZFwlWOUnlrOxlAHEF+eG
2ILM4AqYKmRVaA6++/ECspnSwvheENsfFMoxZZezmvWJRcFZeqTULZI3bGPUAcd4
eNY74tuc3i3Fl3tQShscXXlpbSVm5ITzH3Cqrzu0iYlM9uEOVcEtjjcpyWfHuJW0
XBVzEu8j6I01VpTiRJsQI38lkSlCqZd6A0a/uB4KixXegXfL1CpZyWoD8339jJ87
mdl9V9IND/JDZWUzgk3l6XvBh2pOS6giK9Yf8WjWvmi4GtVjmi4UFeUzLBGg2m4H
2qiL73zE20ZXHICwfAaigXCW7soWbwyJIwUykJWkckI6j26ElWnPpIdKH83xUqKD
7qnm5dvUdUG+LZ+nea1smWGzGFWUu1lGS+ekgOVL+eVlhXDGMUER128/NyHLO3pD
9pHvjPqBnTNOiSRGqc9fBATyOsbNz8wTr+awUWN9Rt5qDtIMSmqTWAniXy7pmedO
BbtnXsFRUCP03GmKJZ+ZlQVD+i+hsGqymp/NlVKzq1UPHuyO0WQ6Rvs6p0lsTgPc
3g7aXim/D2jTK98cn4n3jeJYn9mT91kR/3uM4ue9sxfPT/oXtI8gs4Z3ILYNfLsQ
Phs1D7UDKdLhLcV79w+DMzXF/2kkmwaxd4WbVbSNOgi0duCYUEwRIlE/2HiWpiSW
SDPLo6sQptlTBUeLqbijZnWf4jd1wa95h6yqJLbU2PrvDStTX201gYYSw3tB4EZ8
TP71KWCU3wH9Vm6poTka3cz+y3iNa0/eEeAljCi+4iyyP5uXmb7QsnmZOnZ0B7bm
Dh6zx7ovuP8MVlfpF5Kfx4k7hm3Pw61Hgt4qWoEX82NMWjOlf78q6i8hdXpc1wma
RzWUnflenzKqXygcMSPtwEdG+mxNaYs+91R9ZlixyrbYU+2sRU6wGW1ZLFvS8XuK
l+VlqwhMRaSRlEqqgJ5yii2DSU61yVZYBexkjWPG7YLaTySgytaBC7iLULQdYCCR
6xxra/rgd2tfMZ8XzOfLlA8x3KF/d+jePbro4TgfammBgu+xp5KI4iWFr7YDcQjP
7tMeQoq1GF6fgFqu2NOiVihHEtyf1OKHeLU4LgbgZwaBB+Q11RIUwMJ3H2+woFsL
8OyF2D06Qx9boX/3aQ1k5lmVn1owdDV7ki7Z7WFlVmMVpHhny0yqVHqsHeAsq9rO
ULLCIpf9VADA/EkF8buatf6OS3cDTU7Ak1oO4B30vqRh096MLdVX+KmgCi1kSsbg
Ep04QyYpRisXlGYRA72KzHvkV+KExWdlVkcEe5jckFYkeDBFCETszSR8aUCnPB7C
9ps3b1j/7OgMIrTawU/gep5190FjsStbvwGh+v0u3CxM+cSW0hRy6FtXMVsGyGOz
86ZzeHJ60e9pu0q/XXr49fMxZUBHShNuZ1JNtXnps3LNAneD/3Aa4UudTBI9RWl9
nfT7GHfD+qHlsIFnxapfzkrr6Ety2SP2FQPZAzIMUB3ZuZaCrWbSh1pKh1oNLi/t
jsGlbIRLbm2p3uR/NkNwLxmXLNArMN1MyUL1ECJOugoEtB8VKLyjkvuyOwuExAtO
GBiZKmBgQQAEgtTe7nDwJ6gA3/SbnqkCFRS+DpVv4Jt4/knCVtTi72wZgxuI4fGS
s4b7ZkT1os7+5FeS003Q6eoc/LPHdrYIDEcWo6ZvcKpqo/xh5OKJQ3UpDHURJY5+
imvByYl9dZyhga+5sqcn7jgKUQyrb/C/79EOkhlOAVuzhzM2cgc0UkIuFSQvryT8
nacgwLvmj0HUNOakRyIyHYUIFS0qKhUdewBIAQhZwIY89VBjmcMgG0qQatFTeCNx
AIHfLqXWQNVtDzNbeLQjbjye8GbdeS0rjws5SmNh+CRrmgmheCjvTvpkcC0+x66f
15Tvw0SfTJ5BKYEUZ2bdSMcj3vBAyPrpLsTyZdD9EOvLSUXYsstN83EKI1Wnv/A4
o/Qh8uqA2eONaPN0CC11N2DzrcJN+s8M4wH3P7rrCb4q+KY3AD/g/tfm5kYT7//d
aTR/3P/6T3yk/PE2yyROtr765a+P7rr/tbHT3N5F+W82G/j/Lsh/e2dn58f9r//E
R9z/2rzH/a9NvP/VKIlLUelCWLw8tcTvCeW/73M9bFPd4rpVb/xSb27XN37Bu1w3
t+91iyveDtvUboelUTO3zm7WG0/qG0DuTn1rt751f7RiCvqls1+MV0fX/GZ32Db5
dbMVXG6q7rG247Dukdk9ed5r996a5+3+S7yKDYK+z6+V/ShuIEyvnsWolL84tkn3
vm59netjmz+uj/1xfax2feyCe14hEQLPM9MG6nufe1ofeCFr5j7W9WvLoytejf9t
72p727aB8GfnVygGgiaDm9lW6hkJCszp0qFbVgONhwDNhkCx5cRAbaF2nCDd9t/H
u+PLUaRkyXGyFhM/BI4sig+P1pF3vHvoIVvEZT4yLdbVdPkSGJSSus1YhpYuOrp6
3Mvly9q2nYdbQT4TFLnKmJ9M2R8Q8iRG4rfLsNtpMNMRP//UG/Tap2fH2S4z5afS
DhG5vB+SLcnpP2egLQ4VBxGa8oxgL5/GQ5qmnY6YH1O0cn63Kd7pzQLQAfnt5p+q
USHss+EMhL0YzniOtWw3An6+z0uig+Q5tIuZ6rgT39gI6vvgLdnf+bg0mzLpJzvb
h/K56C4EGc3ie/R2oU8GG+GetwZ603qnp/03wd/4+fzDu8GJlZSAz7KTEjJGS9lj
f9TFINUhMV460MH6P+TpeAjEHULxDVyMroAOVTppanxMrSRlmGoWyVTzYKaz1vFR
oxF5gqWfDsRoJaJndIVRa9q92lQ3PL9ODLcxAtOkN7Ir2nEl8Rd4fTziz3xxHMSZ
7xOFxJIm0Ui0ajkH+/1s0Bv8fgYBK8Azjexf8ewuvTB4LSmnP40D8QlOg1DLhJef
g5SeM26m8zgQq+EXkPQjZj/GSfQApDdKassZBtDsupwilr2ql0brcOaPWkFrK4I/
OUuYho8HfxR2oKr428117l1Oo+ENcCztkoY17EFwt1eRLm8X5neAPEkpI7+eN7ZZ
ep7cCpKGL+p2gnaeb8A63UDSK4rW7iYwuRQVX1pk3ZZoNOq2xf0FfnCFflDq0ASN
tS8gTCDabTK1h/rHMp6NqhQpKfs/fH77v/XDQRi69n9Y2f/PUcz5L2Rh1qQNXOA0
GHkizAY8Al+p6a6f655F8wzn0WRq7CJ6urLRKxv9K7bRcw9IKWR5h8zydu8HCxCq
LC5ewWEeamF20cRH1OksiYsW/of2nbrUpktAkxpdqYuhvPgwZRcP5MUbee8W8rhr
MDrWE88jEOKDc2t8aMAQJEpIg8kyDhkwDFkffBj0jjkyE8jOoZl7FbJCDgrLiG45
V9p+JwaRAGoau5g47DC45QSiVGIW9mKufhffUJzY/88HcnufOB4QELjPX6B+oYV9
BjBO7EHLKxVp02rg/rL2KLT0dj1kbmGtEiIxKShPZOJCHgxwl4tJMPok3iZYNuiU
mH3ciU55XbTDAW7XXe4UMdapivXUAkNsCNw4avCJRME4vpe74QuaTVAjpaHCCD1M
FdZ6MoPjeIS9CgQB/eNfTt4M4PPx5c+n/ePe6V6pERpP5kIjQrNrdMVy34h+fElj
LCLViZjG5rcSCAnjUVCYtMSLXYdjGwBLx5XX+Unv13LSEqOeCPN5o+LiIJslBCax
bFZiMHZC8fh/X3giQzmBidXRfMPyYhBLSIuArC2sb9L/B4gx9T8d2LU2NXcaPj7j
Op7F8wjOgZH4pxC/liXLILhObhPoMUMa59Nyexi5y/wIbT5wLeA4dfTPasTkRLN/
nrFNab1tMaNa4MjhhxNJcCfmkpE+iKmItKjtNheaHQ0cqyxlIO030cASpRUInCcz
iNcCXBSr9WhhccBs/6al9m9eefdueJC1Gwe9IkJa77540nsxNhR3aOiWgvsmPIht
5+NISwUJolzR1BziVhNVbHZGikVzM5x2MPdKoIyO2IMd90UehZ/zRTjcEDGGOseX
WcHPklJM2WCYseDf72HYXywoVnU0GY/F4h+6Etwt+GC4YdjrgnGlYHfcipPffm0M
OKyd3wmsIzuhoK9qkF4c8YUVhE+x9qL5Xf9aH4Paxcoda29n1m7urUBMd5aErNvB
CPYCg6sO9CzZjpRMqJ5upwEcuZnSuOMk8LSdDEjS0RaJwA2e8jxM5nMI+IaqdZO/
5+Fnxhj7tdMP0lDYe60yUTm6fCg1L8+VnQJoZUaq/LQWJZ3rJLVdK+tD5Zd9T7pr
jJkg9KbB3IeuhgaELzPDXKax8+xKyoznLHky/7/m8OTR+5kmxVM0ffhEYlZQyf5q
xC2SOyWGdLor150k250vS6YnFXUANeNRl74RUEOgxyDVuuSNT+ago6VjkBapEeYZ
LOfCHASWQwj2Fcus0QKRgF5P7oluPlrcqCDqhXjQdYRs44ZfAAfbdXyRkgMPEDzx
L+qg8XvRv+T4wnW2vEJ+LzTs5BVyepHtApf+OfI3q44p97epWPDevX/bF2pM2Rlk
frzvA9XJnoUqtwLZK3sWaLcCWcreGqG/BtiK1v15HdaePbHMW8b+bjetPh1YgJsW
mK5sSrfFJ14aTJldKwnIPERNnFCBU9PYzHhKR2uoRk/r9wL1ISlo8LVARdTT9Fof
UT37TQBtbWGXjaJ0oE0SE8teXdH8/Rz42LDWum0n4g2aF+4vNUh14Je8bqtEGgfz
cPFW1RQ5j1Hkw1hppVqwDgRMMNumFLHSIseFi5go4NBGYUivh0TOMgJDiKsRJRuY
RbYlcYBctcj5KOPOzl4JKYo6BUbNqG3Ns8JigIxVcyh90Cyvy3wLX5oTheibw60n
iYkpFhJhb0g+VQSNEzvTaUIl8febjJ0J282VwTP/9dZ8VapSlapUpSpVqUpVqlKV
qlSlKlWpSlWq8ujyL0kUTRMAoAAA
_ATEOF



$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper.at:196: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o e.tar.gz e.tar.gz.enc
else
  \$UNB64_COMMAND <e.tar.gz.enc >e.tar.gz
fi
"
echo t_cvsimport_drepper.at:196 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o e.tar.gz e.tar.gz.enc
else
  $UNB64_COMMAND <e.tar.gz.enc >e.tar.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o e.tar.gz e.tar.gz.enc
else
  $UNB64_COMMAND <e.tar.gz.enc >e.tar.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper.at:196: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper.at:196: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"e.tar.gz\" != \"e.tar.gz\"; then
    mv e.tar.gz e.tar.gz
  fi
  gunzip e.tar.gz
else
  \$UNGZ_COMMAND <e.tar.gz >e.tar
fi
"
echo t_cvsimport_drepper.at:196 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "e.tar.gz" != "e.tar.gz"; then
    mv e.tar.gz e.tar.gz
  fi
  gunzip e.tar.gz
else
  $UNGZ_COMMAND <e.tar.gz >e.tar
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "e.tar.gz" != "e.tar.gz"; then
    mv e.tar.gz e.tar.gz
  fi
  gunzip e.tar.gz
else
  $UNGZ_COMMAND <e.tar.gz >e.tar
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper.at:196: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper.at:197: tar -xf e.tar"
echo t_cvsimport_drepper.at:197 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; tar -xf e.tar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; tar -xf e.tar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper.at:197: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper.at:199: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=foo.bar cvs_import e"
echo t_cvsimport_drepper.at:199 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=foo.bar cvs_import e" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=foo.bar cvs_import e ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=foo.bar cvs_import e ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper.at:199: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper.at:200: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=foo.bar.disasm-branch co"
echo t_cvsimport_drepper.at:200 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=foo.bar.disasm-branch co" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=foo.bar.disasm-branch co ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=foo.bar.disasm-branch co ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper.at:200: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper.at:201: cd foo.bar.disasm-branch && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of"
echo t_cvsimport_drepper.at:201 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd foo.bar.disasm-branch && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd foo.bar.disasm-branch && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd foo.bar.disasm-branch && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper.at:201: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper.at:202:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_cvsimport_drepper.at:202 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper.at:202: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper.at:203: cmp test.manifest stdout"
echo t_cvsimport_drepper.at:203 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp test.manifest stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp test.manifest stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper.at:203: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  235 ) # 235. t_update_with_pending_drop.at:3: update with pending drop
    at_setup_line='t_update_with_pending_drop.at:3'
    at_desc='update with pending drop'
    $at_quiet $ECHO_N "235: update with pending drop                     $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "235. t_update_with_pending_drop.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_update_with_pending_drop.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_update_with_pending_drop.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_drop.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_pending_drop.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_update_with_pending_drop.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_drop.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_pending_drop.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_update_with_pending_drop.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_drop.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_pending_drop.at:5: rm test_keys"
echo t_update_with_pending_drop.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_drop.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >file <<'_ATEOF'
test1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_update_with_pending_drop.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file"
echo t_update_with_pending_drop.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_drop.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_update_with_pending_drop.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_update_with_pending_drop.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_drop.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_update_with_pending_drop.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch testbranch co codir"
echo t_update_with_pending_drop.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch testbranch co codir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch testbranch co codir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch testbranch co codir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_drop.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_update_with_pending_drop.at:14: rm file"
echo t_update_with_pending_drop.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_drop.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_pending_drop.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop file"
echo t_update_with_pending_drop.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_drop.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_update_with_pending_drop.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_update_with_pending_drop.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_drop.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



REV=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_update_with_pending_drop.at:21: cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop file"
echo t_update_with_pending_drop.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_drop.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_pending_drop.at:22: cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_update_with_pending_drop.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_drop.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_update_with_pending_drop.at:24: cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision \$REV"
echo t_update_with_pending_drop.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $REV" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $REV ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $REV ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_drop.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# make sure there are no changes in the workspace

$at_traceoff
echo "$at_srcdir/t_update_with_pending_drop.at:28: test ! -e codir/_MTN/work"
echo t_update_with_pending_drop.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e codir/_MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e codir/_MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_drop.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_pending_drop.at:29: cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff"
echo t_update_with_pending_drop.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_drop.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_pending_drop.at:30: grep 'no changes' stdout"
echo t_update_with_pending_drop.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'no changes' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'no changes' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_drop.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  236 ) # 236. t_update_with_pending_add.at:3: update with pending add
    at_setup_line='t_update_with_pending_add.at:3'
    at_desc='update with pending add'
    $at_quiet $ECHO_N "236: update with pending add                      $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "236. t_update_with_pending_add.at:3: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_update_with_pending_add.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_update_with_pending_add.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_add.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_pending_add.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_update_with_pending_add.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_add.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_pending_add.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_update_with_pending_add.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_add.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_pending_add.at:4: rm test_keys"
echo t_update_with_pending_add.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_add.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This test relies on file-suturing



cat >file <<'_ATEOF'
file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_update_with_pending_add.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file"
echo t_update_with_pending_add.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_add.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_update_with_pending_add.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_update_with_pending_add.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_add.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_update_with_pending_add.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch testbranch co codir"
echo t_update_with_pending_add.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch testbranch co codir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch testbranch co codir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch testbranch co codir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_add.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >file3 <<'_ATEOF'
file3
_ATEOF

$at_traceoff
echo "$at_srcdir/t_update_with_pending_add.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file3"
echo t_update_with_pending_add.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_add.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_update_with_pending_add.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_update_with_pending_add.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_add.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >codir/file2 <<'_ATEOF'
file2
_ATEOF


$at_traceoff
echo "$at_srcdir/t_update_with_pending_add.at:24: cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file2"
echo t_update_with_pending_add.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_add.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_pending_add.at:25: cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_update_with_pending_add.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_add.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# make sure there are no changes in the workspace

$at_traceoff
echo "$at_srcdir/t_update_with_pending_add.at:29: test ! -e codir/_MTN/work"
echo t_update_with_pending_add.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e codir/_MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e codir/_MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_add.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_pending_add.at:30: cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff"
echo t_update_with_pending_add.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_add.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_pending_add.at:31: grep 'no changes' stdout"
echo t_update_with_pending_add.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'no changes' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'no changes' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_add.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  237 ) # 237. t_update_with_pending_rename.at:3: update with pending rename
    at_setup_line='t_update_with_pending_rename.at:3'
    at_desc='update with pending rename'
    $at_quiet $ECHO_N "237: update with pending rename                   $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "237. t_update_with_pending_rename.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_update_with_pending_rename.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_update_with_pending_rename.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_rename.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_pending_rename.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_update_with_pending_rename.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_rename.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_pending_rename.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_update_with_pending_rename.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_rename.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_pending_rename.at:5: rm test_keys"
echo t_update_with_pending_rename.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_rename.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >file <<'_ATEOF'
test1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_update_with_pending_rename.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file"
echo t_update_with_pending_rename.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_rename.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_update_with_pending_rename.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_update_with_pending_rename.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_rename.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_update_with_pending_rename.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch testbranch co codir"
echo t_update_with_pending_rename.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch testbranch co codir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch testbranch co codir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch testbranch co codir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_rename.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_update_with_pending_rename.at:14: mv file file2"
echo t_update_with_pending_rename.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv file file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv file file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_rename.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_pending_rename.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename file file2"
echo t_update_with_pending_rename.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename file file2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename file file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename file file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_rename.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_update_with_pending_rename.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_update_with_pending_rename.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_rename.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



REV=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_update_with_pending_rename.at:21: mv codir/file codir/file2"
echo t_update_with_pending_rename.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv codir/file codir/file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv codir/file codir/file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_rename.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_pending_rename.at:22: cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename file file2"
echo t_update_with_pending_rename.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename file file2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename file file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename file file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_rename.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_pending_rename.at:23: cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_update_with_pending_rename.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_rename.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_update_with_pending_rename.at:25: cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision \$REV"
echo t_update_with_pending_rename.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $REV" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $REV ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $REV ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_rename.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# make sure there are no changes in the workspace

$at_traceoff
echo "$at_srcdir/t_update_with_pending_rename.at:29: test ! -e codir/_MTN/work"
echo t_update_with_pending_rename.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test ! -e codir/_MTN/work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test ! -e codir/_MTN/work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_rename.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_pending_rename.at:30: cd codir && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff"
echo t_update_with_pending_rename.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd codir && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_rename.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_with_pending_rename.at:31: grep 'no changes' stdout"
echo t_update_with_pending_rename.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'no changes' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'no changes' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_with_pending_rename.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  238 ) # 238. t_restricted_commit_with_inodeprints.at:3: restricted commit with inodeprints
    at_setup_line='t_restricted_commit_with_inodeprints.at:3'
    at_desc='restricted commit with inodeprints'
    $at_quiet $ECHO_N "238: restricted commit with inodeprints           $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "238. t_restricted_commit_with_inodeprints.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_restricted_commit_with_inodeprints.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_restricted_commit_with_inodeprints.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commit_with_inodeprints.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restricted_commit_with_inodeprints.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_restricted_commit_with_inodeprints.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commit_with_inodeprints.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restricted_commit_with_inodeprints.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_restricted_commit_with_inodeprints.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commit_with_inodeprints.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restricted_commit_with_inodeprints.at:5: rm test_keys"
echo t_restricted_commit_with_inodeprints.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commit_with_inodeprints.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# this test is a bug report. the problem is that inodeprints tries to update its
# cache for all files in the complete manifest, but a restricted commit can
# succeed with missing files if they are excluded. subsequently the inodeprint
# update fails because it can't build a complete manifest due to the missing
# files.

# one solution is to let inodeprints update its cache only for files that are
# included in the restriction, which seems to be safe. the only gaurentee that
# inodeprints mode makes is that if a file's current inodeprint matches its
# cached inodprint then it has not changed. i.e. for a missing file, the cache
# would not be updated but the old cached value can't possibly equal the current
# value since the file does not exist and cannot have an inodeprint.

# also, it may be a useful feature (?) to allow refresh_inodeprints to update
# its cache for a restricted set of files by allowing paths on the command line
# to establish a restriction.




cat >file1 <<'_ATEOF'
file1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_restricted_commit_with_inodeprints.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file1"
echo t_restricted_commit_with_inodeprints.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commit_with_inodeprints.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_restricted_commit_with_inodeprints.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_restricted_commit_with_inodeprints.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commit_with_inodeprints.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# enable inodeprints mode
$at_traceoff
echo "$at_srcdir/t_restricted_commit_with_inodeprints.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net refresh_inodeprints"
echo t_restricted_commit_with_inodeprints.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net refresh_inodeprints" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net refresh_inodeprints ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net refresh_inodeprints ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commit_with_inodeprints.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >file2 <<'_ATEOF'
file2
_ATEOF

$at_traceoff
echo "$at_srcdir/t_restricted_commit_with_inodeprints.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file2"
echo t_restricted_commit_with_inodeprints.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commit_with_inodeprints.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# create a missing file

$at_traceoff
echo "$at_srcdir/t_restricted_commit_with_inodeprints.at:39: rm file1"
echo t_restricted_commit_with_inodeprints.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commit_with_inodeprints.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# restricted commit of file2 succeeds with file1 missing
# but the corresponding inodeprint update fails

$at_traceoff
echo "$at_srcdir/t_restricted_commit_with_inodeprints.at:44: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message 'file2' file2"
echo t_restricted_commit_with_inodeprints.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message 'file2' file2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message 'file2' file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message 'file2' file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commit_with_inodeprints.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  239 ) # 239. t_merge_manual.at:1: merge manual file
    at_setup_line='t_merge_manual.at:1'
    at_desc='merge manual file'
    $at_quiet $ECHO_N "239: merge manual file                            $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "239. t_merge_manual.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge_manual.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_merge_manual.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_manual.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_merge_manual.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_manual.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_merge_manual.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_manual.at:2: rm test_keys"
echo t_merge_manual.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_merge_manual.at:4: echo \$UNB64_COMMAND"
echo t_merge_manual.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This was a real merge error.  A binary file happily merged by monotone
# just because contains some strategically placed line feeds
# now is a test for the new attribute merge_manual and its effect on merging

cat >parent.bmp.b64 <<'_ATEOF'
Qk1mdQAAAAAAADYAAAAoAAAAZAAAAGQAAAABABgAAAAAADB1AADrCgAA6woAAAAAAAAAAAAAQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQApC
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQApC2xsy2xsy2xsy
2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy
2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy
2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy
2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy
2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy
2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy
2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy
2xsy2xsy2xsy2xsy2xsy2xsyChsy2xsy2xsy2xsy2xsy2xsy2xsy2xsyGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxsKCgoK
_ATEOF


cat >left.bmp.b64 <<'_ATEOF'
Qk1mdQAAAAAAADYAAAAoAAAAZAAAAGQAAAABABgAAAAAADB1AADrCgAA6woAAAAAAAAAAAAAQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9C
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQApC
QJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQJ9CQApC2xsy2xsy2xsy
2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy
2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy
2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy
2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy
2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy
2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy
2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy
2xsy2xsy2xsy2xsy2xsy2xsyChsy2xsy2xsy2xsy2xsy2xsy2xsy2xsypzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3pzq3
pzq3pzq3pzq3GxsKCgoK
_ATEOF


cat >right.bmp.b64 <<'_ATEOF'
Qk1mdQAAAAAAADYAAAAoAAAAZAAAAGQAAAABABgAAAAAADB1AADrCgAA6woAAAAAAAAAAAAAOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrt
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtQApC
OtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtOtrtQApC2xsy2xsy2xsy
2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy
2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy
2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy
2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy
2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy
2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy
2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy2xsy
2xsy2xsy2xsy2xsy2xsy2xsyChsy2xsy2xsy2xsy2xsy2xsy2xsy2xsyGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvbGxvb
GxvbGxvbGxvbGxsKCgoK
_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge_manual.at:220: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o parent.bmp parent.bmp.b64
else
  \$UNB64_COMMAND <parent.bmp.b64 >parent.bmp
fi
"
echo t_merge_manual.at:220 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o parent.bmp parent.bmp.b64
else
  $UNB64_COMMAND <parent.bmp.b64 >parent.bmp
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o parent.bmp parent.bmp.b64
else
  $UNB64_COMMAND <parent.bmp.b64 >parent.bmp
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:220: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_manual.at:221: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o left.bmp left.bmp.b64
else
  \$UNB64_COMMAND <left.bmp.b64 >left.bmp
fi
"
echo t_merge_manual.at:221 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o left.bmp left.bmp.b64
else
  $UNB64_COMMAND <left.bmp.b64 >left.bmp
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o left.bmp left.bmp.b64
else
  $UNB64_COMMAND <left.bmp.b64 >left.bmp
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:221: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_manual.at:222: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o right.bmp right.bmp.b64
else
  \$UNB64_COMMAND <right.bmp.b64 >right.bmp
fi
"
echo t_merge_manual.at:222 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o right.bmp right.bmp.b64
else
  $UNB64_COMMAND <right.bmp.b64 >right.bmp
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o right.bmp right.bmp.b64
else
  $UNB64_COMMAND <right.bmp.b64 >right.bmp
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:222: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# hook forces all files binary
cat >binary.lua <<'_ATEOF'
if (attr_init_functions == nil) then attr_init_functions = {} end
attr_init_functions["mtn:manual_merge"] = function(filename) return "true" end
_ATEOF


# hook forces all files text
cat >text.lua <<'_ATEOF'
if (attr_init_functions == nil) then attr_init_functions = {} end
attr_init_functions["mtn:manual_merge"] = function(filename) return "false" end
_ATEOF


# --- first: auto add as binary
$at_traceoff
echo "$at_srcdir/t_merge_manual.at:235: cp -f parent.bmp binary.bmp"
echo t_merge_manual.at:235 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f parent.bmp binary.bmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f parent.bmp binary.bmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:235: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_manual.at:236: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=binary.lua add binary.bmp"
echo t_merge_manual.at:236 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=binary.lua add binary.bmp" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=binary.lua add binary.bmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=binary.lua add binary.bmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:236: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_manual.at:237: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=binbranch commit --message blah-blah"
echo t_merge_manual.at:237 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=binbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=binbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=binbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:237: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


PARENT_SHA=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_merge_manual.at:240: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr get binary.bmp mtn:manual_merge"
echo t_merge_manual.at:240 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get binary.bmp mtn:manual_merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get binary.bmp mtn:manual_merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr get binary.bmp mtn:manual_merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:240: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_manual.at:242: cp -f left.bmp binary.bmp"
echo t_merge_manual.at:242 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f left.bmp binary.bmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f left.bmp binary.bmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:242: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_manual.at:243: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=binbranch commit --message blah-blah"
echo t_merge_manual.at:243 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=binbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=binbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=binbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:243: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_merge_manual.at:245: rm -rf _MTN.old"
echo t_merge_manual.at:245 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:245: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_manual.at:245: mv  _MTN _MTN.old"
echo t_merge_manual.at:245 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:245: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_manual.at:245: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$PARENT_SHA ."
echo t_merge_manual.at:245 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$PARENT_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$PARENT_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$PARENT_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:245: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_merge_manual.at:245: test \$PROBE_R_SHA = \$PARENT_SHA"
echo t_merge_manual.at:245 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $PARENT_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $PARENT_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $PARENT_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:245: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_manual.at:247: cp -f right.bmp binary.bmp"
echo t_merge_manual.at:247 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f right.bmp binary.bmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f right.bmp binary.bmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:247: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_manual.at:248: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=binbranch commit --message blah-blah"
echo t_merge_manual.at:248 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=binbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=binbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=binbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:248: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# file marked binary: merge should fail
$at_traceoff
echo "$at_srcdir/t_merge_manual.at:251: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=binbranch merge"
echo t_merge_manual.at:251 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=binbranch merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=binbranch merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=binbranch merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_merge_manual.at:251: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# --- second: auto add as text
$at_traceoff
echo "$at_srcdir/t_merge_manual.at:254: cp -f parent.bmp text.bmp"
echo t_merge_manual.at:254 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f parent.bmp text.bmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f parent.bmp text.bmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:254: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_manual.at:255: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=text.lua add text.bmp"
echo t_merge_manual.at:255 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=text.lua add text.bmp" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=text.lua add text.bmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=text.lua add text.bmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:255: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_manual.at:256: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=textbranch commit --message blah-blah"
echo t_merge_manual.at:256 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=textbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=textbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=textbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:256: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


PARENT_SHA=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_merge_manual.at:259: cp -f left.bmp text.bmp"
echo t_merge_manual.at:259 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f left.bmp text.bmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f left.bmp text.bmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:259: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_manual.at:260: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=textbranch commit --message blah-blah"
echo t_merge_manual.at:260 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=textbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=textbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=textbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:260: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_merge_manual.at:262: rm -rf _MTN.old"
echo t_merge_manual.at:262 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:262: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_manual.at:262: mv  _MTN _MTN.old"
echo t_merge_manual.at:262 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:262: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_manual.at:262: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$PARENT_SHA ."
echo t_merge_manual.at:262 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$PARENT_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$PARENT_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$PARENT_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:262: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_merge_manual.at:262: test \$PROBE_R_SHA = \$PARENT_SHA"
echo t_merge_manual.at:262 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $PARENT_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $PARENT_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $PARENT_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:262: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_manual.at:264: cp -f right.bmp text.bmp"
echo t_merge_manual.at:264 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f right.bmp text.bmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f right.bmp text.bmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:264: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_manual.at:265: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=textbranch commit --message blah-blah"
echo t_merge_manual.at:265 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=textbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=textbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=textbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:265: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# file marked text: merge should work!
$at_traceoff
echo "$at_srcdir/t_merge_manual.at:268: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=textbranch merge"
echo t_merge_manual.at:268 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=textbranch merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=textbranch merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=textbranch merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:268: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# --- third: manually make filename as binary
$at_traceoff
echo "$at_srcdir/t_merge_manual.at:271: cp -f parent.bmp forcebin.bmp"
echo t_merge_manual.at:271 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f parent.bmp forcebin.bmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f parent.bmp forcebin.bmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:271: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_manual.at:272: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=text.lua add forcebin.bmp"
echo t_merge_manual.at:272 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=text.lua add forcebin.bmp" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=text.lua add forcebin.bmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=text.lua add forcebin.bmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:272: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_manual.at:273: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=forcebinbranch commit --message blah-blah"
echo t_merge_manual.at:273 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=forcebinbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=forcebinbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=forcebinbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:273: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


PARENT_SHA=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_merge_manual.at:276: cp -f left.bmp forcebin.bmp"
echo t_merge_manual.at:276 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f left.bmp forcebin.bmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f left.bmp forcebin.bmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:276: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_manual.at:277: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=forcebinbranch commit --message blah-blah"
echo t_merge_manual.at:277 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=forcebinbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=forcebinbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=forcebinbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:277: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_merge_manual.at:279: rm -rf _MTN.old"
echo t_merge_manual.at:279 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:279: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_manual.at:279: mv  _MTN _MTN.old"
echo t_merge_manual.at:279 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:279: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_manual.at:279: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$PARENT_SHA ."
echo t_merge_manual.at:279 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$PARENT_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$PARENT_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$PARENT_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:279: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_merge_manual.at:279: test \$PROBE_R_SHA = \$PARENT_SHA"
echo t_merge_manual.at:279 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $PARENT_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $PARENT_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $PARENT_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:279: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_manual.at:281: cp -f right.bmp forcebin.bmp"
echo t_merge_manual.at:281 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f right.bmp forcebin.bmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f right.bmp forcebin.bmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:281: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# set bin
$at_traceoff
echo "$at_srcdir/t_merge_manual.at:284: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr set forcebin.bmp mtn:manual_merge true"
echo t_merge_manual.at:284 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set forcebin.bmp mtn:manual_merge true" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set forcebin.bmp mtn:manual_merge true ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set forcebin.bmp mtn:manual_merge true ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:284: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_manual.at:285: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=forcebinbranch commit --message blah-blah"
echo t_merge_manual.at:285 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=forcebinbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=forcebinbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=forcebinbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:285: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# file marked binary: merge should fail
$at_traceoff
echo "$at_srcdir/t_merge_manual.at:288: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=forcebinbranch merge"
echo t_merge_manual.at:288 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=forcebinbranch merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=forcebinbranch merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=forcebinbranch merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_merge_manual.at:288: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# --- fourth: automatically make filename as binary, then force text
$at_traceoff
echo "$at_srcdir/t_merge_manual.at:291: cp -f parent.bmp forcetext.bmp"
echo t_merge_manual.at:291 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f parent.bmp forcetext.bmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f parent.bmp forcetext.bmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:291: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_manual.at:292: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=binary.lua add forcetext.bmp"
echo t_merge_manual.at:292 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=binary.lua add forcetext.bmp" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=binary.lua add forcetext.bmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=binary.lua add forcetext.bmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:292: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_manual.at:293: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr set forcetext.bmp mtn:manual_merge false"
echo t_merge_manual.at:293 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set forcetext.bmp mtn:manual_merge false" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set forcetext.bmp mtn:manual_merge false ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set forcetext.bmp mtn:manual_merge false ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:293: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_manual.at:294: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=forcetextbranch commit --message blah-blah"
echo t_merge_manual.at:294 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=forcetextbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=forcetextbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=forcetextbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:294: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


PARENT_SHA=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_merge_manual.at:297: cp -f left.bmp forcetext.bmp"
echo t_merge_manual.at:297 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f left.bmp forcetext.bmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f left.bmp forcetext.bmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:297: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_manual.at:298: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=forcetextbranch commit --message blah-blah"
echo t_merge_manual.at:298 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=forcetextbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=forcetextbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=forcetextbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:298: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_merge_manual.at:300: rm -rf _MTN.old"
echo t_merge_manual.at:300 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:300: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_manual.at:300: mv  _MTN _MTN.old"
echo t_merge_manual.at:300 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:300: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_manual.at:300: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$PARENT_SHA ."
echo t_merge_manual.at:300 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$PARENT_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$PARENT_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$PARENT_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:300: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_merge_manual.at:300: test \$PROBE_R_SHA = \$PARENT_SHA"
echo t_merge_manual.at:300 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $PARENT_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $PARENT_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $PARENT_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:300: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_manual.at:302: cp -f right.bmp forcetext.bmp"
echo t_merge_manual.at:302 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f right.bmp forcetext.bmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f right.bmp forcetext.bmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:302: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_manual.at:303: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=forcetextbranch commit --message blah-blah"
echo t_merge_manual.at:303 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=forcetextbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=forcetextbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=forcetextbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:303: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# file marked text: merge should work
$at_traceoff
echo "$at_srcdir/t_merge_manual.at:306: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=forcetextbranch merge"
echo t_merge_manual.at:306 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=forcetextbranch merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=forcetextbranch merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=forcetextbranch merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_manual.at:306: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  240 ) # 240. t_revert_restrict.at:3: revert works with restrictions
    at_setup_line='t_revert_restrict.at:3'
    at_desc='revert works with restrictions'
    $at_quiet $ECHO_N "240: revert works with restrictions               $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "240. t_revert_restrict.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_revert_restrict.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_revert_restrict.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_revert_restrict.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:5: rm test_keys"
echo t_revert_restrict.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >origfile <<'_ATEOF'
some file
_ATEOF

cat >orig.ignore <<'_ATEOF'
a file type that is usually ignored
_ATEOF

cat >orig2 <<'_ATEOF'
another file
_ATEOF

cat >modified1 <<'_ATEOF'
this is different 1
_ATEOF

cat >modified2 <<'_ATEOF'
this is different 2
_ATEOF

cat >modified3 <<'_ATEOF'
this is different 3
_ATEOF


cat >ignore_hook.lua <<'_ATEOF'

function ignore_file(name)
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "test.db")) then return true end
	if (string.find(name, "%.ignore$")) then return true end
	return false
end
_ATEOF


$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:29: cp origfile testfile"
echo t_revert_restrict.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp origfile testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp origfile testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:30: cp orig.ignore file.ignore"
echo t_revert_restrict.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp orig.ignore file.ignore ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp orig.ignore file.ignore ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:31: cp orig2 file2"
echo t_revert_restrict.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp orig2 file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp orig2 file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile file.ignore file2"
echo t_revert_restrict.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile file.ignore file2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile file.ignore file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile file.ignore file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah'"
echo t_revert_restrict.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='blah blah' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# modify the files, then revert the 'ignored' file
$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:36: cp modified1 testfile"
echo t_revert_restrict.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp modified1 testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp modified1 testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:37: cp modified2 file.ignore"
echo t_revert_restrict.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp modified2 file.ignore ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp modified2 file.ignore ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:39: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=ignore_hook.lua revert file.ignore"
echo t_revert_restrict.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=ignore_hook.lua revert file.ignore" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=ignore_hook.lua revert file.ignore ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=ignore_hook.lua revert file.ignore ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check that only the 'ignored' file was reverted
$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:42: cmp testfile modified1"
echo t_revert_restrict.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile modified1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile modified1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:43: cmp file.ignore orig.ignore"
echo t_revert_restrict.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp file.ignore orig.ignore ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp file.ignore orig.ignore ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# now run it again with two paths, one in the ignorehook list, the other normal
$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:46: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert ."
echo t_revert_restrict.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:47: cp modified1 testfile"
echo t_revert_restrict.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp modified1 testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp modified1 testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:48: cp modified2 file.ignore"
echo t_revert_restrict.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp modified2 file.ignore ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp modified2 file.ignore ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:49: cp modified3 file2"
echo t_revert_restrict.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp modified3 file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp modified3 file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:51: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=ignore_hook.lua revert file.ignore testfile"
echo t_revert_restrict.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=ignore_hook.lua revert file.ignore testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=ignore_hook.lua revert file.ignore testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=ignore_hook.lua revert file.ignore testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check that the files are correct
$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:54: cmp testfile origfile"
echo t_revert_restrict.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile origfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile origfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:55: cmp file.ignore orig.ignore"
echo t_revert_restrict.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp file.ignore orig.ignore ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp file.ignore orig.ignore ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:56: cmp file2 modified3"
echo t_revert_restrict.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp file2 modified3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp file2 modified3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# now try just reverting missing files

$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:61: cp modified1 testfile"
echo t_revert_restrict.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp modified1 testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp modified1 testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:62: cp modified2 file.ignore"
echo t_revert_restrict.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp modified2 file.ignore ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp modified2 file.ignore ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:63: rm file2"
echo t_revert_restrict.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:65: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=ignore_hook.lua revert --missing . --debug"
echo t_revert_restrict.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=ignore_hook.lua revert --missing . --debug" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=ignore_hook.lua revert --missing . --debug ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=ignore_hook.lua revert --missing . --debug ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:67: cmp testfile modified1"
echo t_revert_restrict.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile modified1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile modified1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:67: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:68: cmp file.ignore modified2"
echo t_revert_restrict.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp file.ignore modified2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp file.ignore modified2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:69: cmp file2 orig2"
echo t_revert_restrict.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp file2 orig2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp file2 orig2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# make sure that 'revert --missing' when there are no missing files doesn't
# revert existing changes

$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:75: cp modified1 testfile"
echo t_revert_restrict.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp modified1 testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp modified1 testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:76: cp orig.ignore file.ignore"
echo t_revert_restrict.at:76 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp orig.ignore file.ignore ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp orig.ignore file.ignore ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:76: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:77: cp orig2 file2"
echo t_revert_restrict.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp orig2 file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp orig2 file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:79: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=ignore_hook.lua revert --missing . --debug"
echo t_revert_restrict.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=ignore_hook.lua revert --missing . --debug" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=ignore_hook.lua revert --missing . --debug ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=ignore_hook.lua revert --missing . --debug ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:81: cmp testfile modified1"
echo t_revert_restrict.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testfile modified1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testfile modified1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:81: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:82: cmp file.ignore orig.ignore"
echo t_revert_restrict.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp file.ignore orig.ignore ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp file.ignore orig.ignore ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_restrict.at:83: cmp file2 orig2"
echo t_revert_restrict.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp file2 orig2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp file2 orig2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_restrict.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  241 ) # 241. t_status.at:1: status with missing files
    at_setup_line='t_status.at:1'
    at_desc='status with missing files'
    $at_quiet $ECHO_N "241: status with missing files                    $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "241. t_status.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_status.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_status.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_status.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_status.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:2: rm test_keys"
echo t_status.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# patch existing file
# add new file (with patch)
# rename existing file
# rename and patch existing file
# drop existing file

# again with --brief


cat >from <<'_ATEOF'
from
_ATEOF

$at_traceoff
echo "$at_srcdir/t_status.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add from"
echo t_status.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add from" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add from ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add from ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >from_patched <<'_ATEOF'
from_patched
_ATEOF

$at_traceoff
echo "$at_srcdir/t_status.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add from_patched"
echo t_status.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add from_patched" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add from_patched ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add from_patched ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >patched <<'_ATEOF'
patched
_ATEOF

$at_traceoff
echo "$at_srcdir/t_status.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add patched"
echo t_status.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add patched" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add patched ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add patched ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >dropped <<'_ATEOF'
dropped
_ATEOF

$at_traceoff
echo "$at_srcdir/t_status.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add dropped"
echo t_status.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dropped" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dropped ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dropped ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_status.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_status.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >added <<'_ATEOF'
added
_ATEOF

$at_traceoff
echo "$at_srcdir/t_status.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add added"
echo t_status.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add added" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add added ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add added ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >from_patched <<'_ATEOF'
from_patched
patched
_ATEOF

cat >patched <<'_ATEOF'
patched
patched
_ATEOF


$at_traceoff
echo "$at_srcdir/t_status.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop dropped"
echo t_status.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop dropped" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop dropped ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop dropped ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_status.at:35: mv from to"
echo t_status.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv from to ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv from to ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:36: mv from_patched to_patched"
echo t_status.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv from_patched to_patched ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv from_patched to_patched ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_status.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename from to"
echo t_status.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename from to" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename from to ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename from to ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:39: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename from_patched to_patched"
echo t_status.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename from_patched to_patched" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename from_patched to_patched ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename from_patched to_patched ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_status.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_status.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:42: grep '^delete \"dropped\"' stdout"
echo t_status.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^delete "dropped"' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^delete "dropped"' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:43: grep '^rename \"from\"' stdout"
echo t_status.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^rename "from"' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^rename "from"' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:44: grep '^    to \"to\"' stdout"
echo t_status.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^    to "to"' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^    to "to"' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:45: grep '^rename \"from_patched\"' stdout"
echo t_status.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^rename "from_patched"' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^rename "from_patched"' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:46: grep '^    to \"to_patched\"' stdout"
echo t_status.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^    to "to_patched"' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^    to "to_patched"' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:47: grep '^add_file \"added\"' stdout"
echo t_status.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^add_file "added"' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^add_file "added"' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:48: grep '^patch \"patched\"' stdout"
echo t_status.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^patch "patched"' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^patch "patched"' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:49: grep '^patch \"to_patched\"' stdout"
echo t_status.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^patch "to_patched"' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^patch "to_patched"' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_status.at:51: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status --brief"
echo t_status.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:52: grep '^dropped dropped' stdout"
echo t_status.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^dropped dropped' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^dropped dropped' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:53: grep '^renamed from' stdout"
echo t_status.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^renamed from' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^renamed from' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:54: grep '^     to to' stdout"
echo t_status.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^     to to' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^     to to' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:55: grep '^renamed from_patched' stdout"
echo t_status.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^renamed from_patched' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^renamed from_patched' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:56: grep '^     to to_patched' stdout"
echo t_status.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^     to to_patched' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^     to to_patched' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:57: grep '^added   added' stdout"
echo t_status.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^added   added' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^added   added' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:58: grep '^patched patched' stdout"
echo t_status.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^patched patched' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^patched patched' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:59: grep '^patched to_patched' stdout"
echo t_status.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^patched to_patched' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^patched to_patched' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# restricted

$at_traceoff
echo "$at_srcdir/t_status.at:63: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status from from_patched"
echo t_status.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status from from_patched" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status from from_patched ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status from from_patched ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:64: grep '^delete \"dropped\"' stdout"
echo t_status.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^delete "dropped"' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^delete "dropped"' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_status.at:64: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:65: grep '^rename \"from\"' stdout"
echo t_status.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^rename "from"' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^rename "from"' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:66: grep '^    to \"to\"' stdout"
echo t_status.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^    to "to"' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^    to "to"' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:66: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:67: grep '^rename \"from_patched\"' stdout"
echo t_status.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^rename "from_patched"' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^rename "from_patched"' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:67: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:68: grep '^    to \"to_patched\"' stdout"
echo t_status.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^    to "to_patched"' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^    to "to_patched"' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:69: grep '^add_file \"added\"' stdout"
echo t_status.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^add_file "added"' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^add_file "added"' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_status.at:69: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:70: grep '^patch \"patched\"' stdout"
echo t_status.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^patch "patched"' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^patch "patched"' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_status.at:70: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_status.at:71: grep '^patch \"to_patched\"' stdout"
echo t_status.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^patch "to_patched"' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^patch "to_patched"' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_status.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  242 ) # 242. t_cvsimport_drepper2.at:3: a tricky CVS repository with tags
    at_setup_line='t_cvsimport_drepper2.at:3'
    at_desc='a tricky CVS repository with tags'
    $at_quiet $ECHO_N "242: a tricky CVS repository with tags            $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "242. t_cvsimport_drepper2.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper2.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_cvsimport_drepper2.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper2.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper2.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_cvsimport_drepper2.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper2.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper2.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_cvsimport_drepper2.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper2.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper2.at:5: rm test_keys"
echo t_cvsimport_drepper2.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper2.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper2.at:7: echo \$UNB64_COMMAND"
echo t_cvsimport_drepper2.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper2.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test -n "`command -v gunzip`" 2>/dev/null; then
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  UNGZ_COMMAND="gunzip -c"
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper2.at:7: echo \$UNGZ_COMMAND"
echo t_cvsimport_drepper2.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNGZ_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper2.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >test.manifest <<'_ATEOF'
format_version "1"

dir ""

dir "t"

dir "t/libasm"

   file "t/libasm/ChangeLog"
content [73c0eabf76cc611c33d821d203a52670b8f6265a]

dir "t/libelf-po"

   file "t/libelf-po/POTFILES.in"
content [411cfd008f4a72e433b48d6421733b6a792ca3b7]
_ATEOF


cat >test.tags <<'_ATEOF'
initial 7be6a094cb29307bed5bbacf40b3f3642222f413 tester@test.net
portable-branch-base 32ba3f451dcf277762ca1c328043df2e2ceebc17 tester@test.net
portable-branch-fork-20050601T0139 32ba3f451dcf277762ca1c328043df2e2ceebc17 tester@test.net
_ATEOF


cat >e.tar.gz.enc <<'_ATEOF'
H4sIAEJyw0IAA+1YbW/bOBLOV+tXEOiHSw+xqhdKTuq9g4u03SuQbIumub1vAS3R
lhBZEkgqL/frb0jJtiTK26htens4ThvZHlIPZzjD4czQV0fPTg7QbBbUnyHufDZ0
5Dpe6IQz+XHkuK7n4CMUPL9oR0cVF4QhdLRm5DEu8oPzvjb+P0r0lXh2D3ii/QNg
Op6Ppf0xDo39fwZJ+2fpkvDN87nBKPu7DtjfmzkzY/+fQS37nyckX9OLYn1y92PX
kAbGGB+yfxgEyv54hgPHxeAnLp75cP6dHyvGMP2f2z+hJJ64tuvPLRJFlPO5xR83
yyLj1gT8Ir5fZdMlI3mUvJazbGy7tmN71qQsmCDLjDaj01XBbqee4wRO6LhfHNc/
Uy9oE2sYx8Y6BHghbV6KUw4u2XvFm1tZEd3yOeKCpZGYW1Gx2dBcTBYv0GJuWZZ6
OSaCTqQktuPZLjzPbHxqu958QiqRFAzFjJYlZfMJmF5Q9O6hnFv1ShS03qo5t3L6
IORPWFcie11kJ5TIzqntBU9C3uO5NZ6r47lSUjwWz6nxnB5eYHuO+j8bh3em4M40
NBf2EZYZKd2pQjvV0KSu7mjZZgpttkPD0gaeks3DdoDHoYUKLWyjgUjg4DPbBTuE
49AChRZ00QDHA3cCfx8pG1ZouIc2U97s2f7IffMV2v5s+NJxwc/deveedjZ2aPWB
8IbQQEJ/5L41x6GH5sl980G2UWg1lDq/bY9TR0vuH9jhbIfHiozk8VfgrJjyyFos
ttElK9bWwrYWloAJ1kLiTx1v6gYIXWcQlRL0thYToV8agRcLRuOECBvC1d8ta/JX
dElu6SrNKDp+c3lz/v7iza9XL1+jN3GMpr9XecWp/AL4jMAnRNYNEX/zbPUqhMUb
msd2hI6lBPI7vHpJ2C0qCSMbKmBpwlFZcJ4us0dU48HLW1Gd8FtEtcnmNfpMN8Ud
RVmaCwTZQgxf1m3kUZvQ0mSZ5oQ9Nrq8LfK/CARqbIALhrlPRYIoYwU7fonSHEVw
TVgTXoCqCayP1gXl6J4VSpS+xOcJjW4RbCGSu4UYhRuEiLTIuYKCT8GqSMCGv736
qL3ftc9lwUAawnJYlduottdqU8WrjJRqjcvrtzD5k2apjn7NJvKExMW9VOCOsFTe
g9y2JhepEOAXUUZJXpV8j5TTe7iY7QjcJFM6ULQBIPZYK5dQdSkC2s4L2obBYw0j
l4vyGwBkpdSgzwM9rjlFH377cn31DokCdnZFGc0jMM1+bi0CnjpnU2+8b0iTS4Wl
QcBUm1KeGOUN6yhCEBB38C5kHt/s1FdVKTMRtKzSLJY7qJZozNpawj0ds0SdVH+y
E3R802wWzVaVSDOO4mJD0rwNPXtO6f2pczp1/W9aIs3hQNISPBcVuVSKLjObnKC8
ENtfvGgv445aBg5CLL3n/J9XiLAoSe+ojK2tKK7i7WUKwQx0ax9NcU/JLT9BpCwh
yi35PahbEhElu9hMHBQ0RyCY+iDYZxXw0WX0KyOwSeiX+gb4wx1Gx7+/+9eXz2/A
hr/R+91ZPUG8WnKRikrGjuWjDCWrdF0xkH/SiRrS8qmQ0abMSERRsdrGdti2RlWv
f63ELgq3g+7AIN4OOtqgj/xm8GxgzGvGTgdAIeXzZ8i1iHqihv7YSrMa57qUt20H
LWhmhPWMFwNTtloEB0G2M/BXZzQ38/v0AYnHshic4x1ACaTS8gHO4ozz4sYMNfCu
gtZX/2/XeYeoqf8hNE3L4plaQGP6P9jzof73fdf0f34Kde3/6eOX9x8u3l1B2P+B
TaCv9H+C0A1b/R/Z/w98bPo/P4Wa/g9+SvtHZlzhEzs/enunATjc98F62wfXvaY0
T0VKMtkHkv+sSR2B699PaArhoU5LAF/876ui230bKH3Pvq+KVhU+lL6y+sU2dn5M
FQ3iYUA7fXr3q97UVjltfzfugXIa95OQF+gi5UKmSDL7gqoukVcwpFYC8mWZAELW
lPOMKPdpCh6okV6g86J8ZOk6Eej4/CWS1/iJfAZQbMXoH0ScoA95BPmWXACEgqqJ
FxUDh7fq4PcK/rYFRzehkEVencsjmTuqQyFzvzhlW4y9/JBEeFbTTm+VMJZ661UM
tWN/lSYl+ZhDDptTELYlSCuL8GSGIh9DqvaUjMNdltfkJR/q8wM12l3Kofbdy4uR
57e2wPduVjz9N61F3jPXUE8mMRtgl8NsPsCGknAIBNhDIJVK0lQSPjiSV1nWH3kA
z6CiWB3gbzr8EA/oCswhXWu2JmbN1nQF9pCuNXsI5ICuuxFNVxgZ1HXP7+p6s6Rr
KDg7rCgXXdC6WSET4dBts0Gu3kQoLdcgF9G5mtI1N1vpTG0jFFc2DXSmNhW2nbBh
ruqS9LjyhtGYugbATGO4OjSuJpUye17pK/EEolIeP3QHEsKTLuc2VZvd4tTdnC4P
gLSlwYd0yZt2S4/3IHSONg0iatznDKwATM1BbxhkD6TvHbABpehZpvbjLu+OMhmM
9sy1snf3TK6bfY0ywrnOjh/772vHd8uVTTedWw7OZTQjg1ydyQcBOk7YYqb5qhgc
AG9qO812BPYoJtWBAboa5OeHXpD3y+CALq0Wv7bcgf2qbXujm6IZGABqRgZM0owc
XmbANPuR4YEBE21HNMX3AwOm2g8OmUtF3j0vzyCV2d3zdRJV3/Vwe6c5XMfpRmbC
+1t+8aftEhgyZMiQIUOGDBkyZMiQIUOGDBkyZMiQIUOGDBkyZMiQIUOGDBkyZMiQ
IUOGDBn6s9B/AByaqK8AUAAA
_ATEOF



$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper2.at:77: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o e.tar.gz e.tar.gz.enc
else
  \$UNB64_COMMAND <e.tar.gz.enc >e.tar.gz
fi
"
echo t_cvsimport_drepper2.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o e.tar.gz e.tar.gz.enc
else
  $UNB64_COMMAND <e.tar.gz.enc >e.tar.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o e.tar.gz e.tar.gz.enc
else
  $UNB64_COMMAND <e.tar.gz.enc >e.tar.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper2.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper2.at:77: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"e.tar.gz\" != \"e.tar.gz\"; then
    mv e.tar.gz e.tar.gz
  fi
  gunzip e.tar.gz
else
  \$UNGZ_COMMAND <e.tar.gz >e.tar
fi
"
echo t_cvsimport_drepper2.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "e.tar.gz" != "e.tar.gz"; then
    mv e.tar.gz e.tar.gz
  fi
  gunzip e.tar.gz
else
  $UNGZ_COMMAND <e.tar.gz >e.tar
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "e.tar.gz" != "e.tar.gz"; then
    mv e.tar.gz e.tar.gz
  fi
  gunzip e.tar.gz
else
  $UNGZ_COMMAND <e.tar.gz >e.tar
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper2.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper2.at:78: tar -xf e.tar"
echo t_cvsimport_drepper2.at:78 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; tar -xf e.tar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; tar -xf e.tar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper2.at:78: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper2.at:80: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=foo.bar cvs_import e"
echo t_cvsimport_drepper2.at:80 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=foo.bar cvs_import e" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=foo.bar cvs_import e ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=foo.bar cvs_import e ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper2.at:80: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper2.at:81: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=foo.bar co"
echo t_cvsimport_drepper2.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=foo.bar co" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=foo.bar co ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=foo.bar co ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper2.at:81: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper2.at:82: cd foo.bar && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of"
echo t_cvsimport_drepper2.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd foo.bar && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd foo.bar && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd foo.bar && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper2.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper2.at:83:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_cvsimport_drepper2.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper2.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper2.at:84: cmp test.manifest stdout"
echo t_cvsimport_drepper2.at:84 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp test.manifest stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp test.manifest stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper2.at:84: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper2.at:85: cd foo.bar && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net list tags"
echo t_cvsimport_drepper2.at:85 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd foo.bar && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list tags" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd foo.bar && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list tags ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd foo.bar && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list tags ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper2.at:85: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper2.at:86:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_cvsimport_drepper2.at:86 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper2.at:86: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_drepper2.at:87: cmp test.tags stdout"
echo t_cvsimport_drepper2.at:87 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp test.tags stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp test.tags stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_drepper2.at:87: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  243 ) # 243. t_rcfile_dir.at:1: --rcfile=directory
    at_setup_line='t_rcfile_dir.at:1'
    at_desc='--rcfile=directory'
    $at_quiet $ECHO_N "243: --rcfile=directory                           $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "243. t_rcfile_dir.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_rcfile_dir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_rcfile_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcfile_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rcfile_dir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_rcfile_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcfile_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rcfile_dir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_rcfile_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcfile_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rcfile_dir.at:2: rm test_keys"
echo t_rcfile_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcfile_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rcfile_dir.at:4: mkdir gongolo"
echo t_rcfile_dir.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir gongolo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir gongolo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcfile_dir.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# write two files and check that they will be invoked in alphabetic order
cat >gongolo/aaa.rc <<'_ATEOF'
function paraponzi()
  io.write("BOOGA BOOGA")
end
paraponzi()
_ATEOF

cat >gongolo/bbb.rc <<'_ATEOF'
function labellagigogin()
  io.write("CICCA CICCA")
end
labellagigogin()
_ATEOF


# note: rcfile is placed outside workdir
$at_traceoff
echo "$at_srcdir/t_rcfile_dir.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch alt_wrk"
echo t_rcfile_dir.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch alt_wrk" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch alt_wrk ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch alt_wrk ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcfile_dir.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rcfile_dir.at:20: cd alt_wrk && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --root=. --rcfile=../gongolo status"
echo t_rcfile_dir.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd alt_wrk && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. --rcfile=../gongolo status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd alt_wrk && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. --rcfile=../gongolo status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd alt_wrk && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. --rcfile=../gongolo status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcfile_dir.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rcfile_dir.at:21: grep \"BOOGA BOOGACICCA CICCA\" stdout >/dev/null"
echo t_rcfile_dir.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "BOOGA BOOGACICCA CICCA" stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "BOOGA BOOGACICCA CICCA" stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcfile_dir.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# write a third file: should be read beetween the two previous ones
cat >gongolo/aba.rc <<'_ATEOF'
function notwowithoutthree()
  io.write("hu hu")
end
notwowithoutthree()
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rcfile_dir.at:29: cd alt_wrk && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --root=. --rcfile=../gongolo status"
echo t_rcfile_dir.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd alt_wrk && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. --rcfile=../gongolo status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd alt_wrk && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. --rcfile=../gongolo status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd alt_wrk && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. --rcfile=../gongolo status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcfile_dir.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rcfile_dir.at:30: grep \"BOOGA BOOGAhu huCICCA CICCA\" stdout >/dev/null"
echo t_rcfile_dir.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "BOOGA BOOGAhu huCICCA CICCA" stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "BOOGA BOOGAhu huCICCA CICCA" stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rcfile_dir.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  244 ) # 244. t_lua_includedir.at:1: include() and includedir() lua functions
    at_setup_line='t_lua_includedir.at:1'
    at_desc='include() and includedir() lua functions'
    $at_quiet $ECHO_N "244: include() and includedir() lua functions     $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "244. t_lua_includedir.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_lua_includedir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_lua_includedir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lua_includedir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lua_includedir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_lua_includedir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lua_includedir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lua_includedir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_lua_includedir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lua_includedir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lua_includedir.at:2: rm test_keys"
echo t_lua_includedir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lua_includedir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_lua_includedir.at:4: mkdir gongolo"
echo t_lua_includedir.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir gongolo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir gongolo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lua_includedir.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >include.lua <<'_ATEOF'
include("../gongolo/aaa.rc")
_ATEOF


cat >includedir.lua <<'_ATEOF'
includedir("../gongolo")
_ATEOF


# write two files and check that they will be invoked in alphabetic order
cat >gongolo/aaa.rc <<'_ATEOF'
function paraponzi()
  io.write("BOOGA BOOGA")
end
paraponzi()
_ATEOF

cat >gongolo/bbb.zz <<'_ATEOF'
function labellagigogin()
  io.write("CICCA CICCA")
end
labellagigogin()
_ATEOF


# setup a wrk dir
$at_traceoff
echo "$at_srcdir/t_lua_includedir.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch alt_wrk"
echo t_lua_includedir.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch alt_wrk" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch alt_wrk ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch alt_wrk ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lua_includedir.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# include directly a single file
$at_traceoff
echo "$at_srcdir/t_lua_includedir.at:28: cd alt_wrk && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --root=. --rcfile=../include.lua status"
echo t_lua_includedir.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd alt_wrk && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. --rcfile=../include.lua status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd alt_wrk && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. --rcfile=../include.lua status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd alt_wrk && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. --rcfile=../include.lua status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lua_includedir.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lua_includedir.at:29: grep \"BOOGA BOOGA\" stdout >/dev/null"
echo t_lua_includedir.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "BOOGA BOOGA" stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "BOOGA BOOGA" stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lua_includedir.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# include dirs
$at_traceoff
echo "$at_srcdir/t_lua_includedir.at:32: cd alt_wrk && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --root=. --rcfile=../includedir.lua status"
echo t_lua_includedir.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd alt_wrk && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. --rcfile=../includedir.lua status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd alt_wrk && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. --rcfile=../includedir.lua status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd alt_wrk && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. --rcfile=../includedir.lua status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lua_includedir.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lua_includedir.at:33: grep \"BOOGA BOOGACICCA CICCA\" stdout >/dev/null"
echo t_lua_includedir.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "BOOGA BOOGACICCA CICCA" stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "BOOGA BOOGACICCA CICCA" stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lua_includedir.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# write a third file: should be read between the two previous ones
cat >gongolo/aba.rc <<'_ATEOF'
function notwowithoutthree()
  io.write("hu hu")
end
notwowithoutthree()
_ATEOF

$at_traceoff
echo "$at_srcdir/t_lua_includedir.at:41: cd alt_wrk && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --root=. --rcfile=../includedir.lua status"
echo t_lua_includedir.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd alt_wrk && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. --rcfile=../includedir.lua status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd alt_wrk && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. --rcfile=../includedir.lua status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd alt_wrk && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --root=. --rcfile=../includedir.lua status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lua_includedir.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_lua_includedir.at:42: grep \"BOOGA BOOGAhu huCICCA CICCA\" stdout >/dev/null"
echo t_lua_includedir.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "BOOGA BOOGAhu huCICCA CICCA" stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "BOOGA BOOGAhu huCICCA CICCA" stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_lua_includedir.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  245 ) # 245. t_existsonpath.at:1: lua function existsonpath
    at_setup_line='t_existsonpath.at:1'
    at_desc='lua function existsonpath'
    $at_quiet $ECHO_N "245: lua function existsonpath                    $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "245. t_existsonpath.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_existsonpath.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_existsonpath.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_existsonpath.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_existsonpath.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_existsonpath.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_existsonpath.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_existsonpath.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_existsonpath.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_existsonpath.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_existsonpath.at:2: rm test_keys"
echo t_existsonpath.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_existsonpath.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# Need a way to break into the lua interpreter; our strategy is to
# redefine the use_inodeprints function to run our code, and then
# create a new workspace.

cat >test.lua <<'_ATEOF'
function use_inodeprints()
  if (existsonpath("ls") == 0) then
    io.write("asdfghjkl\n")
  end
  if (existsonpath("weaohriosfaoisd") ~= 0) then
    io.write("qwertyuiop\n")
  end
  return false
end
_ATEOF

$at_traceoff
echo "$at_srcdir/t_existsonpath.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --rcfile=test.lua --branch=testbranch subdir"
echo t_existsonpath.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --rcfile=test.lua --branch=testbranch subdir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --rcfile=test.lua --branch=testbranch subdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --rcfile=test.lua --branch=testbranch subdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_existsonpath.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_existsonpath.at:19: grep asdfghjkl stdout >/dev/null"
echo t_existsonpath.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep asdfghjkl stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep asdfghjkl stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_existsonpath.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_existsonpath.at:20: grep qwertyuiop stdout >/dev/null"
echo t_existsonpath.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep qwertyuiop stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep qwertyuiop stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_existsonpath.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  246 ) # 246. t_db_kill_branch_certs_locally.at:1: db kill_branch_certs_locally command
    at_setup_line='t_db_kill_branch_certs_locally.at:1'
    at_desc='db kill_branch_certs_locally command'
    $at_quiet $ECHO_N "246: db kill_branch_certs_locally command         $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "246. t_db_kill_branch_certs_locally.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_db_kill_branch_certs_locally.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_db_kill_branch_certs_locally.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_branch_certs_locally.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_branch_certs_locally.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_db_kill_branch_certs_locally.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_branch_certs_locally.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_branch_certs_locally.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_db_kill_branch_certs_locally.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_branch_certs_locally.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_branch_certs_locally.at:2: rm test_keys"
echo t_db_kill_branch_certs_locally.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_branch_certs_locally.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This tests the db kill_branch_certs_locally command

# Prepare a db with a couple of branches

cat >foo <<'_ATEOF'
file named foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_db_kill_branch_certs_locally.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_db_kill_branch_certs_locally.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_branch_certs_locally.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_db_kill_branch_certs_locally.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=good commit --message blah-blah"
echo t_db_kill_branch_certs_locally.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=good commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=good commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=good commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_branch_certs_locally.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REVISION=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_db_kill_branch_certs_locally.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net cert \$REVISION branch bad"
echo t_db_kill_branch_certs_locally.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $REVISION branch bad" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $REVISION branch bad ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $REVISION branch bad ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_branch_certs_locally.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_branch_certs_locally.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls branches"
echo t_db_kill_branch_certs_locally.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_branch_certs_locally.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_branch_certs_locally.at:13: grep good stdout >/dev/null"
echo t_db_kill_branch_certs_locally.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep good stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep good stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_branch_certs_locally.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_branch_certs_locally.at:14: grep bad stdout >/dev/null"
echo t_db_kill_branch_certs_locally.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep bad stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep bad stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_branch_certs_locally.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Now we delete the branch, and make sure it's gone
$at_traceoff
echo "$at_srcdir/t_db_kill_branch_certs_locally.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db kill_branch_certs_locally bad"
echo t_db_kill_branch_certs_locally.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db kill_branch_certs_locally bad" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db kill_branch_certs_locally bad ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db kill_branch_certs_locally bad ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_branch_certs_locally.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_branch_certs_locally.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls branches"
echo t_db_kill_branch_certs_locally.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_branch_certs_locally.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_branch_certs_locally.at:19: grep good stdout >/dev/null"
echo t_db_kill_branch_certs_locally.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep good stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep good stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_branch_certs_locally.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_branch_certs_locally.at:20: grep bad stdout >/dev/null"
echo t_db_kill_branch_certs_locally.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep bad stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep bad stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_db_kill_branch_certs_locally.at:20: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# And lets make sure our database is still OK
$at_traceoff
echo "$at_srcdir/t_db_kill_branch_certs_locally.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db check"
echo t_db_kill_branch_certs_locally.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_branch_certs_locally.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  247 ) # 247. t_netsync_globs.at:1: netsync with globs
    at_setup_line='t_netsync_globs.at:1'
    at_desc='netsync with globs'
    $at_quiet $ECHO_N "247: netsync with globs                           $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "247. t_netsync_globs.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_netsync_globs.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_netsync_globs.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_netsync_globs.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:2: rm test_keys"
echo t_netsync_globs.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:3: cp test.db test2.db"
echo t_netsync_globs.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:3: cp -r keys/ keys2"
echo t_netsync_globs.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:3: cp test.db test3.db"
echo t_netsync_globs.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:3: cp -r keys/ keys3"
echo t_netsync_globs.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT




cat >testfile <<'_ATEOF'
foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_netsync_globs.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=1branch1 commit --message blah-blah"
echo t_netsync_globs.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=1branch1 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=1branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=1branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV11=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:10: rm -rf _MTN"
echo t_netsync_globs.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_netsync_globs.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >testfile <<'_ATEOF'
bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_netsync_globs.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=1branch2 commit --message blah-blah"
echo t_netsync_globs.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=1branch2 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=1branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=1branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV12=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:17: rm -rf _MTN"
echo t_netsync_globs.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_netsync_globs.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >testfile <<'_ATEOF'
baz
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_netsync_globs.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=2branch1 commit --message blah-blah"
echo t_netsync_globs.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=2branch1 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=2branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=2branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV21=`cat _MTN/revision`



# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve "*branch*" &
sleep 4


# check a glob

$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT \"*anch2\""
echo t_netsync_globs.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT \"*anch2\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT "*anch2" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT "*anch2" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$REV12"
echo t_netsync_globs.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $REV12" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $REV12 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $REV12 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$REV11"
echo t_netsync_globs.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $REV11" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $REV11 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $REV11 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:29: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$REV21"
echo t_netsync_globs.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $REV21" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $REV21 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $REV21 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:30: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check explicit multiple branches

$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua pull localhost:\$_PORT 1branch1 2branch1"
echo t_netsync_globs.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua pull localhost:$_PORT 1branch1 2branch1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua pull localhost:$_PORT 1branch1 2branch1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 --rcfile=netsync.lua pull localhost:$_PORT 1branch1 2branch1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision \$REV12"
echo t_netsync_globs.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision $REV12" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision $REV12 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision $REV12 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:34: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision \$REV11"
echo t_netsync_globs.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision $REV11" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision $REV11 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision $REV11 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_globs.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision \$REV21"
echo t_netsync_globs.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision $REV21" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision $REV21 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test3.db --keydir=keys3 automate get_revision $REV21 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_globs.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  248 ) # 248. t_set_default.at:1: --set-default
    at_setup_line='t_set_default.at:1'
    at_desc='--set-default'
    $at_quiet $ECHO_N "248: --set-default                                $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "248. t_set_default.at:1: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_set_default.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_set_default.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_set_default.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_set_default.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_set_default.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_set_default.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_set_default.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_set_default.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_set_default.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_set_default.at:3: rm test_keys"
echo t_set_default.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_set_default.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_set_default.at:4: cp test.db test2.db"
echo t_set_default.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_set_default.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_set_default.at:4: cp -r keys/ keys2"
echo t_set_default.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_set_default.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_set_default.at:4: cp test.db test3.db"
echo t_set_default.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_set_default.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_set_default.at:4: cp -r keys/ keys3"
echo t_set_default.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_set_default.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT




cat >testfile <<'_ATEOF'
foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_set_default.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_set_default.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_set_default.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_set_default.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_set_default.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_set_default.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


T1=`cat _MTN/revision`

# set defaults in db 2



# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4



$at_traceoff
echo "$at_srcdir/t_set_default.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_set_default.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_set_default.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



$at_traceoff
echo "$at_srcdir/t_set_default.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$T1"
echo t_set_default.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $T1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $T1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $T1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_set_default.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
blah blah
_ATEOF



$at_traceoff
echo "$at_srcdir/t_set_default.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_set_default.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_set_default.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


T2=`cat _MTN/revision`

# make sure the defaults really were set to 'testbranch'


# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4

$at_traceoff
echo "$at_srcdir/t_set_default.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pull"
echo t_set_default.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pull" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pull ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pull ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_set_default.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null


$at_traceoff
echo "$at_srcdir/t_set_default.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$T2"
echo t_set_default.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $T2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $T2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $T2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_set_default.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# do a --set-default pull of another branch


# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve otherbranch &
sleep 4

$at_traceoff
echo "$at_srcdir/t_set_default.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --set-default pull localhost:\$_PORT otherbranch"
echo t_set_default.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --set-default pull localhost:$_PORT otherbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --set-default pull localhost:$_PORT otherbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --set-default pull localhost:$_PORT otherbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_set_default.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



# create a new revision on that branch

cat >testfile <<'_ATEOF'
other1
_ATEOF



$at_traceoff
echo "$at_srcdir/t_set_default.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah"
echo t_set_default.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_set_default.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


O1=`cat _MTN/revision`

# and make sure that our default is now it


# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve otherbranch &
sleep 4

$at_traceoff
echo "$at_srcdir/t_set_default.at:39: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pull"
echo t_set_default.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pull" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pull ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 pull ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_set_default.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



$at_traceoff
echo "$at_srcdir/t_set_default.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$O1"
echo t_set_default.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $O1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $O1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $O1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_set_default.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  249 ) # 249. t_netsync_read_permissions.at:1: get_netsync_read_permitted
    at_setup_line='t_netsync_read_permissions.at:1'
    at_desc='get_netsync_read_permitted'
    $at_quiet $ECHO_N "249: get_netsync_read_permitted                   $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "249. t_netsync_read_permissions.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_netsync_read_permissions.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_netsync_read_permissions.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_netsync_read_permissions.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:2: rm test_keys"
echo t_netsync_read_permissions.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:3: cp test.db test2.db"
echo t_netsync_read_permissions.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:3: cp -r keys/ keys2"
echo t_netsync_read_permissions.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:3: cp test.db test3.db"
echo t_netsync_read_permissions.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:3: cp -r keys/ keys3"
echo t_netsync_read_permissions.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT




cat >testfile <<'_ATEOF'
1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_netsync_read_permissions.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah"
echo t_netsync_read_permissions.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


B1=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
2
_ATEOF



$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah"
echo t_netsync_read_permissions.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


B2=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
3
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_netsync_read_permissions.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch3 commit --message blah-blah"
echo t_netsync_read_permissions.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch3 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch3 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch3 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


B3=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
4
_ATEOF



$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch4 commit --message blah-blah"
echo t_netsync_read_permissions.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch4 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch4 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch4 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


B4=`cat _MTN/revision`

# Allow permission to branch1 and branch3 only
# pulling more than that should error out
# pulling exactly that should give revs B1, B2, B3; and only give
# branch certs on B1, B3.
$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:29: mkdir perm"
echo t_netsync_read_permissions.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir perm ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir perm ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >perm/read-permissions <<'_ATEOF'

pattern "branch1"
allow "*"
pattern "branch3"
allow "*"
_ATEOF




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --rcfile=$_ROOT_DIR/min_hooks.lua --key=tester@test.net --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve --confdir=perm 'branch*' &
sleep 4




$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:39: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT 'branch*'"
echo t_netsync_read_permissions.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT 'branch*'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT 'branch*' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT 'branch*' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:39: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B1"
echo t_netsync_read_permissions.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:40: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B2"
echo t_netsync_read_permissions.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:41: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B3"
echo t_netsync_read_permissions.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:42: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B4"
echo t_netsync_read_permissions.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B4" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B4 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B4 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:43: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:45: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT branch1 branch3"
echo t_netsync_read_permissions.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT branch1 branch3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT branch1 branch3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT branch1 branch3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:46: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B1"
echo t_netsync_read_permissions.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:47: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B2"
echo t_netsync_read_permissions.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:48: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B3"
echo t_netsync_read_permissions.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:49: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B4"
echo t_netsync_read_permissions.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B4" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B4 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B4 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:49: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync_read_permissions.at:51: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs \$B2 | grep branch2 >/dev/null"
echo t_netsync_read_permissions.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $B2 | grep branch2 >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $B2 | grep branch2 >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $B2 | grep branch2 >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_read_permissions.at:51: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  250 ) # 250. t_netsync_exclude.at:1: serve/pull with --exclude
    at_setup_line='t_netsync_exclude.at:1'
    at_desc='serve/pull with --exclude'
    $at_quiet $ECHO_N "250: serve/pull with --exclude                    $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "250. t_netsync_exclude.at:1: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_netsync_exclude.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_netsync_exclude.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_netsync_exclude.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:3: rm test_keys"
echo t_netsync_exclude.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:4: cp test.db test2.db"
echo t_netsync_exclude.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:4: cp -r keys/ keys2"
echo t_netsync_exclude.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:4: cp test.db test3.db"
echo t_netsync_exclude.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:4: cp -r keys/ keys3"
echo t_netsync_exclude.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT




cat >testfile <<'_ATEOF'
1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_netsync_exclude.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah"
echo t_netsync_exclude.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


B1=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
2
_ATEOF



$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah"
echo t_netsync_exclude.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


B2=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
3
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_netsync_exclude.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch3 commit --message blah-blah"
echo t_netsync_exclude.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch3 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch3 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch3 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


B3=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
4
_ATEOF



$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch4 commit --message blah-blah"
echo t_netsync_exclude.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch4 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch4 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch4 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


B4=`cat _MTN/revision`

# Serve excluding branch2, branch4
# attempting to pull them should fail
# pulling everything but them should give revs B1, B2, B3; and only
# give branch certs on B1, B3.



# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve 'branch*' --exclude=branch2 --exclude=branch4 &
sleep 4


# it is apparently a permissions error to pull a branch that is not served
# i.e. 'received network error: access to branch 'branch2' denied by server'



$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT 'branch2'"
echo t_netsync_exclude.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT 'branch2'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT 'branch2' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT 'branch2' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:36: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT 'branch4'"
echo t_netsync_exclude.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT 'branch4'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT 'branch4' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT 'branch4' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:37: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B1"
echo t_netsync_exclude.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:38: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:39: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B2"
echo t_netsync_exclude.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:39: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B3"
echo t_netsync_exclude.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:40: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B4"
echo t_netsync_exclude.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B4" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B4 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B4 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:41: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT 'branch*' --exclude=branch2 --exclude=branch4"
echo t_netsync_exclude.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT 'branch*' --exclude=branch2 --exclude=branch4" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT 'branch*' --exclude=branch2 --exclude=branch4 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT 'branch*' --exclude=branch2 --exclude=branch4 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:44: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B1"
echo t_netsync_exclude.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:45: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B2"
echo t_netsync_exclude.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:46: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B3"
echo t_netsync_exclude.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:47: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B4"
echo t_netsync_exclude.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B4" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B4 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B4 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:47: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_netsync_exclude.at:49: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs \$B2 | grep branch2 >/dev/null"
echo t_netsync_exclude.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $B2 | grep branch2 >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $B2 | grep branch2 >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 ls certs $B2 | grep branch2 >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_exclude.at:49: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  251 ) # 251. t_netsync_exclude_default.at:1: --exclude defaults
    at_setup_line='t_netsync_exclude_default.at:1'
    at_desc='--exclude defaults'
    $at_quiet $ECHO_N "251: --exclude defaults                           $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "251. t_netsync_exclude_default.at:1: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_netsync_exclude_default.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_netsync_exclude_default.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_netsync_exclude_default.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:3: rm test_keys"
echo t_netsync_exclude_default.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:4: cp test.db test2.db"
echo t_netsync_exclude_default.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:4: cp -r keys/ keys2"
echo t_netsync_exclude_default.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:4: cp test.db test3.db"
echo t_netsync_exclude_default.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:4: cp -r keys/ keys3"
echo t_netsync_exclude_default.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT




cat >testfile <<'_ATEOF'
1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_netsync_exclude_default.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah"
echo t_netsync_exclude_default.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


B11=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
2
_ATEOF



$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah"
echo t_netsync_exclude_default.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


B21=`cat _MTN/revision`





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve 'branch*' --exclude=branch2 &
sleep 4



$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT 'branch*' --exclude=branch2"
echo t_netsync_exclude_default.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT 'branch*' --exclude=branch2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT 'branch*' --exclude=branch2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT 'branch*' --exclude=branch2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B11"
echo t_netsync_exclude_default.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B11" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B11 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B11 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B21"
echo t_netsync_exclude_default.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B21" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B21 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B21 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:19: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:21: rm -rf _MTN.old"
echo t_netsync_exclude_default.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:21: mv  _MTN _MTN.old"
echo t_netsync_exclude_default.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$B11 ."
echo t_netsync_exclude_default.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$B11 ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$B11 . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$B11 . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:21: test \$PROBE_R_SHA = \$B11"
echo t_netsync_exclude_default.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $B11" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $B11 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $B11 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
12
_ATEOF



$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah"
echo t_netsync_exclude_default.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


B12=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:27: rm -rf _MTN.old"
echo t_netsync_exclude_default.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:27: mv  _MTN _MTN.old"
echo t_netsync_exclude_default.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$B21 ."
echo t_netsync_exclude_default.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$B21 ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$B21 . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$B21 . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:27: test \$PROBE_R_SHA = \$B21"
echo t_netsync_exclude_default.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $B21" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $B21 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $B21 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
21
_ATEOF



$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah"
echo t_netsync_exclude_default.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


B22=`cat _MTN/revision`




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve "{}*" &
sleep 4



$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT "
echo t_netsync_exclude_default.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT " in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT  ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT  ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B11"
echo t_netsync_exclude_default.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B11" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B11 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B11 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B21"
echo t_netsync_exclude_default.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B21" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B21 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B21 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:35: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B12"
echo t_netsync_exclude_default.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B12" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B12 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B12 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B22"
echo t_netsync_exclude_default.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B22" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B22 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B22 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:37: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# passing only an include pattern causes the default exclude to be
# ignored...



# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve branch2 &
sleep 4



$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT branch2"
echo t_netsync_exclude_default.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT branch2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT branch2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT branch2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B11"
echo t_netsync_exclude_default.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B11" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B11 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B11 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B21"
echo t_netsync_exclude_default.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B21" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B21 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B21 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:44: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B12"
echo t_netsync_exclude_default.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B12" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B12 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B12 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:45: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B22"
echo t_netsync_exclude_default.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B22" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B22 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B22 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# but not set by default


$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:49: rm -rf _MTN.old"
echo t_netsync_exclude_default.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:49: mv  _MTN _MTN.old"
echo t_netsync_exclude_default.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:49: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$B12 ."
echo t_netsync_exclude_default.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$B12 ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$B12 . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$B12 . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:49: test \$PROBE_R_SHA = \$B12"
echo t_netsync_exclude_default.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $B12" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $B12 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $B12 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
13
_ATEOF



$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah"
echo t_netsync_exclude_default.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


B13=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:55: rm -rf _MTN.old"
echo t_netsync_exclude_default.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:55: mv  _MTN _MTN.old"
echo t_netsync_exclude_default.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:55: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$B22 ."
echo t_netsync_exclude_default.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$B22 ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$B22 . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$B22 . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:55: test \$PROBE_R_SHA = \$B22"
echo t_netsync_exclude_default.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $B22" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $B22 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $B22 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
23
_ATEOF



$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:58: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah"
echo t_netsync_exclude_default.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


B23=`cat _MTN/revision`




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve "{}*" &
sleep 4



$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:61: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT "
echo t_netsync_exclude_default.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT " in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT  ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT  ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:62: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B11"
echo t_netsync_exclude_default.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B11" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B11 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B11 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:63: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B21"
echo t_netsync_exclude_default.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B21" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B21 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B21 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:64: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B12"
echo t_netsync_exclude_default.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B12" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B12 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B12 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:64: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:65: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B22"
echo t_netsync_exclude_default.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B22" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B22 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B22 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:66: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B13"
echo t_netsync_exclude_default.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B13" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B13 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B13 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:66: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:67: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B23"
echo t_netsync_exclude_default.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B23" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B23 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B23 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:67: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# but --set-default overrides




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve 'branch*' &
sleep 4



$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:71: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --set-default localhost:\$_PORT 'branch*'"
echo t_netsync_exclude_default.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --set-default localhost:$_PORT 'branch*'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --set-default localhost:$_PORT 'branch*' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --set-default localhost:$_PORT 'branch*' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:72: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B11"
echo t_netsync_exclude_default.at:72 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B11" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B11 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B11 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:72: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:73: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B21"
echo t_netsync_exclude_default.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B21" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B21 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B21 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:73: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:74: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B12"
echo t_netsync_exclude_default.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B12" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B12 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B12 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:75: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B22"
echo t_netsync_exclude_default.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B22" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B22 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B22 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:76: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B13"
echo t_netsync_exclude_default.at:76 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B13" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B13 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B13 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:76: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:77: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B23"
echo t_netsync_exclude_default.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B23" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B23 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B23 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:79: rm -rf _MTN.old"
echo t_netsync_exclude_default.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:79: mv  _MTN _MTN.old"
echo t_netsync_exclude_default.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:79: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$B13 ."
echo t_netsync_exclude_default.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$B13 ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$B13 . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$B13 . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:79: test \$PROBE_R_SHA = \$B13"
echo t_netsync_exclude_default.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $B13" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $B13 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $B13 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
14
_ATEOF



$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:82: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah"
echo t_netsync_exclude_default.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


B14=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:85: rm -rf _MTN.old"
echo t_netsync_exclude_default.at:85 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:85: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:85: mv  _MTN _MTN.old"
echo t_netsync_exclude_default.at:85 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:85: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:85: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$B23 ."
echo t_netsync_exclude_default.at:85 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$B23 ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$B23 . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$B23 . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:85: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:85: test \$PROBE_R_SHA = \$B23"
echo t_netsync_exclude_default.at:85 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $B23" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $B23 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $B23 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:85: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
24
_ATEOF



$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:88: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah"
echo t_netsync_exclude_default.at:88 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:88: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


B24=`cat _MTN/revision`




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve "{}*" &
sleep 4



$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:91: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT "
echo t_netsync_exclude_default.at:91 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT " in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT  ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT  ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:91: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:92: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B11"
echo t_netsync_exclude_default.at:92 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B11" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B11 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B11 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:92: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:93: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B21"
echo t_netsync_exclude_default.at:93 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B21" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B21 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B21 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:93: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:94: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B12"
echo t_netsync_exclude_default.at:94 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B12" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B12 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B12 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:94: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:95: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B22"
echo t_netsync_exclude_default.at:95 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B22" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B22 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B22 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:95: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:96: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B13"
echo t_netsync_exclude_default.at:96 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B13" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B13 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B13 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:96: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:97: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B23"
echo t_netsync_exclude_default.at:97 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B23" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B23 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B23 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:97: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:98: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B14"
echo t_netsync_exclude_default.at:98 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B14" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B14 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B14 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:98: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_exclude_default.at:99: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision \$B24"
echo t_netsync_exclude_default.at:99 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B24" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B24 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 automate get_revision $B24 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_exclude_default.at:99: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  252 ) # 252. t_ambiguous_tags.at:1: ls tags with ambiguous tags
    at_setup_line='t_ambiguous_tags.at:1'
    at_desc='ls tags with ambiguous tags'
    $at_quiet $ECHO_N "252: ls tags with ambiguous tags                  $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "252. t_ambiguous_tags.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_ambiguous_tags.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_ambiguous_tags.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambiguous_tags.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambiguous_tags.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_ambiguous_tags.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambiguous_tags.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambiguous_tags.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_ambiguous_tags.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambiguous_tags.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambiguous_tags.at:2: rm test_keys"
echo t_ambiguous_tags.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambiguous_tags.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_ambiguous_tags.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_ambiguous_tags.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambiguous_tags.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_ambiguous_tags.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_ambiguous_tags.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambiguous_tags.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


R1=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
foo foo
_ATEOF



$at_traceoff
echo "$at_srcdir/t_ambiguous_tags.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_ambiguous_tags.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambiguous_tags.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


R2=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_ambiguous_tags.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net tag \$R1 ambig_tag"
echo t_ambiguous_tags.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R1 ambig_tag" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R1 ambig_tag ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R1 ambig_tag ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambiguous_tags.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambiguous_tags.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net tag \$R2 ambig_tag"
echo t_ambiguous_tags.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R2 ambig_tag" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R2 ambig_tag ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R2 ambig_tag ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambiguous_tags.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ambiguous_tags.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls tags"
echo t_ambiguous_tags.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls tags" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls tags ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls tags ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambiguous_tags.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambiguous_tags.at:18: grep \$R1 stdout >/dev/null"
echo t_ambiguous_tags.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $R1 stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $R1 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $R1 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambiguous_tags.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ambiguous_tags.at:19: grep \$R2 stdout >/dev/null"
echo t_ambiguous_tags.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $R2 stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $R2 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $R2 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ambiguous_tags.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  253 ) # 253. t_kill_tag_locally.at:1: db kill_tag_locally
    at_setup_line='t_kill_tag_locally.at:1'
    at_desc='db kill_tag_locally'
    $at_quiet $ECHO_N "253: db kill_tag_locally                          $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "253. t_kill_tag_locally.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_kill_tag_locally.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_kill_tag_locally.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_kill_tag_locally.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:2: rm test_keys"
echo t_kill_tag_locally.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_kill_tag_locally.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_kill_tag_locally.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


R1=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
foo foo
_ATEOF



$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_kill_tag_locally.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


R2=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
bar bar
_ATEOF



$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_kill_tag_locally.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


R3=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
baz baz
_ATEOF



$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_kill_tag_locally.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


R4=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net tag \$R1 ambig_tag"
echo t_kill_tag_locally.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R1 ambig_tag" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R1 ambig_tag ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R1 ambig_tag ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net tag \$R2 ambig_tag"
echo t_kill_tag_locally.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R2 ambig_tag" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R2 ambig_tag ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R2 ambig_tag ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net tag \$R3 test_tag"
echo t_kill_tag_locally.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R3 test_tag" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R3 test_tag ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R3 test_tag ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net tag \$R4 other_tag"
echo t_kill_tag_locally.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R4 other_tag" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R4 other_tag ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R4 other_tag ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls tags"
echo t_kill_tag_locally.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls tags" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls tags ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls tags ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:30: grep \$R1 stdout >/dev/null"
echo t_kill_tag_locally.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $R1 stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $R1 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $R1 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:31: grep ambig_tag stdout >/dev/null"
echo t_kill_tag_locally.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep ambig_tag stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep ambig_tag stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:32: grep \$R2 stdout >/dev/null"
echo t_kill_tag_locally.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $R2 stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $R2 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $R2 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:33: grep ambig_tag stdout >/dev/null"
echo t_kill_tag_locally.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep ambig_tag stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep ambig_tag stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:34: grep \$R3 stdout >/dev/null"
echo t_kill_tag_locally.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $R3 stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $R3 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $R3 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:35: grep test_tag stdout >/dev/null"
echo t_kill_tag_locally.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep test_tag stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep test_tag stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:36: grep \$R4 stdout >/dev/null"
echo t_kill_tag_locally.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $R4 stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $R4 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $R4 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:37: grep other_tag stdout >/dev/null"
echo t_kill_tag_locally.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep other_tag stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep other_tag stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:39: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db kill_tag_locally test_tag"
echo t_kill_tag_locally.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db kill_tag_locally test_tag" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db kill_tag_locally test_tag ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db kill_tag_locally test_tag ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls tags"
echo t_kill_tag_locally.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls tags" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls tags ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls tags ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:42: grep \$R1 stdout >/dev/null"
echo t_kill_tag_locally.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $R1 stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $R1 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $R1 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:43: grep ambig_tag stdout >/dev/null"
echo t_kill_tag_locally.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep ambig_tag stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep ambig_tag stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:44: grep \$R2 stdout >/dev/null"
echo t_kill_tag_locally.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $R2 stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $R2 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $R2 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:45: grep ambig_tag stdout >/dev/null"
echo t_kill_tag_locally.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep ambig_tag stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep ambig_tag stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:46: grep \$R3 stdout >/dev/null"
echo t_kill_tag_locally.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $R3 stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $R3 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $R3 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:46: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:47: grep test_tag stdout >/dev/null"
echo t_kill_tag_locally.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep test_tag stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep test_tag stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:47: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:48: grep \$R4 stdout >/dev/null"
echo t_kill_tag_locally.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $R4 stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $R4 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $R4 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:49: grep other_tag stdout >/dev/null"
echo t_kill_tag_locally.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep other_tag stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep other_tag stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:51: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db kill_tag_locally ambig_tag"
echo t_kill_tag_locally.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db kill_tag_locally ambig_tag" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db kill_tag_locally ambig_tag ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db kill_tag_locally ambig_tag ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:53: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls tags"
echo t_kill_tag_locally.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls tags" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls tags ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls tags ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:54: grep \$R1 stdout >/dev/null"
echo t_kill_tag_locally.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $R1 stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $R1 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $R1 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:54: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:55: grep ambig_tag stdout >/dev/null"
echo t_kill_tag_locally.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep ambig_tag stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep ambig_tag stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:55: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:56: grep \$R2 stdout >/dev/null"
echo t_kill_tag_locally.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $R2 stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $R2 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $R2 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:56: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:57: grep ambig_tag stdout >/dev/null"
echo t_kill_tag_locally.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep ambig_tag stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep ambig_tag stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:57: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:58: grep \$R3 stdout >/dev/null"
echo t_kill_tag_locally.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $R3 stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $R3 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $R3 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:58: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:59: grep test_tag stdout >/dev/null"
echo t_kill_tag_locally.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep test_tag stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep test_tag stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:59: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:60: grep \$R4 stdout >/dev/null"
echo t_kill_tag_locally.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $R4 stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $R4 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $R4 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_kill_tag_locally.at:61: grep other_tag stdout >/dev/null"
echo t_kill_tag_locally.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep other_tag stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep other_tag stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_kill_tag_locally.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  254 ) # 254. t_restricted_diff_unchanged.at:1: diff -rREV1 -rREV2 UNCHANGED-FILE
    at_setup_line='t_restricted_diff_unchanged.at:1'
    at_desc='diff -rREV1 -rREV2 UNCHANGED-FILE'
    $at_quiet $ECHO_N "254: diff -rREV1 -rREV2 UNCHANGED-FILE            $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "254. t_restricted_diff_unchanged.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_restricted_diff_unchanged.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_restricted_diff_unchanged.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_diff_unchanged.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restricted_diff_unchanged.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_restricted_diff_unchanged.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_diff_unchanged.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restricted_diff_unchanged.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_restricted_diff_unchanged.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_diff_unchanged.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restricted_diff_unchanged.at:2: rm test_keys"
echo t_restricted_diff_unchanged.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_diff_unchanged.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_restricted_diff_unchanged.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_restricted_diff_unchanged.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_diff_unchanged.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >otherfile <<'_ATEOF'
foo bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_restricted_diff_unchanged.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add otherfile"
echo t_restricted_diff_unchanged.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_diff_unchanged.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_diff_unchanged.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_restricted_diff_unchanged.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_diff_unchanged.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


R1=`cat _MTN/revision`


cat >otherfile <<'_ATEOF'
stuff stuff
_ATEOF



$at_traceoff
echo "$at_srcdir/t_restricted_diff_unchanged.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_restricted_diff_unchanged.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_diff_unchanged.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


R2=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_restricted_diff_unchanged.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff -r\$R1 -r\$R2 testfile"
echo t_restricted_diff_unchanged.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r$R1 -r$R2 testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r$R1 -r$R2 testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r$R1 -r$R2 testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_diff_unchanged.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restricted_diff_unchanged.at:17: grep 'no changes' stdout"
echo t_restricted_diff_unchanged.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'no changes' stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'no changes' stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_diff_unchanged.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restricted_diff_unchanged.at:18: grep testfile  stdout"
echo t_restricted_diff_unchanged.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile  stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile  stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_diff_unchanged.at:18: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restricted_diff_unchanged.at:19: grep otherfile stdout"
echo t_restricted_diff_unchanged.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep otherfile stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep otherfile stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_diff_unchanged.at:19: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restricted_diff_unchanged.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff -r\$R1 -r\$R2"
echo t_restricted_diff_unchanged.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r$R1 -r$R2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r$R1 -r$R2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r$R1 -r$R2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_diff_unchanged.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restricted_diff_unchanged.at:22: grep testfile  stdout"
echo t_restricted_diff_unchanged.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile  stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile  stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_diff_unchanged.at:22: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restricted_diff_unchanged.at:23: grep otherfile stdout"
echo t_restricted_diff_unchanged.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep otherfile stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep otherfile stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_diff_unchanged.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restricted_diff_unchanged.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff -r\$R1 -r\$R2 badfile"
echo t_restricted_diff_unchanged.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r$R1 -r$R2 badfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r$R1 -r$R2 badfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r$R1 -r$R2 badfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_diff_unchanged.at:25: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  255 ) # 255. t_selector_globbing.at:1: b: and t: selector globbing
    at_setup_line='t_selector_globbing.at:1'
    at_desc='b: and t: selector globbing'
    $at_quiet $ECHO_N "255: b: and t: selector globbing                  $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "255. t_selector_globbing.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_selector_globbing.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_selector_globbing.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_selector_globbing.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:2: rm test_keys"
echo t_selector_globbing.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_selector_globbing.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_selector_globbing.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


R1=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
stuff stuff
_ATEOF



$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah"
echo t_selector_globbing.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


R2=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
thing thing
_ATEOF



$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch commit --message blah-blah"
echo t_selector_globbing.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


R3=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net tag \$R1 foo"
echo t_selector_globbing.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R1 foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R1 foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R1 foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net tag \$R2 bar"
echo t_selector_globbing.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R2 bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R2 bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R2 bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net tag \$R3 foobarbaz"
echo t_selector_globbing.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R3 foobarbaz" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R3 foobarbaz ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $R3 foobarbaz ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select b:testbranch"
echo t_selector_globbing.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:23: mv stdout output1"
echo t_selector_globbing.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:23:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selector_globbing.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:23: echo \$R1"
echo t_selector_globbing.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $R1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $R1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $R1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:23: mv stdout output2"
echo t_selector_globbing.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:23:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selector_globbing.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:23: cmp output1 output2"
echo t_selector_globbing.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select b:otherbranch"
echo t_selector_globbing.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:otherbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:otherbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:otherbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:24: mv stdout output1"
echo t_selector_globbing.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:24:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selector_globbing.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:24: echo \$R2"
echo t_selector_globbing.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $R2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $R2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $R2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:24: mv stdout output2"
echo t_selector_globbing.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:24:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selector_globbing.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:24: cmp output1 output2"
echo t_selector_globbing.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select b:branch"
echo t_selector_globbing.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:branch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:branch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:branch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:25: mv stdout output1"
echo t_selector_globbing.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:25:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selector_globbing.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:25: echo \$R3"
echo t_selector_globbing.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $R3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $R3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $R3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:25: mv stdout output2"
echo t_selector_globbing.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:25:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selector_globbing.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:25: cmp output1 output2"
echo t_selector_globbing.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select b:test*"
echo t_selector_globbing.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:test*" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:test* ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:test* ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:26: mv stdout output1"
echo t_selector_globbing.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:26:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selector_globbing.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:26: echo \$R1"
echo t_selector_globbing.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $R1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $R1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $R1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:26: mv stdout output2"
echo t_selector_globbing.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:26:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selector_globbing.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:26: cmp output1 output2"
echo t_selector_globbing.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select b:*branch*"
echo t_selector_globbing.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:*branch*" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:*branch* ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:*branch* ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:27: mv stdout output1"
echo t_selector_globbing.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:27:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selector_globbing.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:27: (echo \$R1; echo \$R2; echo \$R3) | sort"
echo t_selector_globbing.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo $R1; echo $R2; echo $R3) | sort" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo $R1; echo $R2; echo $R3) | sort ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo $R1; echo $R2; echo $R3) | sort ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:27: mv stdout output2"
echo t_selector_globbing.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:27:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selector_globbing.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:27: cmp output1 output2"
echo t_selector_globbing.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select t:foo"
echo t_selector_globbing.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select t:foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select t:foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select t:foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:29: mv stdout output1"
echo t_selector_globbing.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:29:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selector_globbing.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:29: echo \$R1"
echo t_selector_globbing.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $R1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $R1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $R1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:29: mv stdout output2"
echo t_selector_globbing.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:29:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selector_globbing.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:29: cmp output1 output2"
echo t_selector_globbing.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select t:bar"
echo t_selector_globbing.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select t:bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select t:bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select t:bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:30: mv stdout output1"
echo t_selector_globbing.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:30:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selector_globbing.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:30: echo \$R2"
echo t_selector_globbing.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $R2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $R2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $R2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:30: mv stdout output2"
echo t_selector_globbing.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:30:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selector_globbing.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:30: cmp output1 output2"
echo t_selector_globbing.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select t:foobarbaz"
echo t_selector_globbing.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select t:foobarbaz" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select t:foobarbaz ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select t:foobarbaz ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:31: mv stdout output1"
echo t_selector_globbing.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:31:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selector_globbing.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:31: echo \$R3"
echo t_selector_globbing.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $R3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $R3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $R3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:31: mv stdout output2"
echo t_selector_globbing.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:31:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selector_globbing.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:31: cmp output1 output2"
echo t_selector_globbing.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select t:*bar"
echo t_selector_globbing.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select t:*bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select t:*bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select t:*bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:32: mv stdout output1"
echo t_selector_globbing.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:32:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selector_globbing.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:32: echo \$R2"
echo t_selector_globbing.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $R2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $R2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $R2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:32: mv stdout output2"
echo t_selector_globbing.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:32:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selector_globbing.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:32: cmp output1 output2"
echo t_selector_globbing.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select t:*bar*"
echo t_selector_globbing.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select t:*bar*" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select t:*bar* ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select t:*bar* ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:33: mv stdout output1"
echo t_selector_globbing.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:33:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selector_globbing.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:33: (echo \$R2; echo \$R3) | sort"
echo t_selector_globbing.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo $R2; echo $R3) | sort" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo $R2; echo $R3) | sort ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo $R2; echo $R3) | sort ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:33: mv stdout output2"
echo t_selector_globbing.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:33:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selector_globbing.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selector_globbing.at:33: cmp output1 output2"
echo t_selector_globbing.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selector_globbing.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  256 ) # 256. t_diff_external.at:1: diff --external
    at_setup_line='t_diff_external.at:1'
    at_desc='diff --external'
    $at_quiet $ECHO_N "256: diff --external                              $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "256. t_diff_external.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_diff_external.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_diff_external.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_diff_external.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_diff_external.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:2: rm test_keys"
echo t_diff_external.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
foo bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_diff_external.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_diff_external.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_diff_external.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_diff_external.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


OLD_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
$at_traceoff
echo "$at_srcdir/t_diff_external.at:8: cp testfile old_testfile"
echo t_diff_external.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp testfile old_testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp testfile old_testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
stuff stuff
_ATEOF


NEW_SHA=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`

cat >testhook.lua <<'_ATEOF'
function external_diff(file_path, data_old, data_new, is_binary, diff_args, rev_old, rev_new)
  io.write("file_path: " .. file_path .. "\n")
  f = io.open("old_version", "w")
  f:write(data_old)
  io.close(f)
  f = io.open("new_version", "w")
  f:write(data_new)
  io.close(f)
  if diff_args == nil then
    io.write("diff_args is NIL\n")
  else
    io.write("diff_args: " .. diff_args .. "\n")
  end
  io.write("rev_old: " .. rev_old .. "\n")
  io.write("rev_new: " .. rev_new .. "\n")
end
_ATEOF


$at_traceoff
echo "$at_srcdir/t_diff_external.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=testhook.lua diff --external"
echo t_diff_external.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=testhook.lua diff --external" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=testhook.lua diff --external ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=testhook.lua diff --external ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:33:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_diff_external.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:34:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o old_version
fi
"
echo t_diff_external.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o old_version
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o old_version
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:35:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o new_version
fi
"
echo t_diff_external.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o new_version
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o new_version
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:36: grep 'file_path: testfile' stdout >/dev/null"
echo t_diff_external.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'file_path: testfile' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'file_path: testfile' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:37: cmp old_version old_testfile"
echo t_diff_external.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp old_version old_testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp old_version old_testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:38: cmp new_version testfile"
echo t_diff_external.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp new_version testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp new_version testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:39: grep 'diff_args is NIL' stdout >/dev/null"
echo t_diff_external.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'diff_args is NIL' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'diff_args is NIL' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:40: grep \"rev_old: \$OLD_SHA\" stdout >/dev/null"
echo t_diff_external.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"rev_old: $OLD_SHA\" stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "rev_old: $OLD_SHA" stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "rev_old: $OLD_SHA" stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:41: grep \"rev_new: \$NEW_SHA\" stdout >/dev/null"
echo t_diff_external.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"rev_new: $NEW_SHA\" stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "rev_new: $NEW_SHA" stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "rev_new: $NEW_SHA" stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_diff_external.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=testhook.lua diff --external --diff-args=\"-foobar\""
echo t_diff_external.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=testhook.lua diff --external --diff-args=\"-foobar\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=testhook.lua diff --external --diff-args="-foobar" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=testhook.lua diff --external --diff-args="-foobar" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:44:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_diff_external.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:45:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o old_version
fi
"
echo t_diff_external.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o old_version
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o old_version
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:46:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o new_version
fi
"
echo t_diff_external.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o new_version
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o new_version
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:47: grep 'file_path: testfile' stdout >/dev/null"
echo t_diff_external.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'file_path: testfile' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'file_path: testfile' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:48: cmp old_version old_testfile"
echo t_diff_external.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp old_version old_testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp old_version old_testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:49: cmp new_version testfile"
echo t_diff_external.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp new_version testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp new_version testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:50: grep 'diff_args: -foobar' stdout >/dev/null"
echo t_diff_external.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'diff_args: -foobar' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'diff_args: -foobar' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:51: grep \"rev_old: \$OLD_SHA\" stdout >/dev/null"
echo t_diff_external.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"rev_old: $OLD_SHA\" stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "rev_old: $OLD_SHA" stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "rev_old: $OLD_SHA" stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:52: grep \"rev_new: \$NEW_SHA\" stdout >/dev/null"
echo t_diff_external.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"rev_new: $NEW_SHA\" stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "rev_new: $NEW_SHA" stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "rev_new: $NEW_SHA" stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_diff_external.at:54: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=testhook.lua diff --external --diff-args=\"\""
echo t_diff_external.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=testhook.lua diff --external --diff-args=\"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=testhook.lua diff --external --diff-args="" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=testhook.lua diff --external --diff-args="" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:55:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_diff_external.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:56:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o old_version
fi
"
echo t_diff_external.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o old_version
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o old_version
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:57:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o new_version
fi
"
echo t_diff_external.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o new_version
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o new_version
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:58: grep 'file_path: testfile' stdout >/dev/null"
echo t_diff_external.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'file_path: testfile' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'file_path: testfile' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:59: cmp old_version old_testfile"
echo t_diff_external.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp old_version old_testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp old_version old_testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:60: cmp new_version testfile"
echo t_diff_external.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp new_version testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp new_version testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:61: egrep '^diff_args: \$' stdout >/dev/null"
echo t_diff_external.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "egrep '^diff_args: $' stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; egrep '^diff_args: $' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; egrep '^diff_args: $' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:62: grep \"rev_old: \$OLD_SHA\" stdout >/dev/null"
echo t_diff_external.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"rev_old: $OLD_SHA\" stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "rev_old: $OLD_SHA" stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "rev_old: $OLD_SHA" stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_external.at:63: grep \"rev_new: \$NEW_SHA\" stdout >/dev/null"
echo t_diff_external.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"rev_new: $NEW_SHA\" stdout >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "rev_new: $NEW_SHA" stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "rev_new: $NEW_SHA" stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_external.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Make sure that --diff-args without --external is an error
$at_traceoff
echo "$at_srcdir/t_diff_external.at:66: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff --diff-args=\"foo\""
echo t_diff_external.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --diff-args=\"foo\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --diff-args="foo" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --diff-args="foo" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_diff_external.at:66: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  257 ) # 257. t_migrate_broken_schema.at:1: db migrate on bad schema
    at_setup_line='t_migrate_broken_schema.at:1'
    at_desc='db migrate on bad schema'
    $at_quiet $ECHO_N "257: db migrate on bad schema                     $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "257. t_migrate_broken_schema.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_migrate_broken_schema.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_migrate_broken_schema.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_broken_schema.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_broken_schema.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_migrate_broken_schema.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_broken_schema.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_broken_schema.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_migrate_broken_schema.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_broken_schema.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_broken_schema.at:2: rm test_keys"
echo t_migrate_broken_schema.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_broken_schema.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_broken_schema.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db migrate"
echo t_migrate_broken_schema.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_broken_schema.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_migrate_broken_schema.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db execute 'CREATE TABLE foo (bar primary key, baz not null)'"
echo t_migrate_broken_schema.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute 'CREATE TABLE foo (bar primary key, baz not null)'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute 'CREATE TABLE foo (bar primary key, baz not null)' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute 'CREATE TABLE foo (bar primary key, baz not null)' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_broken_schema.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_migrate_broken_schema.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db migrate"
echo t_migrate_broken_schema.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_migrate_broken_schema.at:8: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  258 ) # 258. t_ls_branches.at:3: list branches
    at_setup_line='t_ls_branches.at:3'
    at_desc='list branches'
    $at_quiet $ECHO_N "258: list branches                                $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "258. t_ls_branches.at:3: testing ..."
      $at_traceon


# Setup the environment


# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_ls_branches.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_ls_branches.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_branches.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_ls_branches.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_branches.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_ls_branches.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_branches.at:6: rm test_keys"
echo t_ls_branches.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# ls branches on empty db should return successful and empty
$at_traceoff
echo "$at_srcdir/t_ls_branches.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls branches"
echo t_ls_branches.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_branches.at:10: cmp /dev/null stdout"
echo t_ls_branches.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp /dev/null stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp /dev/null stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_branches.at:11: cmp /dev/null stderr"
echo t_ls_branches.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp /dev/null stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp /dev/null stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Let's create some branches, so we have stuff to list
cat >foo.testbranch <<'_ATEOF'
this is the testbranch version
_ATEOF

cat >foo.otherbranch <<'_ATEOF'
this version goes in otherbranch
_ATEOF


$at_traceoff
echo "$at_srcdir/t_ls_branches.at:19: cp foo.testbranch foo"
echo t_ls_branches.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foo.testbranch foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foo.testbranch foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_branches.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_ls_branches.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_branches.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_ls_branches.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_ls_branches.at:23: cp -f foo.otherbranch foo"
echo t_ls_branches.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f foo.otherbranch foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f foo.otherbranch foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_branches.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah"
echo t_ls_branches.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# ls branches should list 2 branches now
$at_traceoff
echo "$at_srcdir/t_ls_branches.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls branches"
echo t_ls_branches.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_branches.at:28:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_ls_branches.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >branches <<'_ATEOF'
otherbranch
testbranch
_ATEOF

$at_traceoff
echo "$at_srcdir/t_ls_branches.at:32: cmp branches stdout"
echo t_ls_branches.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp branches stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp branches stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_branches.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls branches \"otherbr*\""
echo t_ls_branches.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches \"otherbr*\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches "otherbr*" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches "otherbr*" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_branches.at:35:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_ls_branches.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >branches2 <<'_ATEOF'
otherbranch
_ATEOF

$at_traceoff
echo "$at_srcdir/t_ls_branches.at:38: cmp branches2 stdout"
echo t_ls_branches.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp branches2 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp branches2 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_branches.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls branches --exclude \"testbr*\""
echo t_ls_branches.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches --exclude \"testbr*\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches --exclude "testbr*" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches --exclude "testbr*" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_branches.at:41:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_ls_branches.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_branches.at:42: cmp branches2 stdout"
echo t_ls_branches.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp branches2 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp branches2 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Create an ignore_branch hook to pass in
cat >ignore_branch.lua <<'_ATEOF'

function ignore_branch(branchname)
    if(branchname == "branch.to.be.ignored") then return true end
    return false
end
_ATEOF


# if we make a change in the branch.to.be.ignored it should not turn up in the list
$at_traceoff
echo "$at_srcdir/t_ls_branches.at:53: cp foo.testbranch in_ignored"
echo t_ls_branches.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foo.testbranch in_ignored ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foo.testbranch in_ignored ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_branches.at:54: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=ignore_branch.lua add in_ignored"
echo t_ls_branches.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=ignore_branch.lua add in_ignored" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=ignore_branch.lua add in_ignored ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=ignore_branch.lua add in_ignored ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_branches.at:55: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.to.be.ignored commit --message blah-blah"
echo t_ls_branches.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.to.be.ignored commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.to.be.ignored commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.to.be.ignored commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_branches.at:56: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=ignore_branch.lua ls branches"
echo t_ls_branches.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=ignore_branch.lua ls branches" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=ignore_branch.lua ls branches ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=ignore_branch.lua ls branches ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_branches.at:57:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_ls_branches.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_branches.at:58: cmp branches stdout"
echo t_ls_branches.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp branches stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp branches stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_branches.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  259 ) # 259. t_database_check_normalized.at:3: database check for normalization
    at_setup_line='t_database_check_normalized.at:3'
    at_desc='database check for normalization'
    $at_quiet $ECHO_N "259: database check for normalization             $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "259. t_database_check_normalized.at:3: testing ..."
      $at_traceon


# the included database is valid except for all paths being "./" prefixed,
# hence the database doesn't have correctly normalised revisions.

# for future reference, it was created with a modified monotone binary,
# paths.cc was modified. Also, the 'add_dir "."' was added to _MTN/work by hand.

#old_revision []
#
#add_dir ""
#
#add_dir "."
#
#add_file "./file"




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_database_check_normalized.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_database_check_normalized.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_normalized.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check_normalized.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_database_check_normalized.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_normalized.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check_normalized.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_database_check_normalized.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_normalized.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check_normalized.at:20: rm test_keys"
echo t_database_check_normalized.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_normalized.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_database_check_normalized.at:21: echo \$UNB64_COMMAND"
echo t_database_check_normalized.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_normalized.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test -n "`command -v gunzip`" 2>/dev/null; then
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  UNGZ_COMMAND="gunzip -c"
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_database_check_normalized.at:21: echo \$UNGZ_COMMAND"
echo t_database_check_normalized.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNGZ_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_normalized.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >bad.db.gz.b64 <<'_ATEOF'

H4sIAG1e1UMCA+2dS2zjSHqASdFtd2un57GzPdre3llzu2em25F7xIce5DQM
DPW03tbDejgwlOJLovWgRFLPPBZ2L/aQaw572VOC5JJbbkGQUxAgCTA5pIME
uQYBggBBsgGSIMjmEJKS1VZbdsvTM8l0uz7QNKtYxar6q0pk1V8/WcilFEPC
ZVVrAwOnkTUERZHPcRxBEAeyyLfNP/SMG0VW5Ib5t479vXXoxn6B/Sf2b9g/
Y/849YBAIF8zH2+aux/eM3d3XVZHfs/cfestc+dcv211ZOwPEHODQCDfeFIo
dpiVSZESKZmlvBLL+IHA+GVRDvC0X2C9vCDKNMVLkkD6dr16nJvhIQapiVsI
cclGK93xRiw/p9Pu/88Qc4NAIK8/29ghuurvA2rd/82HfggEcg1xwv4PgVxb
4P0fAoH3fwgEAu//EAgE3v8hEMj1uP+vo9ZiHvS30S8cf4ndwL64TuU/3kQ3
XC4XevKhAfiWJCstSbd3jlA+whUjeJELpiK47eW89ch5SxHxrqa0gTbGm9J4
G8fxx49x3dDUTh1vAL2Bq7IdGhfUjiF1DDOWCAyAd1QD7/RbLRyfRhHUdleT
dF0St3GpI6iiJM6jWNcA9lWct7a2HOuuHReKKB1RGum9lmJINdA3VNtdszNW
I+1/2PFvYBuuBw/Qp6F5YWqi1DKAfuZw7VzBZifM4t2yy3ea1W38NLOXl48H
urQYyYxyZGZQx4eK0ZgK71Pzwqp2Nj3Tx5SNdbgQ2YyriYos44ZqpWEm3RcM
XOhrmpkaLmtqG7cSdN7qd5ReX3qkmAK0PLZMWfnW1l3xB5fJapb2VGIzx43j
yI0N1+YmelK15dYGHUWWdEOfH6wvyGzufUGDWCozYFa90ZDMujY0RdJxpWNW
8emVlrWRVZvJ82tskevrrsjmRcWfZ7tGzg837P6P/BRBfor+heOW448c/4L9
8TegW54QGxsutxv9sWuhRmYV9oLz5tLaed6qlzXqL1NH59v5uaYumTtJm8eZ
NfoXsnRBw3/Ftr9zc92Vc7+s8uft/wWPW8eeW9M+8NiWuCYNFF0xszA/eGtB
ynPvS/tAYZcjHxnSyLCkexpl61Va++lFrNbuvKy1zzNYI+eHt49T39pweTzo
SWyhkDXQEUxRaONzHm8vLfT8tF34LrBrZ7EqF5vFPAd21QsNpbXsV/bCCLPa
nia0jdvxrSrn3lp37XteJoF5bp9LYu71jr3+z/EfiLlBINeDk5vo2uHTiCTw
pEhTIs/7A6Kf8gOaAITfL5EU4IHo8/KyTDM+PrC4iI7KFHNaOB4MRVmfL7QX
CfKyL9Ur7ydzxEEzGC9FhnGedPNSW+l5JDfviUhGIBCOFTw9Z55qlZI9KtLb
KySzbDEkJkZjVeBymVhJK/ODbrMQ1EY+b35YaiaH1QzpS+VGvVHQGLJH3aTh
7h7kGtxRVPE7S9negKYD3AHIBFmC6cUrWS3BlkbjoJqJ1QOxfZmbHISZCXO0
d5DNSZW0FieVwpEG8qUBx1TyOk9YhdlxwvV/EMibhbX+b9WfNvQ27P8QyJuE
G8VuH676AzC9//8VYm4QCOS15/Ha7ave/x1fII4voOQgr/u4njDH9T++I9AM
YPwM62cJAvhYyuuVzd5AkCwJAl7Tx88wkixI3oVxPVPey+X8oXQwaI7rx4o/
F9s3WuF6Kl7IFdtCOxPqValOw80VdvOJsl+YSEXP+MDNTMgs4+yLOU+yGAhl
uF73IAESYjEYiUv7Pc5IVkmjr8TTOUJJVJlkOAe48jhaahkdoSvyBUINCNF6
eRib9CI9te/sB3SCDQuVFCGGOqNCJzWcsMHhsJGNjrqJo+bAPSTqnnCh3QCN
ViOvkplAr97V+CzpA/nkJFzODEveg2Q26Bwn+2MqwBrF6kQ4EjItnz7ak4t8
exhoVo5KB4HGuB6aTgDA538I5E0b/6/6E2jf/28gP0eQn6O/i/61498xz5st
nGPq9obr3j305MlUA6TqhqTps3/vLmp7pp4XK7iW6hAt/eE05gVqrtU0XWcv
s/X47XUXd+9CPc80nzVydvDeyYfvbLgePkSfjs+UcabnW3C8v6S8L1WbvrTU
S9WkF2lKZ3meKUoXsnCxmvQVNaXsu+uu9MPLxTnXky44v3Ocec/WS58UFhWI
01AvOO8sVx6eyskUsOlXW9a0LlMGzjJ0pm5eQbxbcP0vBHJ9get/IZDry1T/
9/uIuUEgkG8uBRQ7XFmvt+oEAJz/g0DeKL7E+p9fIOYGgUCuDxjqeIee3v//
GzE3CARybbiBvYPS6NT+9xGCPkLrjrcdh46/xf4cyuY8O9++zLruBd3OGUOr
qccHxx+9v+F68gQ9rtl6o440Mk7DdlRRqnX6bV7SLvB2LeiRLghk65Ms91lt
0hltmdppjc3d1LhxbJk2Gg1Fx+3sbOPSwFY0pr+z7gJPLirlBSnXyAtOfHd0
Z8O140GP37Pjn7dHq9mWbOf8vzcrbzwTjlTwi6Lh2cz5c/ijqXHcsfrB1BL6
Y7uA3T7fUoSaKRH9zOG9BbmeOWHL0lZtzlVsUzXizD75VOupSW2gdJROHZcV
qSXquC51gQYMScT5MX7/s/uXKo6t+lFEszoUM7aGCw1VlzpWxL5uVYZ5+iIz
yXyBm2UXt9Jr65bps+sy0+czhauRZxzfh+N/COSaj/8d/4CYGwTyRnJyF71x
SD7lvAEf4fNJQoAEopeRfaIMZCbg4wlZAj42wPsEnpckv9fgNXXYAcPP6+bt
vfWpoLbT8ZiY5ohYqNCLFeI8Hc5Fglxun+O8sRQXDgUbw2Swngt5dnMZeaIw
asot5wkjSg5y3oaPbVJcuKuQkXTf2TC8IKOWjLI4KqZzlSjf0kuVVKCgJBK+
ST9h7AlFprDbFDmlFE8Fg9RelAqSddLb91X63DgYVzxsPhKLBZ1eKQ0qwwav
ZtNiqFHyE9mmlMoXdiuxyqgZCA1H0Wqoybqj+3ye54VwtxdN7/OM1owVg+WM
mCArw3gwktvZgfd/COSNu/+v+lOHTvv/PyHmBoFA3lQ+wEj0/IMN/P4PBHKN
get/IRDY/yEQyPXDev5fQ1sI2kJ/B/sJ9idQIl8fvu+uqqKlzjg+fPordzdc
W1voT3518V3IgqQ9f0X11PWD5W9Cts99tUrti+yCz5igzl8yfclbkDugfZGt
sNoFZuYsQ2MrLy9qxweg1ZeW2wXPIvItlbe16F2gaC95bfMZcdvZ0pV6Bxh9
TTr/Vt98gfNYrzXGn4cxhXb/l62SfK6In5kZO7w/Nzu2fLdxy/jYzvA2PsvP
9vPolkXyk++tu7JbL313s12PZ17dbLs3n9y7QmRq0Y3fQKbrf01ouAYYArlO
UJj1/L+GpRDs97Bn2Ng8gEAgXwpL8SbKlCgA2stTskDLAcD6Wb8gMEAQhYCf
8bMBARAyL0prVmBAyjzNiKSPBSILgCAHRIGiaUCSImBEgQWSQJA+CWBWYNJH
MyQjsgRNAcI8llk6IDMioMUAkCl/AIiSj6Z40WEHlgTeB0QCSJTEe0WelyWB
lURB9AkkQUpelgYsJQYIW/+35kghjj/EfsuRwj6BtQj5spwgNzcPXeRJExUa
oFOXWmp91XVo1XZ07DyvnpK7KhPgmL7UC1JqtusddNJ0JieaaZEn5M27hz+y
EjOfdRuqtmpKpVjL4Om8KhWCIaHN0nw7Sh+UR3o8xDFiLDHmabFfrYjcAUU2
QHnYr5qJESfv37xzGLMSE82B0KpJpY+4YUYhhukCMU6TuXH6SCXTE3WSHu7s
LClszBCOzMQ8x79ulswWI6+BjtBYNbmDNjtYctksSFXJXVGPN9tCKT3Ip0t8
PSSKYntiJvbpdPy/j6D72H2shv0MtuKvgKeJ709H7NnFt0TZQ65F1/3l74j6
/xmxL75oCo7Np2PzDy8bXi/W2BnDD9v94MkPrhCZWnR/xG+uu8gtdLxoPTEN
W1PERZ9PlhtNzEMvmEtMx/6PFHFr/vz/zBwBwOd/COSVnv9XvVmvXSUwdpXA
jiut/5/2fxXBnmL/iqnYn8FahEC+Nt5f23Q9Hx3Zo5618NrdH80GMVcenFCs
sVc3RxPYJ2t3Yvbg5NJBh+Pdtbuu2bDCHi7A9X8QyDUGrv+BQGD/h0Ag14/b
6H8h68gzBP0fxwT7TexPkWfo6/7+n2P9I/sTH0937Nl3ka8NgKbP/m0vzLfP
PJ2nM9SP5keias2pL/lIuy6oXXtaGXS7LUUAhqJ2pp+mN680j7587tyMbgay
5pnnAZfPlc8C2ifnQWfT1tOcbdtJbM1Pbj3++LJvhMwKWiNnB4+tX/1fwzdc
3BZ6fG/pBLN1/Zqdg8UzDy+daH4ea9mE83TK3T69dXL7h9OvlFTtapoOSmtS
VxUa+oLj0UKVLZy6VEMyF+UV9CTTq190teXakmnhPp1W1i07Y8s++jL/bAno
mFWIN6TR49MPv9hf4mDvX/ZVkoVi18gF5xb7YPWo1ILzl+D4HwKBz/8QCOR6
MsoX2tFwqKgnsmw1dZQl695sVIulK7QYrnb7EzkC2ulCS22RYvSAde4N2m6a
1PRKpal4w/3hgKeFeIHYLxphJiRF4wVQVNL+Il0QlFzPX0ySLa6RIZkSKxjR
LOf3qV2qn0/wvLM/INtsU2Z3o9Vmb8K59aYsx7J9Ol5K7zhRWC8QyP8Fw3Cz
NI6Eo9V0yNDcfPioF0oUu+yw0EvGmkY3SAYmA65U7wu8XynTRCSRDfkP8nu7
njLvieWaYNxucc4unRQGu4w7wvjimW6bHIa5XKhHGEZDq49SSTYngbQaL8Rb
g3pe6tFRVku4D8aTfKNw5KlwhbLhru55u7ru5HjvsB03Gr7ukEmI0cGusJ8D
REkNx5kdpwPWFgTy1XK6iOD82uFeI9Q2/O4ukI7KlSg7IYHXEzbS1RQV4ujx
YDfb7YYrbHoQMli1PixEhm5vORokWmUOdJKEt09l/R6250k4u0eT2H6MEAPS
qFLaq/r3W9FgQW1X9X3tINs3ugTXDkulYWVPDSeogWiEApODDk3tFr3qXjDk
6R/F6ABbOYg7lXQvpLV3yUakToVaXFHJ5cvMgPOKBLHjxGBdQiBX7v+Veqve
SMRD0WG5LVJug951J3sC0exwQiWVCMerTeDv++Ol3UGMzwbbpFNMHeXq8cke
3xzVk0P/kOvs8Wqine4we3tttR9vkvFopJw3+DRDGR4fT+ZLPaFnlIcTjyQq
uYgYzhNklMk5W6HRLkkHFDEeHu6NZe9EydOxyHBcpiI7TjgtAYF8vVjz/xjC
IY6/Q39m/rs6JxXs5uHhXcsSa1VzxlUXJ7/imsjX/nHm5DOHKdo7lt3Zqsaf
q4r2pStFl5unvUYjxZOPUKtdWnZ0qxrDriq8M+tnr2Ju942cZpu+//9vEHOD
QN4QTh6umZ1/0+r8qxrkr/xh3YXF+yubLH9Tn7H/FwEUS+AAzAAA
_ATEOF


$at_traceoff
echo "$at_srcdir/t_database_check_normalized.at:116: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o bad.db.gz bad.db.gz.b64
else
  \$UNB64_COMMAND <bad.db.gz.b64 >bad.db.gz
fi
"
echo t_database_check_normalized.at:116 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o bad.db.gz bad.db.gz.b64
else
  $UNB64_COMMAND <bad.db.gz.b64 >bad.db.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o bad.db.gz bad.db.gz.b64
else
  $UNB64_COMMAND <bad.db.gz.b64 >bad.db.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_normalized.at:116: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_check_normalized.at:116: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"bad.db.gz\" != \"bad.db.gz\"; then
    mv bad.db.gz bad.db.gz
  fi
  gunzip bad.db.gz
else
  \$UNGZ_COMMAND <bad.db.gz >bad.db
fi
"
echo t_database_check_normalized.at:116 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "bad.db.gz" != "bad.db.gz"; then
    mv bad.db.gz bad.db.gz
  fi
  gunzip bad.db.gz
else
  $UNGZ_COMMAND <bad.db.gz >bad.db
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "bad.db.gz" != "bad.db.gz"; then
    mv bad.db.gz bad.db.gz
  fi
  gunzip bad.db.gz
else
  $UNGZ_COMMAND <bad.db.gz >bad.db
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_normalized.at:116: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_database_check_normalized.at:118: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db migrate -d bad.db"
echo t_database_check_normalized.at:118 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate -d bad.db" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate -d bad.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate -d bad.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_normalized.at:118: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_database_check_normalized.at:120: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db check -d bad.db"
echo t_database_check_normalized.at:120 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check -d bad.db" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check -d bad.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check -d bad.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_database_check_normalized.at:120: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_database_check_normalized.at:122: grep 'revisions not parseable' stderr"
echo t_database_check_normalized.at:122 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'revisions not parseable' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'revisions not parseable' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_check_normalized.at:122: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  260 ) # 260. t_annotate_no_rev.at:1: annotate with no revs
    at_setup_line='t_annotate_no_rev.at:1'
    at_desc='annotate with no revs'
    $at_quiet $ECHO_N "260: annotate with no revs                        $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "260. t_annotate_no_rev.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_annotate_no_rev.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_annotate_no_rev.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_no_rev.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_no_rev.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_annotate_no_rev.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_no_rev.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_no_rev.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_annotate_no_rev.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_no_rev.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_no_rev.at:2: rm test_keys"
echo t_annotate_no_rev.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_no_rev.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_annotate_no_rev.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_annotate_no_rev.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_no_rev.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_annotate_no_rev.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net annotate testfile"
echo t_annotate_no_rev.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_annotate_no_rev.at:7: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  261 ) # 261. t_merge_add_rename_add.at:3: merging <add a, rename a b> with <add b>
    at_setup_line='t_merge_add_rename_add.at:3'
    at_desc='merging <add a, rename a b> with <add b>'
    $at_quiet $ECHO_N "261: merging <add a, rename a b> with <add b>     $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "261. t_merge_add_rename_add.at:3: testing ..."
      $at_traceon


# This test is a bug report.




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge_add_rename_add.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_merge_add_rename_add.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_rename_add.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_rename_add.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_merge_add_rename_add.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_rename_add.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_rename_add.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_merge_add_rename_add.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_rename_add.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_rename_add.at:8: rm test_keys"
echo t_merge_add_rename_add.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_rename_add.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



#              A
#            /   \
#           B     C
#            \   /
#              D
#
# A is the common ancestor, containing 'add foo'.  B contains 'rename foo
# bar'.  C contains 'add bar'.  D is the final state after a merge--we
# currently don't have a definition for what this final state is.

cat >foo <<'_ATEOF'
extra blah blah foo
_ATEOF

cat >bar <<'_ATEOF'
extra blah blah bar
_ATEOF


# produce state A
$at_traceoff
echo "$at_srcdir/t_merge_add_rename_add.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_merge_add_rename_add.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_rename_add.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_rename_add.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state A - add foo'"
echo t_merge_add_rename_add.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state A - add foo'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state A - add foo' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state A - add foo' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_rename_add.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

A_REVISION_SHA=`cat _MTN/revision`

# produce state B
$at_traceoff
echo "$at_srcdir/t_merge_add_rename_add.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename foo bar"
echo t_merge_add_rename_add.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_rename_add.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_rename_add.at:32: mv foo bar"
echo t_merge_add_rename_add.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv foo bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv foo bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_rename_add.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_rename_add.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state B - rename foo bar'"
echo t_merge_add_rename_add.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state B - rename foo bar'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state B - rename foo bar' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state B - rename foo bar' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_rename_add.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

B_REVISION_SHA=`cat _MTN/revision`

# produce state C

$at_traceoff
echo "$at_srcdir/t_merge_add_rename_add.at:37: rm -rf _MTN.old"
echo t_merge_add_rename_add.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_rename_add.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_rename_add.at:37: mv  _MTN _MTN.old"
echo t_merge_add_rename_add.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_rename_add.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_rename_add.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$A_REVISION_SHA ."
echo t_merge_add_rename_add.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A_REVISION_SHA ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A_REVISION_SHA . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A_REVISION_SHA . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_rename_add.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_merge_add_rename_add.at:37: test \$PROBE_R_SHA = \$A_REVISION_SHA"
echo t_merge_add_rename_add.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $A_REVISION_SHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $A_REVISION_SHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $A_REVISION_SHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_rename_add.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_add_rename_add.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add bar"
echo t_merge_add_rename_add.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_rename_add.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_add_rename_add.at:39: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state C - add bar'"
echo t_merge_add_rename_add.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state C - add bar'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state C - add bar' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main commit --message 'state C - add bar' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_rename_add.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

C_REVISION_SHA=`cat _MTN/revision`

# merge heads to make D
$at_traceoff
echo "$at_srcdir/t_merge_add_rename_add.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main merge"
echo t_merge_add_rename_add.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch.main merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_add_rename_add.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# XXX: once the final state has a real definition inside monotone, we need
# to add checks here to ensure that state has been reached.

      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  262 ) # 262. t_update_branch.at:1: update -b foo updates _MTN/options correctly
    at_setup_line='t_update_branch.at:1'
    at_desc='update -b foo updates _MTN/options correctly'
    $at_quiet $ECHO_N "262: update -b foo updates _MTN/options correctly $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "262. t_update_branch.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_update_branch.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_update_branch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_branch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_branch.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_update_branch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_branch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_branch.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_update_branch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_branch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_branch.at:2: rm test_keys"
echo t_update_branch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_branch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_update_branch.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_update_branch.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_branch.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_update_branch.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_update_branch.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_branch.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
other other
_ATEOF



$at_traceoff
echo "$at_srcdir/t_update_branch.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah"
echo t_update_branch.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_branch.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This update should fail (because not only does it have no update
# candidate, but it's currently at an off-branch revision); and should
# not update the _MTN/options
$at_traceoff
echo "$at_srcdir/t_update_branch.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update -b testbranch"
echo t_update_branch.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -b testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -b testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -b testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_update_branch.at:16: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_branch.at:17: grep otherbranch _MTN/options >/dev/null"
echo t_update_branch.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep otherbranch _MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep otherbranch _MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_branch.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_branch.at:18: grep testbranch _MTN/options >/dev/null"
echo t_update_branch.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testbranch _MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testbranch _MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_update_branch.at:18: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_update_branch.at:20: rm -rf _MTN.old"
echo t_update_branch.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_branch.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_branch.at:20: mv  _MTN _MTN.old"
echo t_update_branch.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_branch.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_branch.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout --revision=\$REV ."
echo t_update_branch.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout --revision=$REV ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout --revision=$REV . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout --revision=$REV . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_branch.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_update_branch.at:20: test \$PROBE_R_SHA = \$REV"
echo t_update_branch.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $REV" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $REV ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $REV ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_branch.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_update_branch.at:21: grep otherbranch _MTN/options >/dev/null"
echo t_update_branch.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep otherbranch _MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep otherbranch _MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_update_branch.at:21: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_branch.at:22: grep testbranch _MTN/options >/dev/null"
echo t_update_branch.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testbranch _MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testbranch _MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_branch.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_update_branch.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update -b otherbranch"
echo t_update_branch.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -b otherbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -b otherbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -b otherbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_branch.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_branch.at:25: grep otherbranch _MTN/options >/dev/null"
echo t_update_branch.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep otherbranch _MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep otherbranch _MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_branch.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_branch.at:26: grep testbranch _MTN/options >/dev/null"
echo t_update_branch.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testbranch _MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testbranch _MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_update_branch.at:26: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  263 ) # 263. t_commit_cancelled.at:1: _MTN/* handled correctly in aborted commit
    at_setup_line='t_commit_cancelled.at:1'
    at_desc='_MTN/* handled correctly in aborted commit'
    $at_quiet $ECHO_N "263: _MTN/* handled correctly in aborted commit   $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "263. t_commit_cancelled.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_commit_cancelled.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_commit_cancelled.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_cancelled.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_cancelled.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_commit_cancelled.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_cancelled.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_cancelled.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_commit_cancelled.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_cancelled.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_cancelled.at:2: rm test_keys"
echo t_commit_cancelled.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_cancelled.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# _MTN/* means _MTN/revision and _MTN/work


cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_commit_cancelled.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_commit_cancelled.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_cancelled.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_commit_cancelled.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_commit_cancelled.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_cancelled.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >otherfile <<'_ATEOF'
stuff stuff
_ATEOF

$at_traceoff
echo "$at_srcdir/t_commit_cancelled.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add otherfile"
echo t_commit_cancelled.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_cancelled.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >_MTN/log <<'_ATEOF'
message message
_ATEOF


$at_traceoff
echo "$at_srcdir/t_commit_cancelled.at:16: cp _MTN/log good_log"
echo t_commit_cancelled.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp _MTN/log good_log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp _MTN/log good_log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_cancelled.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_cancelled.at:17: cp _MTN/revision good_revision"
echo t_commit_cancelled.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp _MTN/revision good_revision ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp _MTN/revision good_revision ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_cancelled.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_cancelled.at:18: cp _MTN/work good_work"
echo t_commit_cancelled.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp _MTN/work good_work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp _MTN/work good_work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_cancelled.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >bad_edit_comment.lua <<'_ATEOF'
function edit_comment(basetext, user_log_message)
    return ""
end
_ATEOF


$at_traceoff
echo "$at_srcdir/t_commit_cancelled.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --rcfile=bad_edit_comment.lua"
echo t_commit_cancelled.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --rcfile=bad_edit_comment.lua" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --rcfile=bad_edit_comment.lua ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --rcfile=bad_edit_comment.lua ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_commit_cancelled.at:25: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Since this commit was canceled due to a problem with the log
# message, the old log message have been preserved
$at_traceoff
echo "$at_srcdir/t_commit_cancelled.at:29: cmp _MTN/log good_log"
echo t_commit_cancelled.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp _MTN/log good_log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp _MTN/log good_log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_cancelled.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_commit_cancelled.at:31: cmp _MTN/revision good_revision"
echo t_commit_cancelled.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp _MTN/revision good_revision ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp _MTN/revision good_revision ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_cancelled.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_cancelled.at:32: cmp _MTN/work good_work"
echo t_commit_cancelled.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp _MTN/work good_work ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp _MTN/work good_work ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_cancelled.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  264 ) # 264. t_merge_7.at:1: test a merge 7
    at_setup_line='t_merge_7.at:1'
    at_desc='test a merge 7'
    $at_quiet $ECHO_N "264: test a merge 7                               $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "264. t_merge_7.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge_7.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_merge_7.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_7.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_merge_7.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_7.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_merge_7.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_7.at:2: rm test_keys"
echo t_merge_7.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# this used to be a test for the --lca option to merge and propagate.
# this option is no longer needed in 0.26, so has since been removed.
# --lca was a temporary workaround for 3-way merge suckiness.

# arguably the issue is now fixed with mark-merge. I've changed
# the test to do a successful merge of E and F, since, well,
# extra merge cases never hurt.

#    A
#   / \
#  B   C
#  |\ /|
#  D X |
#  |/ \|
#  E   F


cat >testfile <<'_ATEOF'
foo bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_merge_7.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_merge_7.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_7.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge_7.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


A=`cat _MTN/revision`


cat >otherfile1 <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_merge_7.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add otherfile1"
echo t_merge_7.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_7.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge_7.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


B=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_merge_7.at:30: rm -rf _MTN.old"
echo t_merge_7.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_7.at:30: mv  _MTN _MTN.old"
echo t_merge_7.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_7.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$A ."
echo t_merge_7.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$A . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_merge_7.at:30: test \$PROBE_R_SHA = \$A"
echo t_merge_7.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
new stuff
_ATEOF



$at_traceoff
echo "$at_srcdir/t_merge_7.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge_7.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


C=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_merge_7.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge"
echo t_merge_7.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_7.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_merge_7.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

F=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_merge_7.at:41: rm -rf _MTN.old"
echo t_merge_7.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_7.at:41: mv  _MTN _MTN.old"
echo t_merge_7.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_7.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$B ."
echo t_merge_7.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$B ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$B . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$B . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_merge_7.at:41: test \$PROBE_R_SHA = \$B"
echo t_merge_7.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $B" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $B ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $B ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >otherfile2 <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_merge_7.at:44: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add otherfile2"
echo t_merge_7.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_7.at:45: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_merge_7.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


D=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_merge_7.at:48: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net explicit_merge \$D \$C testbranch"
echo t_merge_7.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $D $C testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $D $C testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $D $C testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_7.at:49: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_merge_7.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

E=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_merge_7.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge"
echo t_merge_7.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_7.at:53: grep \$A stderr >/dev/null"
echo t_merge_7.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $A stderr >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $A stderr >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $A stderr >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_merge_7.at:53: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_7.at:54: grep \$E stderr >/dev/null"
echo t_merge_7.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $E stderr >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $E stderr >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $E stderr >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_7.at:55: grep \$F stderr >/dev/null"
echo t_merge_7.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $F stderr >/dev/null" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $F stderr >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $F stderr >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_7.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  265 ) # 265. t_commit_log_writeback.at:1: commit writes message back to _MTN/log
    at_setup_line='t_commit_log_writeback.at:1'
    at_desc='commit writes message back to _MTN/log'
    $at_quiet $ECHO_N "265: commit writes message back to _MTN/log       $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "265. t_commit_log_writeback.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_commit_log_writeback.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_commit_log_writeback.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_writeback.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_log_writeback.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_commit_log_writeback.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_writeback.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_log_writeback.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_commit_log_writeback.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_writeback.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_log_writeback.at:2: rm test_keys"
echo t_commit_log_writeback.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_writeback.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_commit_log_writeback.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_commit_log_writeback.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_writeback.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# Make it unwriteable, so our  edit_comment hook will have a chance to
# run, but  the overall commit  will fail.  (How  do I know  this will
# work?  Well, it did...)
$at_traceoff
echo "$at_srcdir/t_commit_log_writeback.at:10: chmod a-w test.db"
echo t_commit_log_writeback.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; chmod a-w test.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; chmod a-w test.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_writeback.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >my_hook.lua <<'_ATEOF'
function edit_comment(basetext, user_log_message)
  return "foobar\n"
end
_ATEOF


$at_traceoff
echo "$at_srcdir/t_commit_log_writeback.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit -btestbranch --rcfile=my_hook.lua"
echo t_commit_log_writeback.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -btestbranch --rcfile=my_hook.lua" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -btestbranch --rcfile=my_hook.lua ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -btestbranch --rcfile=my_hook.lua ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_commit_log_writeback.at:17: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_commit_log_writeback.at:19: echo \"foobar\""
echo t_commit_log_writeback.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo "foobar" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo "foobar" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_writeback.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_log_writeback.at:19: mv stdout output1"
echo t_commit_log_writeback.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_writeback.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_log_writeback.at:19:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_commit_log_writeback.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_writeback.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_log_writeback.at:19: cat _MTN/log"
echo t_commit_log_writeback.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat _MTN/log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat _MTN/log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_writeback.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_log_writeback.at:19: mv stdout output2"
echo t_commit_log_writeback.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_writeback.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_log_writeback.at:19:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_commit_log_writeback.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_writeback.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_log_writeback.at:19: cmp output1 output2"
echo t_commit_log_writeback.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_writeback.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_commit_log_writeback.at:21: rm -f _MTN/log"
echo t_commit_log_writeback.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f _MTN/log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f _MTN/log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_writeback.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_commit_log_writeback.at:22: touch _MTN/log"
echo t_commit_log_writeback.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; touch _MTN/log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; touch _MTN/log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_commit_log_writeback.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# -m messages don't get written out to _MTN/log
# (if they do, it breaks the workflow:
#   $ mtn commit -m 'foo'
#   <fails>
#   <fixup>
#   $ mtn commit -m 'foo'
#   error, _MTN/log non-empty and -m specified
$at_traceoff
echo "$at_srcdir/t_commit_log_writeback.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit -btestbranch -m \"blah blah\""
echo t_commit_log_writeback.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -btestbranch -m \"blah blah\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -btestbranch -m "blah blah" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -btestbranch -m "blah blah" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_commit_log_writeback.at:31: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# So _MTN/log should still be empty
$at_traceoff
echo "$at_srcdir/t_commit_log_writeback.at:34: test -s _MTN/log"
echo t_commit_log_writeback.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -s _MTN/log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -s _MTN/log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_commit_log_writeback.at:34: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  266 ) # 266. t_log_brief.at:1: log --brief
    at_setup_line='t_log_brief.at:1'
    at_desc='log --brief'
    $at_quiet $ECHO_N "266: log --brief                                  $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "266. t_log_brief.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_log_brief.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_log_brief.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_brief.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_brief.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_log_brief.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_brief.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_brief.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_log_brief.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_brief.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_brief.at:2: rm test_keys"
echo t_log_brief.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_brief.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_log_brief.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_log_brief.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_brief.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_brief.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit -b testbranch --date \"2005-08-16T03:16:00\" -m foo"
echo t_log_brief.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -b testbranch --date \"2005-08-16T03:16:00\" -m foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -b testbranch --date "2005-08-16T03:16:00" -m foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -b testbranch --date "2005-08-16T03:16:00" -m foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_brief.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

R0=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
stuff stuff
_ATEOF


$at_traceoff
echo "$at_srcdir/t_log_brief.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit -b testbranch --date \"2005-08-16T03:16:00\" -m foo"
echo t_log_brief.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -b testbranch --date \"2005-08-16T03:16:00\" -m foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -b testbranch --date "2005-08-16T03:16:00" -m foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -b testbranch --date "2005-08-16T03:16:00" -m foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_brief.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

R1=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
other other
_ATEOF


$at_traceoff
echo "$at_srcdir/t_log_brief.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit -b otherbranch --date \"2005-08-16T03:16:05\" -m foo"
echo t_log_brief.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -b otherbranch --date \"2005-08-16T03:16:05\" -m foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -b otherbranch --date "2005-08-16T03:16:05" -m foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -b otherbranch --date "2005-08-16T03:16:05" -m foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_brief.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

R2=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_log_brief.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log --brief"
echo t_log_brief.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --brief" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --brief ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --brief ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_brief.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_brief.at:20: echo \"\$R2 tester@test.net 2005-08-16T03:16:05 otherbranch\" > target"
echo t_log_brief.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo \"$R2 tester@test.net 2005-08-16T03:16:05 otherbranch\" > target" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo "$R2 tester@test.net 2005-08-16T03:16:05 otherbranch" > target ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo "$R2 tester@test.net 2005-08-16T03:16:05 otherbranch" > target ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_brief.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_brief.at:21: echo \"\$R1 tester@test.net 2005-08-16T03:16:00 testbranch\" >> target"
echo t_log_brief.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo \"$R1 tester@test.net 2005-08-16T03:16:00 testbranch\" >> target" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo "$R1 tester@test.net 2005-08-16T03:16:00 testbranch" >> target ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo "$R1 tester@test.net 2005-08-16T03:16:00 testbranch" >> target ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_brief.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_brief.at:22: echo \"\$R0 tester@test.net 2005-08-16T03:16:00 testbranch\" >> target"
echo t_log_brief.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo \"$R0 tester@test.net 2005-08-16T03:16:00 testbranch\" >> target" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo "$R0 tester@test.net 2005-08-16T03:16:00 testbranch" >> target ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo "$R0 tester@test.net 2005-08-16T03:16:00 testbranch" >> target ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_brief.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_brief.at:23:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_log_brief.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_brief.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_brief.at:24:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o target
fi
"
echo t_log_brief.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o target
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o target
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_brief.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_brief.at:25: cmp stdout target"
echo t_log_brief.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout target ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout target ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_brief.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  267 ) # 267. t_explicit_merge_with_anc.at:1: explicit_merge LEFT RIGHT ANC BRANCH
    at_setup_line='t_explicit_merge_with_anc.at:1'
    at_desc='explicit_merge LEFT RIGHT ANC BRANCH'
    $at_quiet $ECHO_N "267: explicit_merge LEFT RIGHT ANC BRANCH         $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "267. t_explicit_merge_with_anc.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_explicit_merge_with_anc.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_explicit_merge_with_anc.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge_with_anc.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_explicit_merge_with_anc.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_explicit_merge_with_anc.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge_with_anc.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_explicit_merge_with_anc.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_explicit_merge_with_anc.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge_with_anc.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_explicit_merge_with_anc.at:2: rm test_keys"
echo t_explicit_merge_with_anc.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge_with_anc.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This test relies on a command-line mode which has, for the time
# being, been disabled. Possibly no need to revive it.



cat >testfile <<'_ATEOF'
a
OLD
c
d
e
_ATEOF

$at_traceoff
echo "$at_srcdir/t_explicit_merge_with_anc.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_explicit_merge_with_anc.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge_with_anc.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_explicit_merge_with_anc.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_explicit_merge_with_anc.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge_with_anc.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


BAD_ANC=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
a
b
c
d
e
_ATEOF



$at_traceoff
echo "$at_srcdir/t_explicit_merge_with_anc.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_explicit_merge_with_anc.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge_with_anc.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


GOOD_ANC=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
a
NEW
c
d
e
_ATEOF



$at_traceoff
echo "$at_srcdir/t_explicit_merge_with_anc.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_explicit_merge_with_anc.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge_with_anc.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


LEFT=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_explicit_merge_with_anc.at:35: rm -rf _MTN.old"
echo t_explicit_merge_with_anc.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge_with_anc.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_explicit_merge_with_anc.at:35: mv  _MTN _MTN.old"
echo t_explicit_merge_with_anc.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge_with_anc.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_explicit_merge_with_anc.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$GOOD_ANC ."
echo t_explicit_merge_with_anc.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$GOOD_ANC ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$GOOD_ANC . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$GOOD_ANC . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge_with_anc.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_explicit_merge_with_anc.at:35: test \$PROBE_R_SHA = \$GOOD_ANC"
echo t_explicit_merge_with_anc.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $GOOD_ANC" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $GOOD_ANC ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $GOOD_ANC ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge_with_anc.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
a
b
c
NEW
e
_ATEOF



$at_traceoff
echo "$at_srcdir/t_explicit_merge_with_anc.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_explicit_merge_with_anc.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge_with_anc.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


RIGHT=`cat _MTN/revision`

# This should fail:
$at_traceoff
echo "$at_srcdir/t_explicit_merge_with_anc.at:47: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net explicit_merge \$LEFT \$RIGHT \$BAD_ANC testbranch"
echo t_explicit_merge_with_anc.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $LEFT $RIGHT $BAD_ANC testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $LEFT $RIGHT $BAD_ANC testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $LEFT $RIGHT $BAD_ANC testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_explicit_merge_with_anc.at:47: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# But this should work:
$at_traceoff
echo "$at_srcdir/t_explicit_merge_with_anc.at:49: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net explicit_merge \$LEFT \$RIGHT \$GOOD_ANC testbranch"
echo t_explicit_merge_with_anc.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $LEFT $RIGHT $GOOD_ANC testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $LEFT $RIGHT $GOOD_ANC testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $LEFT $RIGHT $GOOD_ANC testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge_with_anc.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# And produce the logical result:
$at_traceoff
echo "$at_srcdir/t_explicit_merge_with_anc.at:51: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_explicit_merge_with_anc.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge_with_anc.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >expected <<'_ATEOF'
a
NEW
c
NEW
e
_ATEOF

$at_traceoff
echo "$at_srcdir/t_explicit_merge_with_anc.at:58: cmp expected testfile"
echo t_explicit_merge_with_anc.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp expected testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp expected testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_explicit_merge_with_anc.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  268 ) # 268. t_drop_execute.at:3: drop with actual removal
    at_setup_line='t_drop_execute.at:3'
    at_desc='drop with actual removal'
    $at_quiet $ECHO_N "268: drop with actual removal                     $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "268. t_drop_execute.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_drop_execute.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_drop_execute.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_execute.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_execute.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_drop_execute.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_execute.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_execute.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_drop_execute.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_execute.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_execute.at:5: rm test_keys"
echo t_drop_execute.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_execute.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >file0 <<'_ATEOF'
file 0
_ATEOF

$at_traceoff
echo "$at_srcdir/t_drop_execute.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file0"
echo t_drop_execute.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_execute.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >file1 <<'_ATEOF'
file 1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_drop_execute.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file1"
echo t_drop_execute.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_execute.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >file2 <<'_ATEOF'
file 2
_ATEOF

$at_traceoff
echo "$at_srcdir/t_drop_execute.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file2"
echo t_drop_execute.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_execute.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_drop_execute.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop file0"
echo t_drop_execute.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop file0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop file0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop file0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_execute.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_execute.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop --execute file1"
echo t_drop_execute.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop --execute file1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop --execute file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop --execute file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_execute.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_execute.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop -e file2"
echo t_drop_execute.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop -e file2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop -e file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop -e file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_execute.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_drop_execute.at:18: test -f file0"
echo t_drop_execute.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f file0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f file0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_drop_execute.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_execute.at:19: test -f file1"
echo t_drop_execute.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_drop_execute.at:19: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_drop_execute.at:20: test -f file2"
echo t_drop_execute.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_drop_execute.at:20: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  269 ) # 269. t_rename_execute.at:3: rename with actual file rename
    at_setup_line='t_rename_execute.at:3'
    at_desc='rename with actual file rename'
    $at_quiet $ECHO_N "269: rename with actual file rename               $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "269. t_rename_execute.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_rename_execute.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_rename_execute.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_execute.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_execute.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_rename_execute.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_execute.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_execute.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_rename_execute.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_execute.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_execute.at:5: rm test_keys"
echo t_rename_execute.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_execute.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >file0 <<'_ATEOF'
file 0
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_execute.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file0"
echo t_rename_execute.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_execute.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >file1 <<'_ATEOF'
file 1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_execute.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file1"
echo t_rename_execute.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_execute.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >file2 <<'_ATEOF'
file 2
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_execute.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file2"
echo t_rename_execute.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_execute.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rename_execute.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename file0 newfile0"
echo t_rename_execute.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename file0 newfile0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename file0 newfile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename file0 newfile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_execute.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_execute.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename --execute file1 newfile1"
echo t_rename_execute.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename --execute file1 newfile1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename --execute file1 newfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename --execute file1 newfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_execute.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_execute.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename -e file2 newfile2"
echo t_rename_execute.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename -e file2 newfile2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename -e file2 newfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename -e file2 newfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_execute.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_execute.at:18: test -f file0"
echo t_rename_execute.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f file0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f file0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_execute.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_execute.at:19: test -f file1"
echo t_rename_execute.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_rename_execute.at:19: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_execute.at:20: test -f file2"
echo t_rename_execute.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_rename_execute.at:20: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_execute.at:21: test -f newfile0"
echo t_rename_execute.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f newfile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f newfile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_rename_execute.at:21: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_execute.at:22: test -f newfile1"
echo t_rename_execute.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f newfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f newfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_execute.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_execute.at:23: test -f newfile2"
echo t_rename_execute.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f newfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f newfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_execute.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  270 ) # 270. t_read_from_file.at:1: mtn read FILE
    at_setup_line='t_read_from_file.at:1'
    at_desc='mtn read FILE'
    $at_quiet $ECHO_N "270: mtn read FILE                                $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "270. t_read_from_file.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_read_from_file.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_read_from_file.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_read_from_file.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_read_from_file.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_read_from_file.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_read_from_file.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_read_from_file.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_read_from_file.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_read_from_file.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_read_from_file.at:2: rm test_keys"
echo t_read_from_file.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_read_from_file.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_read_from_file.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init --db foo.db"
echo t_read_from_file.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init --db foo.db" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init --db foo.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init --db foo.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_read_from_file.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_read_from_file.at:5: (echo 'foo'; echo 'foo') | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db foo.db genkey foo"
echo t_read_from_file.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo 'foo'; echo 'foo') | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db foo.db genkey foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo 'foo'; echo 'foo') | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db foo.db genkey foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo 'foo'; echo 'foo') | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db foo.db genkey foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_read_from_file.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_read_from_file.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db foo.db pubkey foo >foo.keyfile"
echo t_read_from_file.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db foo.db pubkey foo >foo.keyfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db foo.db pubkey foo >foo.keyfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db foo.db pubkey foo >foo.keyfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_read_from_file.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_read_from_file.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read nonexistent"
echo t_read_from_file.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read nonexistent" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read nonexistent ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read nonexistent ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_read_from_file.at:8: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_read_from_file.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read foo.keyfile"
echo t_read_from_file.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read foo.keyfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read foo.keyfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read foo.keyfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_read_from_file.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_read_from_file.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls keys"
echo t_read_from_file.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_read_from_file.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_read_from_file.at:12: grep foo stdout >/dev/null"
echo t_read_from_file.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foo stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foo stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_read_from_file.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  271 ) # 271. t_setup_existing_path.at:1: setup on existing path
    at_setup_line='t_setup_existing_path.at:1'
    at_desc='setup on existing path'
    $at_quiet $ECHO_N "271: setup on existing path                       $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "271. t_setup_existing_path.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_setup_existing_path.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_setup_existing_path.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_existing_path.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_existing_path.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_setup_existing_path.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_existing_path.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_existing_path.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_setup_existing_path.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_existing_path.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_existing_path.at:2: rm test_keys"
echo t_setup_existing_path.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_existing_path.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_setup_existing_path.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch foo"
echo t_setup_existing_path.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_setup_existing_path.at:6: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_existing_path.at:7: mkdir bar"
echo t_setup_existing_path.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_existing_path.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_existing_path.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch bar"
echo t_setup_existing_path.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_existing_path.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_existing_path.at:9: test -d bar/_MTN"
echo t_setup_existing_path.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -d bar/_MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -d bar/_MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_existing_path.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_existing_path.at:10: rm -r bar/_MTN"
echo t_setup_existing_path.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -r bar/_MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -r bar/_MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_existing_path.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_existing_path.at:11: cd bar && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch"
echo t_setup_existing_path.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd bar && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd bar && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd bar && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_existing_path.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  272 ) # 272. t_mtn_ignore.at:1: things in .mtn-ignore get ignored
    at_setup_line='t_mtn_ignore.at:1'
    at_desc='things in .mtn-ignore get ignored'
    $at_quiet $ECHO_N "272: things in .mtn-ignore get ignored            $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "272. t_mtn_ignore.at:1: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_mtn_ignore.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_mtn_ignore.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_mtn_ignore.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:3: rm test_keys"
echo t_mtn_ignore.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:5: touch foo"
echo t_mtn_ignore.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; touch foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; touch foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:6: touch bar"
echo t_mtn_ignore.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; touch bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; touch bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:7: mkdir baz"
echo t_mtn_ignore.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir baz ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir baz ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:8: touch baz/xyzzy"
echo t_mtn_ignore.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; touch baz/xyzzy ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; touch baz/xyzzy ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >.mtn-ignore <<'_ATEOF'
bar
baz
*.d
_ATEOF


$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR ls unknown"
echo t_mtn_ignore.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR ls unknown" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR ls unknown ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR ls unknown ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:16: cp stdout unknown"
echo t_mtn_ignore.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout unknown ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout unknown ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:17: cp stderr unknownerr"
echo t_mtn_ignore.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stderr unknownerr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stderr unknownerr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:19: grep foo unknown"
echo t_mtn_ignore.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foo unknown ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foo unknown ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:20: grep bar unknown"
echo t_mtn_ignore.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep bar unknown ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep bar unknown ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:20: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:21: grep baz unknown"
echo t_mtn_ignore.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep baz unknown ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep baz unknown ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:21: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:22: grep WARNING unknownerr"
echo t_mtn_ignore.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep WARNING unknownerr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep WARNING unknownerr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR ls ignored"
echo t_mtn_ignore.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR ls ignored" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR ls ignored ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR ls ignored ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:26: cp stdout ignored"
echo t_mtn_ignore.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout ignored ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout ignored ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:27: cp stderr ignorederr"
echo t_mtn_ignore.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stderr ignorederr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stderr ignorederr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:29: grep foo ignored"
echo t_mtn_ignore.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foo ignored ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foo ignored ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:29: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:30: grep bar ignored"
echo t_mtn_ignore.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep bar ignored ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep bar ignored ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:31: grep xyzzy ignored"
echo t_mtn_ignore.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep xyzzy ignored ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep xyzzy ignored ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:32: grep WARNING ignorederr"
echo t_mtn_ignore.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep WARNING ignorederr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep WARNING ignorederr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:33: grep -v WARNING ignorederr | grep -v ignoring"
echo t_mtn_ignore.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep -v WARNING ignorederr | grep -v ignoring ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep -v WARNING ignorederr | grep -v ignoring ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:33: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:35: rm .mtn-ignore"
echo t_mtn_ignore.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm .mtn-ignore ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm .mtn-ignore ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR ls ignored"
echo t_mtn_ignore.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR ls ignored" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR ls ignored ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR ls ignored ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:37: grep test.db stdout"
echo t_mtn_ignore.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep test.db stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep test.db stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:38: grep WARNING stderr"
echo t_mtn_ignore.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep WARNING stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep WARNING stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:38: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_mtn_ignore.at:39: grep -v WARNING stderr| grep -v ignoring"
echo t_mtn_ignore.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep -v WARNING stderr| grep -v ignoring ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep -v WARNING stderr| grep -v ignoring ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_mtn_ignore.at:39: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  273 ) # 273. t_automate_get_file.at:3: automate get_file
    at_setup_line='t_automate_get_file.at:3'
    at_desc='automate get_file'
    $at_quiet $ECHO_N "273: automate get_file                            $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "273. t_automate_get_file.at:3: testing ..."
      $at_traceon


if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_automate_get_file.at:4: echo \$UNB64_COMMAND"
echo t_automate_get_file.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_file.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_automate_get_file.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_automate_get_file.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_file.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_file.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_automate_get_file.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_file.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_file.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_automate_get_file.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_file.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_file.at:5: rm test_keys"
echo t_automate_get_file.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_file.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >expected <<'_ATEOF'
blah
_ATEOF


cat >empty <<'_ATEOF'
_ATEOF



cat >foo <<'_ATEOF'
blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_get_file.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_automate_get_file.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_file.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_get_file.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --date=2005-05-21T12:30:51 --branch=testbranch --message=blah-blah"
echo t_automate_get_file.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --date=2005-05-21T12:30:51 --branch=testbranch --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --date=2005-05-21T12:30:51 --branch=testbranch --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --date=2005-05-21T12:30:51 --branch=testbranch --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_file.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

BASE_R=`cat _MTN/revision`
FILE_R=4cbd040533a2f43fc6691d773d510cda70f4126a

# check that a correct usage produces correctly formatted output
$at_traceoff
echo "$at_srcdir/t_automate_get_file.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_file \$FILE_R"
echo t_automate_get_file.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $FILE_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $FILE_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $FILE_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_file.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_file.at:20:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_get_file.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_file.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_file.at:21: cmp expected stdout"
echo t_automate_get_file.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp expected stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp expected stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_file.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# ensure that missing revisions fail
NOSUCHREV=0000000000000000000000000000000000000000
$at_traceoff
echo "$at_srcdir/t_automate_get_file.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_file \$NOSUCHREV"
echo t_automate_get_file.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $NOSUCHREV" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $NOSUCHREV ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $NOSUCHREV ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_automate_get_file.at:25: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_file.at:26:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_get_file.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_file.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_file.at:27: cmp empty stdout"
echo t_automate_get_file.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp empty stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp empty stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_file.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# ensure that revisions are not being completed
TRUNCATEDREV=4cbd040533a2f43fc6691d773d510c
$at_traceoff
echo "$at_srcdir/t_automate_get_file.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_file \$TRUNCATEDREV"
echo t_automate_get_file.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TRUNCATEDREV" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TRUNCATEDREV ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TRUNCATEDREV ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_automate_get_file.at:31: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_file.at:32:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_get_file.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_file.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_file.at:33: cmp empty stdout"
echo t_automate_get_file.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp empty stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp empty stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_file.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  274 ) # 274. t_automate_get_manifest_of.at:3: automate get_manifest_of
    at_setup_line='t_automate_get_manifest_of.at:3'
    at_desc='automate get_manifest_of'
    $at_quiet $ECHO_N "274: automate get_manifest_of                     $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "274. t_automate_get_manifest_of.at:3: testing ..."
      $at_traceon


if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_automate_get_manifest_of.at:4: echo \$UNB64_COMMAND"
echo t_automate_get_manifest_of.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_manifest_of.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_automate_get_manifest_of.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_automate_get_manifest_of.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_manifest_of.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_manifest_of.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_automate_get_manifest_of.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_manifest_of.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_manifest_of.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_automate_get_manifest_of.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_manifest_of.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_manifest_of.at:5: rm test_keys"
echo t_automate_get_manifest_of.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_manifest_of.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >expected <<'_ATEOF'
format_version "1"

dir ""

   file "foo"
content [4cbd040533a2f43fc6691d773d510cda70f4126a]
_ATEOF


cat >expected2 <<'_ATEOF'
format_version "1"

dir ""

   file "foo"
content [9fd2be4badf713d640ae46bf4547d1549654dfe5]
_ATEOF


cat >empty <<'_ATEOF'
_ATEOF



cat >foo <<'_ATEOF'
blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_get_manifest_of.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_automate_get_manifest_of.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_manifest_of.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_get_manifest_of.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --date=2005-05-21T12:30:51 --branch=testbranch --message=blah-blah"
echo t_automate_get_manifest_of.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --date=2005-05-21T12:30:51 --branch=testbranch --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --date=2005-05-21T12:30:51 --branch=testbranch --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --date=2005-05-21T12:30:51 --branch=testbranch --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_manifest_of.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

BASE_R=`cat _MTN/revision`

# check that a correct usage produces correctly formatted output
$at_traceoff
echo "$at_srcdir/t_automate_get_manifest_of.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of \$BASE_R"
echo t_automate_get_manifest_of.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of $BASE_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of $BASE_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of $BASE_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_manifest_of.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_manifest_of.at:32:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_get_manifest_of.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_manifest_of.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_manifest_of.at:33: cmp expected stdout"
echo t_automate_get_manifest_of.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp expected stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp expected stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_manifest_of.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# should work even if we don't specify the manifest ID
$at_traceoff
echo "$at_srcdir/t_automate_get_manifest_of.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of"
echo t_automate_get_manifest_of.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_manifest_of.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_manifest_of.at:37:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_get_manifest_of.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_manifest_of.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_manifest_of.at:38: cmp expected stdout"
echo t_automate_get_manifest_of.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp expected stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp expected stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_manifest_of.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# ensure that missing revisions fail
NOSUCHREV=0000000000000000000000000000000000000000
$at_traceoff
echo "$at_srcdir/t_automate_get_manifest_of.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of \$NOSUCHREV"
echo t_automate_get_manifest_of.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of $NOSUCHREV" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of $NOSUCHREV ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of $NOSUCHREV ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_automate_get_manifest_of.at:42: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_manifest_of.at:43:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_get_manifest_of.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_manifest_of.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_manifest_of.at:44: cmp empty stdout"
echo t_automate_get_manifest_of.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp empty stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp empty stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_manifest_of.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# ensure that revisions are not being completed
# (the above commit will have created rev 3cf83369cfadbf5ba4ea3a50796fba18ec245489)
TRUNCATEDREV=3cf83369cfadbf5ba4ea3a50796fba18ec2454
$at_traceoff
echo "$at_srcdir/t_automate_get_manifest_of.at:49: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision \$TRUNCATEDREV"
echo t_automate_get_manifest_of.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $TRUNCATEDREV" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $TRUNCATEDREV ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $TRUNCATEDREV ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_automate_get_manifest_of.at:49: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_manifest_of.at:50:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_get_manifest_of.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_manifest_of.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_manifest_of.at:51: cmp empty stdout"
echo t_automate_get_manifest_of.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp empty stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp empty stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_manifest_of.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check that modified working copy manifest is correct
cat >foo <<'_ATEOF'
bla bla
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_get_manifest_of.at:56: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of"
echo t_automate_get_manifest_of.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_manifest_of.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_manifest_of.at:57:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_get_manifest_of.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_manifest_of.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_manifest_of.at:58: cmp expected2 stdout"
echo t_automate_get_manifest_of.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp expected2 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp expected2 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_manifest_of.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  275 ) # 275. t_automate_get_revision.at:3: automate get_revision
    at_setup_line='t_automate_get_revision.at:3'
    at_desc='automate get_revision'
    $at_quiet $ECHO_N "275: automate get_revision                        $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "275. t_automate_get_revision.at:3: testing ..."
      $at_traceon


if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_automate_get_revision.at:4: echo \$UNB64_COMMAND"
echo t_automate_get_revision.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_revision.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_automate_get_revision.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_automate_get_revision.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_revision.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_revision.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_automate_get_revision.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_revision.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_revision.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_automate_get_revision.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_revision.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_revision.at:5: rm test_keys"
echo t_automate_get_revision.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_revision.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >expected <<'_ATEOF'
format_version "1"

new_manifest [407ad1469e65feae6dcecc268e129d9369b69675]

old_revision []

add_dir ""

add_file "foo"
 content [4cbd040533a2f43fc6691d773d510cda70f4126a]
_ATEOF


cat >expected2 <<'_ATEOF'
format_version "1"

new_manifest [407ad1469e65feae6dcecc268e129d9369b69675]

old_revision [dae0d8e3f944c82a9688bcd6af99f5b837b41968]
_ATEOF


cat >empty <<'_ATEOF'
_ATEOF



cat >foo <<'_ATEOF'
blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_get_revision.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_automate_get_revision.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_revision.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_get_revision.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --date=2005-05-21T12:30:51 --branch=testbranch --message=blah-blah"
echo t_automate_get_revision.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --date=2005-05-21T12:30:51 --branch=testbranch --message=blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --date=2005-05-21T12:30:51 --branch=testbranch --message=blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --date=2005-05-21T12:30:51 --branch=testbranch --message=blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_revision.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

BASE_R=`cat _MTN/revision`

# check that a correct usage produces correctly formatted output
$at_traceoff
echo "$at_srcdir/t_automate_get_revision.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision \$BASE_R"
echo t_automate_get_revision.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $BASE_R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $BASE_R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $BASE_R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_revision.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_revision.at:35:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_get_revision.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_revision.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_revision.at:36: cmp expected stdout"
echo t_automate_get_revision.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp expected stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp expected stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_revision.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# should work even if we don't specify the revision
$at_traceoff
echo "$at_srcdir/t_automate_get_revision.at:39: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision"
echo t_automate_get_revision.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_revision.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_revision.at:40:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_get_revision.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_revision.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_revision.at:41: cmp expected2 stdout"
echo t_automate_get_revision.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp expected2 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp expected2 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_revision.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# ensure that missing revisions fail
NOSUCHREV=0000000000000000000000000000000000000000
$at_traceoff
echo "$at_srcdir/t_automate_get_revision.at:45: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_file \$NOSUCHREV"
echo t_automate_get_revision.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $NOSUCHREV" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $NOSUCHREV ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $NOSUCHREV ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_automate_get_revision.at:45: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_revision.at:46:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_get_revision.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_revision.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_revision.at:47: cmp empty stdout"
echo t_automate_get_revision.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp empty stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp empty stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_revision.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# ensure that revisions are not being completed
# (the above commit will have created rev 306c506078df4b58470f75c845ccd11c2ea8cb26)
TRUNCATEDREV=095e136cd6e47e3519869fb0f07dcc
$at_traceoff
echo "$at_srcdir/t_automate_get_revision.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_file \$TRUNCATEDREV"
echo t_automate_get_revision.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TRUNCATEDREV" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TRUNCATEDREV ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_file $TRUNCATEDREV ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_automate_get_revision.at:52: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_revision.at:53:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_get_revision.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_revision.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_revision.at:54: cmp empty stdout"
echo t_automate_get_revision.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp empty stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp empty stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_revision.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  276 ) # 276. t_unreadable_db.at:1: fail cleanly on unreadable db
    at_setup_line='t_unreadable_db.at:1'
    at_desc='fail cleanly on unreadable db'
    $at_quiet $ECHO_N "276: fail cleanly on unreadable db                $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "276. t_unreadable_db.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_unreadable_db.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_unreadable_db.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unreadable_db.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unreadable_db.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_unreadable_db.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unreadable_db.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unreadable_db.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_unreadable_db.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unreadable_db.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unreadable_db.at:2: rm test_keys"
echo t_unreadable_db.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unreadable_db.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# disable for now; can't see a sane way to test this

if test "$OSTYPE" = "msys"; then
  echo 77 > $at_status_file
  exit 77
fi



cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_unreadable_db.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_unreadable_db.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unreadable_db.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# unreadable file
$at_traceoff
echo "$at_srcdir/t_unreadable_db.at:11: chmod a-rwx test.db"
echo t_unreadable_db.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; chmod a-rwx test.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; chmod a-rwx test.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unreadable_db.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unreadable_db.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net"
echo t_unreadable_db.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_unreadable_db.at:12: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unreadable_db.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls branches"
echo t_unreadable_db.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_unreadable_db.at:13: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unreadable_db.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db info"
echo t_unreadable_db.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db info" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db info ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db info ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_unreadable_db.at:14: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unreadable_db.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db version"
echo t_unreadable_db.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db version" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db version ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db version ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_unreadable_db.at:15: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unreadable_db.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db migrate"
echo t_unreadable_db.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_unreadable_db.at:16: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unreadable_db.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit -mfoo"
echo t_unreadable_db.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -mfoo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -mfoo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -mfoo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_unreadable_db.at:17: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unreadable_db.at:18: echo | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db load"
echo t_unreadable_db.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_unreadable_db.at:18: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unreadable_db.at:19: chmod a+rwx test.db"
echo t_unreadable_db.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; chmod a+rwx test.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; chmod a+rwx test.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unreadable_db.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_unreadable_db.at:21: mkdir subdir"
echo t_unreadable_db.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir subdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir subdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unreadable_db.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unreadable_db.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db db init"
echo t_unreadable_db.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unreadable_db.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# unreadable directory
$at_traceoff
echo "$at_srcdir/t_unreadable_db.at:25: chmod a-rwx subdir"
echo t_unreadable_db.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; chmod a-rwx subdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; chmod a-rwx subdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unreadable_db.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unreadable_db.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db"
echo t_unreadable_db.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_unreadable_db.at:26: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unreadable_db.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db ls branches"
echo t_unreadable_db.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db ls branches" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db ls branches ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db ls branches ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_unreadable_db.at:27: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unreadable_db.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db db info"
echo t_unreadable_db.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db db info" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db db info ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db db info ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_unreadable_db.at:28: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unreadable_db.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db db version"
echo t_unreadable_db.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db db version" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db db version ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db db version ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_unreadable_db.at:29: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unreadable_db.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db db migrate"
echo t_unreadable_db.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db db migrate" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db db migrate ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db db migrate ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_unreadable_db.at:30: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unreadable_db.at:31: echo | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db db load"
echo t_unreadable_db.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db db load" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db db load ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db subdir/foo.db db load ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_unreadable_db.at:31: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unreadable_db.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db subdir/bar.db db init"
echo t_unreadable_db.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db subdir/bar.db db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db subdir/bar.db db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db subdir/bar.db db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_unreadable_db.at:32: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_unreadable_db.at:33: chmod a+rwx subdir"
echo t_unreadable_db.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; chmod a+rwx subdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; chmod a+rwx subdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_unreadable_db.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  277 ) # 277. t_restriction_with_exclude.at:1: use restrictions with --exclude
    at_setup_line='t_restriction_with_exclude.at:1'
    at_desc='use restrictions with --exclude'
    $at_quiet $ECHO_N "277: use restrictions with --exclude              $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "277. t_restriction_with_exclude.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_restriction_with_exclude.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_restriction_with_exclude.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_restriction_with_exclude.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude.at:2: rm test_keys"
echo t_restriction_with_exclude.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude.at:4: mkdir foo"
echo t_restriction_with_exclude.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >file1 <<'_ATEOF'
x
_ATEOF

cat >foo/bar <<'_ATEOF'
y
_ATEOF


$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file1"
echo t_restriction_with_exclude.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo/bar"
echo t_restriction_with_exclude.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ci --exclude . -m 'x'"
echo t_restriction_with_exclude.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci --exclude . -m 'x'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci --exclude . -m 'x' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci --exclude . -m 'x' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude.at:13: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# this is dumb. excluding the whole tree and including file1 is
# equivalent to just including file1. except that at this point
# the root dir has not been created and excluding the whole tree
# excludes this creation. this causes the commit to fail because
# file1 has no parent.
#
# AT_CHECK(MTN ci --exclude . file1 -m 'x', [], [ignore], [ignore])
# AT_CHECK(MTN status --brief | grep "foo/bar", [], [ignore], [ignore])
# AT_CHECK(MTN status --brief | grep "file1", [1], [ignore], [ignore])
# AT_CHECK(echo a >>file1)

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ci --exclude foo -m 'x'"
echo t_restriction_with_exclude.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci --exclude foo -m 'x'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci --exclude foo -m 'x' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci --exclude foo -m 'x' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status --brief | grep \"foo/bar\""
echo t_restriction_with_exclude.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep \"foo/bar\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep "foo/bar" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep "foo/bar" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status --brief | grep \"file1\""
echo t_restriction_with_exclude.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep \"file1\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep "file1" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep "file1" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude.at:28: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude.at:29: echo a >>file1"
echo t_restriction_with_exclude.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo a >>file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo a >>file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ci . --exclude file1 -m 'x'"
echo t_restriction_with_exclude.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci . --exclude file1 -m 'x'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci . --exclude file1 -m 'x' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci . --exclude file1 -m 'x' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status --brief | grep \"foo/bar\""
echo t_restriction_with_exclude.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep \"foo/bar\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep "foo/bar" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep "foo/bar" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude.at:32: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status --brief | grep \"file1\""
echo t_restriction_with_exclude.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep \"file1\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep "file1" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep "file1" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude.at:34: echo b >>foo/bar"
echo t_restriction_with_exclude.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo b >>foo/bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo b >>foo/bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ci . --exclude foo foo/bar -m 'x'"
echo t_restriction_with_exclude.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci . --exclude foo foo/bar -m 'x'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci . --exclude foo foo/bar -m 'x' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci . --exclude foo foo/bar -m 'x' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status --brief | grep \"foo/bar\""
echo t_restriction_with_exclude.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep \"foo/bar\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep "foo/bar" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep "foo/bar" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude.at:37: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status --brief | grep \"file1\""
echo t_restriction_with_exclude.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep \"file1\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep "file1" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep "file1" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude.at:38: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude.at:39: echo a >>file1"
echo t_restriction_with_exclude.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo a >>file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo a >>file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude.at:40: echo b >>foo/bar"
echo t_restriction_with_exclude.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo b >>foo/bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo b >>foo/bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ci --exclude foo foo/bar -m 'x'"
echo t_restriction_with_exclude.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci --exclude foo foo/bar -m 'x'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci --exclude foo foo/bar -m 'x' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci --exclude foo foo/bar -m 'x' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status --brief | grep \"foo/bar\""
echo t_restriction_with_exclude.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep \"foo/bar\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep "foo/bar" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep "foo/bar" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude.at:43: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude.at:44: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status --brief | grep \"file1\""
echo t_restriction_with_exclude.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep \"file1\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep "file1" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep "file1" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  278 ) # 278. t_restriction_with_exclude_iprint.at:1: use restrictions with --exclude and inodeprints
    at_setup_line='t_restriction_with_exclude_iprint.at:1'
    at_desc='use restrictions with --exclude and inodeprints'
    $at_quiet $ECHO_N "278: use restrictions with --exclude and inodeprints$ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "278. t_restriction_with_exclude_iprint.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude_iprint.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_restriction_with_exclude_iprint.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude_iprint.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude_iprint.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_restriction_with_exclude_iprint.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude_iprint.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude_iprint.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_restriction_with_exclude_iprint.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude_iprint.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude_iprint.at:2: rm test_keys"
echo t_restriction_with_exclude_iprint.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude_iprint.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude_iprint.at:4: mkdir foo"
echo t_restriction_with_exclude_iprint.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude_iprint.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >file1 <<'_ATEOF'
x
_ATEOF

cat >foo/bar <<'_ATEOF'
y
_ATEOF


$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude_iprint.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file1"
echo t_restriction_with_exclude_iprint.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude_iprint.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude_iprint.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo/bar"
echo t_restriction_with_exclude_iprint.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude_iprint.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude_iprint.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ci -m 'x'"
echo t_restriction_with_exclude_iprint.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci -m 'x'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci -m 'x' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci -m 'x' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude_iprint.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude_iprint.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net refresh_inodeprints"
echo t_restriction_with_exclude_iprint.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net refresh_inodeprints" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net refresh_inodeprints ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net refresh_inodeprints ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude_iprint.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude_iprint.at:15: echo a >>file1"
echo t_restriction_with_exclude_iprint.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo a >>file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo a >>file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude_iprint.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude_iprint.at:16: echo b >>foo/bar"
echo t_restriction_with_exclude_iprint.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo b >>foo/bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo b >>foo/bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude_iprint.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude_iprint.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ci --exclude foo -m 'x'"
echo t_restriction_with_exclude_iprint.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci --exclude foo -m 'x'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci --exclude foo -m 'x' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci --exclude foo -m 'x' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude_iprint.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude_iprint.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status --brief | grep \"foo/bar\""
echo t_restriction_with_exclude_iprint.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep \"foo/bar\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep "foo/bar" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep "foo/bar" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude_iprint.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_with_exclude_iprint.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status --brief | grep \"file1\""
echo t_restriction_with_exclude_iprint.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep \"file1\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep "file1" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --brief | grep "file1" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restriction_with_exclude_iprint.at:19: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  279 ) # 279. t_rename_diff_names.at:1: filenames in diff after rename
    at_setup_line='t_rename_diff_names.at:1'
    at_desc='filenames in diff after rename'
    $at_quiet $ECHO_N "279: filenames in diff after rename               $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "279. t_rename_diff_names.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_rename_diff_names.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_rename_diff_names.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_diff_names.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_diff_names.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_rename_diff_names.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_diff_names.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_diff_names.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_rename_diff_names.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_diff_names.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_diff_names.at:2: rm test_keys"
echo t_rename_diff_names.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_diff_names.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# If a file is renamed from "testfile" to "otherfile" and has changes,
# then 'mtn diff' should display:
#   --- testfile
#   +++ otherfile


cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_diff_names.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_rename_diff_names.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_diff_names.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rename_diff_names.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_rename_diff_names.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_diff_names.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
stuff stuff
_ATEOF


$at_traceoff
echo "$at_srcdir/t_rename_diff_names.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename --execute testfile otherfile"
echo t_rename_diff_names.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename --execute testfile otherfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename --execute testfile otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename --execute testfile otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_diff_names.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_diff_names.at:17: test -f otherfile"
echo t_rename_diff_names.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_diff_names.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_diff_names.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff"
echo t_rename_diff_names.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_diff_names.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_diff_names.at:21: grep -- \"--- testfile\" stdout >/dev/null"
echo t_rename_diff_names.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep -- "--- testfile" stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep -- "--- testfile" stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_diff_names.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_diff_names.at:22: grep -- \"+++ otherfile\" stdout >/dev/null"
echo t_rename_diff_names.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep -- "+++ otherfile" stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep -- "+++ otherfile" stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_diff_names.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  280 ) # 280. t_key_management_without_db.at:1: key management without a database
    at_setup_line='t_key_management_without_db.at:1'
    at_desc='key management without a database'
    $at_quiet $ECHO_N "280: key management without a database            $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "280. t_key_management_without_db.at:1: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_key_management_without_db.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_key_management_without_db.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_key_management_without_db.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_key_management_without_db.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_key_management_without_db.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_key_management_without_db.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_key_management_without_db.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_key_management_without_db.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_key_management_without_db.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_key_management_without_db.at:3: rm test_keys"
echo t_key_management_without_db.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_key_management_without_db.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# with no database should work
$at_traceoff
echo "$at_srcdir/t_key_management_without_db.at:6: (echo foobar; echo foobar) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --keydir=keys genkey foobar"
echo t_key_management_without_db.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo foobar; echo foobar) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --keydir=keys genkey foobar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo foobar; echo foobar) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --keydir=keys genkey foobar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo foobar; echo foobar) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --keydir=keys genkey foobar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_key_management_without_db.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_key_management_without_db.at:8: (echo foobar; echo barfoo; echo barfoo) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --keydir=keys chkeypass foobar"
echo t_key_management_without_db.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo foobar; echo barfoo; echo barfoo) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --keydir=keys chkeypass foobar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo foobar; echo barfoo; echo barfoo) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --keydir=keys chkeypass foobar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo foobar; echo barfoo; echo barfoo) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --keydir=keys chkeypass foobar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_key_management_without_db.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_key_management_without_db.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --keydir=keys ls keys"
echo t_key_management_without_db.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --keydir=keys ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --keydir=keys ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --keydir=keys ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_key_management_without_db.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_key_management_without_db.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --keydir=keys pubkey foobar"
echo t_key_management_without_db.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --keydir=keys pubkey foobar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --keydir=keys pubkey foobar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --keydir=keys pubkey foobar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_key_management_without_db.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_key_management_without_db.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --keydir=keys dropkey foobar"
echo t_key_management_without_db.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --keydir=keys dropkey foobar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --keydir=keys dropkey foobar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --keydir=keys dropkey foobar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_key_management_without_db.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# with an invalid database should fail
$at_traceoff
echo "$at_srcdir/t_key_management_without_db.at:17: (echo foo@baz; echo foo@baz) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --keydir=keys --db=bork genkey foo@baz"
echo t_key_management_without_db.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo foo@baz; echo foo@baz) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --keydir=keys --db=bork genkey foo@baz" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo foo@baz; echo foo@baz) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --keydir=keys --db=bork genkey foo@baz ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo foo@baz; echo foo@baz) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --keydir=keys --db=bork genkey foo@baz ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_key_management_without_db.at:17: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  281 ) # 281. t_automate_keys.at:1: automate keys
    at_setup_line='t_automate_keys.at:1'
    at_desc='automate keys'
    $at_quiet $ECHO_N "281: automate keys                                $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "281. t_automate_keys.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_automate_keys.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_automate_keys.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_keys.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_keys.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_automate_keys.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_keys.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_keys.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_automate_keys.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_keys.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_keys.at:2: rm test_keys"
echo t_automate_keys.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_keys.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
foo bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_keys.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_automate_keys.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_keys.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_keys.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ci -m foobar"
echo t_automate_keys.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci -m foobar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci -m foobar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci -m foobar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_keys.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_keys.at:7: (echo foo@bar.com; echo foo@bar.com) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net genkey foo@bar.com"
echo t_automate_keys.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo foo@bar.com; echo foo@bar.com) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey foo@bar.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo foo@bar.com; echo foo@bar.com) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey foo@bar.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo foo@bar.com; echo foo@bar.com) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey foo@bar.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_keys.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_keys.at:8: (echo foo@baz.com; echo foo@baz.com) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net genkey foo@baz.com"
echo t_automate_keys.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo foo@baz.com; echo foo@baz.com) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey foo@baz.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo foo@baz.com; echo foo@baz.com) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey foo@baz.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo foo@baz.com; echo foo@baz.com) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey foo@baz.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_keys.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_keys.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net pubkey foo@baz.com > baz"
echo t_automate_keys.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pubkey foo@baz.com > baz" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pubkey foo@baz.com > baz ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pubkey foo@baz.com > baz ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_keys.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_keys.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net dropkey foo@baz.com"
echo t_automate_keys.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net dropkey foo@baz.com" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net dropkey foo@baz.com ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net dropkey foo@baz.com ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_keys.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_keys.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read < baz"
echo t_automate_keys.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read < baz" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read < baz ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read < baz ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_keys.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# we now have foo@bar.com in the keystore, tester@test.net in both keystore
# and database, and foo@baz.com in only the database
$at_traceoff
echo "$at_srcdir/t_automate_keys.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate keys"
echo t_automate_keys.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_keys.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_keys.at:16: cp stdout output"
echo t_automate_keys.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_keys.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_keys.at:18: sed -ne '/foo@bar.com/,/^\$/p' output > foobar"
echo t_automate_keys.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "sed -ne '/foo@bar.com/,/^$/p' output > foobar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sed -ne '/foo@bar.com/,/^$/p' output > foobar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sed -ne '/foo@bar.com/,/^$/p' output > foobar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_keys.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_keys.at:19: sed -ne '/foo@baz.com/,/^\$/p' output > foobaz"
echo t_automate_keys.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "sed -ne '/foo@baz.com/,/^$/p' output > foobaz" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sed -ne '/foo@baz.com/,/^$/p' output > foobaz ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sed -ne '/foo@baz.com/,/^$/p' output > foobaz ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_keys.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_keys.at:20: sed -ne '/tester@test.net/,/^\$/p' output > tester"
echo t_automate_keys.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "sed -ne '/tester@test.net/,/^$/p' output > tester" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sed -ne '/tester@test.net/,/^$/p' output > tester ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sed -ne '/tester@test.net/,/^$/p' output > tester ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_keys.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_keys.at:22: grep  >/dev/null database foobar"
echo t_automate_keys.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep  >/dev/null database foobar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep  >/dev/null database foobar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_automate_keys.at:22: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_keys.at:23: grep  >/dev/null private foobaz"
echo t_automate_keys.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep  >/dev/null private foobaz ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep  >/dev/null private foobaz ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_automate_keys.at:23: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_keys.at:24: grep keystore tester | grep  >/dev/null database"
echo t_automate_keys.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep keystore tester | grep  >/dev/null database ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep keystore tester | grep  >/dev/null database ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_keys.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_keys.at:25: grep keystore tester | grep  >/dev/null -v database"
echo t_automate_keys.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep keystore tester | grep  >/dev/null -v database ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep keystore tester | grep  >/dev/null -v database ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_keys.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_keys.at:26: grep  >/dev/null private tester"
echo t_automate_keys.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep  >/dev/null private tester ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep  >/dev/null private tester ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_keys.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_keys.at:27: grep  >/dev/null public foobar"
echo t_automate_keys.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep  >/dev/null public foobar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep  >/dev/null public foobar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_keys.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_keys.at:28: grep  >/dev/null public foobaz"
echo t_automate_keys.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep  >/dev/null public foobaz ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep  >/dev/null public foobaz ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_keys.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_keys.at:29: grep  >/dev/null public tester"
echo t_automate_keys.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep  >/dev/null public tester ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep  >/dev/null public tester ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_keys.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  282 ) # 282. t_diff_outside_workspace.at:3: diffing a file within revision outside a workspace
    at_setup_line='t_diff_outside_workspace.at:3'
    at_desc='diffing a file within revision outside a workspace'
    $at_quiet $ECHO_N "282: diffing a file within revision outside a workspace$ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "282. t_diff_outside_workspace.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_diff_outside_workspace.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_diff_outside_workspace.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_outside_workspace.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_outside_workspace.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_diff_outside_workspace.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_outside_workspace.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_outside_workspace.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_diff_outside_workspace.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_outside_workspace.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_outside_workspace.at:5: rm test_keys"
echo t_diff_outside_workspace.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_outside_workspace.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo1 <<'_ATEOF'
foo file 1
_ATEOF

cat >foo2 <<'_ATEOF'
foo file 2
_ATEOF


$at_traceoff
echo "$at_srcdir/t_diff_outside_workspace.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo1"
echo t_diff_outside_workspace.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_outside_workspace.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_outside_workspace.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah"
echo t_diff_outside_workspace.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_outside_workspace.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

parent=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_diff_outside_workspace.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo2"
echo t_diff_outside_workspace.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_outside_workspace.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_outside_workspace.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message bleh"
echo t_diff_outside_workspace.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message bleh" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message bleh ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message bleh ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_outside_workspace.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


second=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_diff_outside_workspace.at:19: rm -rf _MTN"
echo t_diff_outside_workspace.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_outside_workspace.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_diff_outside_workspace.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff --revision=\$parent --revision=\$second"
echo t_diff_outside_workspace.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision=$parent --revision=$second" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision=$parent --revision=$second ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision=$parent --revision=$second ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_outside_workspace.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# check it works when specifying files
$at_traceoff
echo "$at_srcdir/t_diff_outside_workspace.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff --revision=\$parent --revision=\$second foo2 --debug"
echo t_diff_outside_workspace.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision=$parent --revision=$second foo2 --debug" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision=$parent --revision=$second foo2 --debug ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff --revision=$parent --revision=$second foo2 --debug ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_diff_outside_workspace.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  283 ) # 283. t_log_outside_workspace.at:3: logging a file within revision outside a workspace
    at_setup_line='t_log_outside_workspace.at:3'
    at_desc='logging a file within revision outside a workspace'
    $at_quiet $ECHO_N "283: logging a file within revision outside a workspace$ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "283. t_log_outside_workspace.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_log_outside_workspace.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_log_outside_workspace.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_outside_workspace.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_outside_workspace.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_log_outside_workspace.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_outside_workspace.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_outside_workspace.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_log_outside_workspace.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_outside_workspace.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_outside_workspace.at:5: rm test_keys"
echo t_log_outside_workspace.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_outside_workspace.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo1 <<'_ATEOF'
foo file 1
_ATEOF

cat >foo2 <<'_ATEOF'
foo file 2
_ATEOF


$at_traceoff
echo "$at_srcdir/t_log_outside_workspace.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo1"
echo t_log_outside_workspace.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_outside_workspace.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_outside_workspace.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah"
echo t_log_outside_workspace.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_outside_workspace.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

parent=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_log_outside_workspace.at:16: rm -rf _MTN"
echo t_log_outside_workspace.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_outside_workspace.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_outside_workspace.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log --revision=\$parent foo1"
echo t_log_outside_workspace.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --revision=$parent foo1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --revision=$parent foo1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --revision=$parent foo1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_outside_workspace.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  284 ) # 284. t_add_inside__MTN.at:1: add inside _MTN/
    at_setup_line='t_add_inside__MTN.at:1'
    at_desc='add inside _MTN/'
    $at_quiet $ECHO_N "284: add inside _MTN/                             $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "284. t_add_inside__MTN.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_add_inside__MTN.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_add_inside__MTN.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_inside__MTN.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_inside__MTN.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_add_inside__MTN.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_inside__MTN.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_inside__MTN.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_add_inside__MTN.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_inside__MTN.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_inside__MTN.at:2: rm test_keys"
echo t_add_inside__MTN.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_inside__MTN.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile1 <<'_ATEOF'
blah blah
_ATEOF

cat >_MTN/testfile2 <<'_ATEOF'
blah blah
_ATEOF


$at_traceoff
echo "$at_srcdir/t_add_inside__MTN.at:9: cd _MTN && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile2"
echo t_add_inside__MTN.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd _MTN && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd _MTN && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd _MTN && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_add_inside__MTN.at:9: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_add_inside__MTN.at:10: cd _MTN && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add ../testfile1"
echo t_add_inside__MTN.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd _MTN && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add ../testfile1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd _MTN && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add ../testfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd _MTN && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add ../testfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_add_inside__MTN.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  285 ) # 285. t_annotate_renames.at:1: annotate file whose name changed
    at_setup_line='t_annotate_renames.at:1'
    at_desc='annotate file whose name changed'
    $at_quiet $ECHO_N "285: annotate file whose name changed             $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "285. t_annotate_renames.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_annotate_renames.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_annotate_renames.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_renames.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_renames.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_annotate_renames.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_renames.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_renames.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_annotate_renames.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_renames.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_renames.at:2: rm test_keys"
echo t_annotate_renames.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_renames.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >foo <<'_ATEOF'
a
b
c
_ATEOF

$at_traceoff
echo "$at_srcdir/t_annotate_renames.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_annotate_renames.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_renames.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo.rightnewname <<'_ATEOF'
a
b
x
_ATEOF



$at_traceoff
echo "$at_srcdir/t_annotate_renames.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate_renames.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_renames.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV0=`cat _MTN/revision`


# do something to a file we don't care about to make a commitable change

cat >junk <<'_ATEOF'
some
junk
_ATEOF

$at_traceoff
echo "$at_srcdir/t_annotate_renames.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add junk"
echo t_annotate_renames.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add junk" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add junk ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add junk ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_renames.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_annotate_renames.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate_renames.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_renames.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REVL=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_annotate_renames.at:25: rm -rf _MTN.old"
echo t_annotate_renames.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_renames.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_renames.at:25: mv  _MTN _MTN.old"
echo t_annotate_renames.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_renames.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_renames.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV0 ."
echo t_annotate_renames.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV0 ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV0 . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV0 . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_renames.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_annotate_renames.at:25: test \$PROBE_R_SHA = \$REV0"
echo t_annotate_renames.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $REV0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $REV0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $REV0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_renames.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate_renames.at:26: cp foo.rightnewname foo"
echo t_annotate_renames.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp foo.rightnewname foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp foo.rightnewname foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_renames.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_renames.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename -e foo foo.new"
echo t_annotate_renames.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename -e foo foo.new" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename -e foo foo.new ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename -e foo foo.new ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_renames.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_annotate_renames.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_annotate_renames.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_renames.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REVR=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_annotate_renames.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge"
echo t_annotate_renames.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_renames.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_renames.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_annotate_renames.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_renames.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REV1=`cat _MTN/revision`

#
# annotate foo should now be
# REV0: a
# REV0: b
# REVR: x
#

$at_traceoff
echo "$at_srcdir/t_annotate_renames.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net annotate foo.new"
echo t_annotate_renames.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate foo.new" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate foo.new ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net annotate foo.new ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_renames.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_renames.at:44: head -n 1 stdout | grep \$REV0"
echo t_annotate_renames.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 1 stdout | grep $REV0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 1 stdout | grep $REV0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 1 stdout | grep $REV0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_renames.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_renames.at:45: head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REV0"
echo t_annotate_renames.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 2 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REV0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_renames.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_annotate_renames.at:46: head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep \$REVR"
echo t_annotate_renames.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVR" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVR ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; head -n 3 stdout | (tail -n 1 2>/dev/null || tail -1) | grep $REVR ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_annotate_renames.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  286 ) # 286. t_config_confdir.at:1: --confdir option and get_confdir lua function work
    at_setup_line='t_config_confdir.at:1'
    at_desc='--confdir option and get_confdir lua function work'
    $at_quiet $ECHO_N "286: --confdir option and get_confdir lua function work$ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "286. t_config_confdir.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_config_confdir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_config_confdir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_config_confdir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_config_confdir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_config_confdir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_config_confdir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_config_confdir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_config_confdir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_config_confdir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_config_confdir.at:2: rm test_keys"
echo t_config_confdir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_config_confdir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >myhooks <<'_ATEOF'
-- lua script to check that --condfir works
dir = get_confdir()
if string.find(dir, "fooxyzzybar$") then
  file = io.open(dir .. "/checkfile", "w")
  file:write("foobar")
  io.close(file)
end
_ATEOF

$at_traceoff
echo "$at_srcdir/t_config_confdir.at:12: mkdir fooxyzzybar"
echo t_config_confdir.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir fooxyzzybar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir fooxyzzybar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_config_confdir.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_config_confdir.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --confdir=fooxyzzybar --rcfile=myhooks ls known"
echo t_config_confdir.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --confdir=fooxyzzybar --rcfile=myhooks ls known" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --confdir=fooxyzzybar --rcfile=myhooks ls known ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --confdir=fooxyzzybar --rcfile=myhooks ls known ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_config_confdir.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_config_confdir.at:14: cat fooxyzzybar/checkfile"
echo t_config_confdir.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat fooxyzzybar/checkfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat fooxyzzybar/checkfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_config_confdir.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  287 ) # 287. t_database_sig_cleanup.at:3: database is closed on signal exit
    at_setup_line='t_database_sig_cleanup.at:3'
    at_desc='database is closed on signal exit'
    $at_quiet $ECHO_N "287: database is closed on signal exit            $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "287. t_database_sig_cleanup.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_database_sig_cleanup.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_database_sig_cleanup.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_sig_cleanup.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_sig_cleanup.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_database_sig_cleanup.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_sig_cleanup.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_sig_cleanup.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_database_sig_cleanup.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_sig_cleanup.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_sig_cleanup.at:5: rm test_keys"
echo t_database_sig_cleanup.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_sig_cleanup.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# SIGTERM and SIGINT can't really be handled on Win32:
# http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_CRT_signal.asp
# We also don't attempt to install handlers for them in main.cc, but there's
# little point given the discussion at the MSDN link above.

if test "$OSTYPE" = "msys"; then
  echo 77 > $at_status_file
  exit 77
fi


# this test checks that .db-journal files aren't left lying about if the
# process is killed with SIGTERM or SIGINT

cat >testfile <<'_ATEOF'
stuff
_ATEOF

$at_traceoff
echo "$at_srcdir/t_database_sig_cleanup.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_database_sig_cleanup.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_sig_cleanup.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# a hack to make the monotone process hang around with the database locked.

cat >wait.lua <<'_ATEOF'

function get_passphrase(key) sleep(1000) end
_ATEOF



# SIGTERM first
$at_traceoff
echo "$at_srcdir/t_database_sig_cleanup.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=wait.lua --branch=testbranch commit --message=blah-blah & echo \$! > monotone_commit.pid"
echo t_database_sig_cleanup.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=wait.lua --branch=testbranch commit --message=blah-blah & echo $! > monotone_commit.pid" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=wait.lua --branch=testbranch commit --message=blah-blah & echo $! > monotone_commit.pid ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=wait.lua --branch=testbranch commit --message=blah-blah & echo $! > monotone_commit.pid ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_sig_cleanup.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_sig_cleanup.at:29: sleep 2"
echo t_database_sig_cleanup.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sleep 2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sleep 2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_sig_cleanup.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_sig_cleanup.at:30: test -f test.db-journal"
echo t_database_sig_cleanup.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f test.db-journal ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f test.db-journal ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_sig_cleanup.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_sig_cleanup.at:31: kill -TERM \`cat monotone_commit.pid\`"
echo t_database_sig_cleanup.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; kill -TERM `cat monotone_commit.pid` ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; kill -TERM `cat monotone_commit.pid` ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_sig_cleanup.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_sig_cleanup.at:32: sleep 2"
echo t_database_sig_cleanup.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sleep 2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sleep 2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_sig_cleanup.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_sig_cleanup.at:33: test -f test.db-journal"
echo t_database_sig_cleanup.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f test.db-journal ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f test.db-journal ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_database_sig_cleanup.at:33: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# and again for SIGINT
$at_traceoff
echo "$at_srcdir/t_database_sig_cleanup.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=wait.lua --branch=testbranch commit --message=blah-blah & echo \$! > monotone_commit.pid"
echo t_database_sig_cleanup.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=wait.lua --branch=testbranch commit --message=blah-blah & echo $! > monotone_commit.pid" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=wait.lua --branch=testbranch commit --message=blah-blah & echo $! > monotone_commit.pid ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=wait.lua --branch=testbranch commit --message=blah-blah & echo $! > monotone_commit.pid ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_sig_cleanup.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_sig_cleanup.at:38: sleep 2"
echo t_database_sig_cleanup.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sleep 2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sleep 2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_sig_cleanup.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_sig_cleanup.at:39: test -f test.db-journal"
echo t_database_sig_cleanup.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f test.db-journal ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f test.db-journal ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_sig_cleanup.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_sig_cleanup.at:40: kill -INT \`cat monotone_commit.pid\`"
echo t_database_sig_cleanup.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; kill -INT `cat monotone_commit.pid` ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; kill -INT `cat monotone_commit.pid` ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_sig_cleanup.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_sig_cleanup.at:41: sleep 2"
echo t_database_sig_cleanup.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sleep 2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sleep 2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_sig_cleanup.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_sig_cleanup.at:42: test -f test.db-journal"
echo t_database_sig_cleanup.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f test.db-journal ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f test.db-journal ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_database_sig_cleanup.at:42: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# should be cleaned up for SIGSEGV
$at_traceoff
echo "$at_srcdir/t_database_sig_cleanup.at:46: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --rcfile=wait.lua --branch=testbranch commit --message=blah-blah & echo \$! > monotone_commit.pid"
echo t_database_sig_cleanup.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=wait.lua --branch=testbranch commit --message=blah-blah & echo $! > monotone_commit.pid" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=wait.lua --branch=testbranch commit --message=blah-blah & echo $! > monotone_commit.pid ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=wait.lua --branch=testbranch commit --message=blah-blah & echo $! > monotone_commit.pid ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_sig_cleanup.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_sig_cleanup.at:47: sleep 2"
echo t_database_sig_cleanup.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sleep 2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sleep 2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_sig_cleanup.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_sig_cleanup.at:48: test -f test.db-journal"
echo t_database_sig_cleanup.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f test.db-journal ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f test.db-journal ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_sig_cleanup.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_sig_cleanup.at:49: kill -SEGV \`cat monotone_commit.pid\`"
echo t_database_sig_cleanup.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; kill -SEGV `cat monotone_commit.pid` ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; kill -SEGV `cat monotone_commit.pid` ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_sig_cleanup.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_sig_cleanup.at:50: sleep 2"
echo t_database_sig_cleanup.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sleep 2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sleep 2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_sig_cleanup.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_database_sig_cleanup.at:51: test -f test.db-journal"
echo t_database_sig_cleanup.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f test.db-journal ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f test.db-journal ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_database_sig_cleanup.at:51: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  288 ) # 288. t_update_switch_branch.at:1: update -b switches branches even when noop
    at_setup_line='t_update_switch_branch.at:1'
    at_desc='update -b switches branches even when noop'
    $at_quiet $ECHO_N "288: update -b switches branches even when noop   $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "288. t_update_switch_branch.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_update_switch_branch.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_update_switch_branch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_switch_branch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_switch_branch.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_update_switch_branch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_switch_branch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_switch_branch.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_update_switch_branch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_switch_branch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_switch_branch.at:2: rm test_keys"
echo t_update_switch_branch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_switch_branch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_update_switch_branch.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_update_switch_branch.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_switch_branch.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_update_switch_branch.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_update_switch_branch.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_switch_branch.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



RID1=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_update_switch_branch.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net cert \$RID1 branch otherbranch"
echo t_update_switch_branch.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $RID1 branch otherbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $RID1 branch otherbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $RID1 branch otherbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_switch_branch.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_update_switch_branch.at:12: grep testbranch _MTN/options >/dev/null"
echo t_update_switch_branch.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testbranch _MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testbranch _MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_switch_branch.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_switch_branch.at:13: grep otherbranch _MTN/options >/dev/null"
echo t_update_switch_branch.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep otherbranch _MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep otherbranch _MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_update_switch_branch.at:13: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_update_switch_branch.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update -b otherbranch"
echo t_update_switch_branch.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -b otherbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -b otherbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -b otherbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_switch_branch.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

RID2=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_update_switch_branch.at:17: test \"\$RID1\" = \"\$RID2\""
echo t_update_switch_branch.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test \"$RID1\" = \"$RID2\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test "$RID1" = "$RID2" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test "$RID1" = "$RID2" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_switch_branch.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_update_switch_branch.at:19: grep testbranch _MTN/options >/dev/null"
echo t_update_switch_branch.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testbranch _MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testbranch _MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_update_switch_branch.at:19: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_update_switch_branch.at:20: grep otherbranch _MTN/options >/dev/null"
echo t_update_switch_branch.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep otherbranch _MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep otherbranch _MTN/options >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_update_switch_branch.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  289 ) # 289. t_migrate_rosterify.at:1: migrate + rosterify
    at_setup_line='t_migrate_rosterify.at:1'
    at_desc='migrate + rosterify'
    $at_quiet $ECHO_N "289: migrate + rosterify                          $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "289. t_migrate_rosterify.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_migrate_rosterify.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_migrate_rosterify.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_migrate_rosterify.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:2: rm test_keys"
echo t_migrate_rosterify.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:3: echo \$UNB64_COMMAND"
echo t_migrate_rosterify.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test -n "`command -v gunzip`" 2>/dev/null; then
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  UNGZ_COMMAND="gunzip -c"
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:3: echo \$UNGZ_COMMAND"
echo t_migrate_rosterify.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNGZ_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# This test takes databases in all the old pre-roster formats, and
# checks that migrating them forward then rosterifying them works.

# We actually don't test against old-format databases directly,
# because some old-format databases can't be read at all by a modern
# monotone -- you have to do a dump/load first.  So instead we store
# pre-dumped old-format databases.  So technically we're not checking
# that 'db migrate' can handle things, we're just checking that 'dump
# | load; db migrate' can handle things.  But that should be good
# enough.

######################################################################
## Do not touch this code; you'll have to regenerate all the test
## databases if you do!
######################################################################

# We don't want the standard db, we want full control ourselves
$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:22: rm -f test.db"
echo t_migrate_rosterify.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f test.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f test.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:23: rm -r keys/"
echo t_migrate_rosterify.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -r keys/ ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -r keys/ ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_migrate_rosterify.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Put some random keys in, with and without corresponding private keys
cat >migrate_keys <<'_ATEOF'
[pubkey njs@pobox.com]
MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQC54vVjrrqYoTfPTgWm6JpuL+kOERcN2OSc
BsWq6cb4Wm3nlymwVqJJywq6cbfygUYwmqyiRLPxRosfLGu228AhEzaM4JbAH1pgg7CwvvVd
fHRXNAXEMgO89gBjkkecxLi4U/T67DrLjkRPAilCgWLZNv8YeOG9XAPegWyr7hNA9wIBEQ==
[end]
[keypair tester@test.net]
MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQCfN/cAMabgb6T7m8ksGnpQ7LO6hOdnc/7V
yivrRGtmpwSItljht1bmgLQF37KiSPoMEDUb1stfKxaMsYiy8iTyoQ+M2EVFP37n2rtnNZ0H
oVcQd2sRsCerQFh9nslRPymlkQXUlOiNFN6RlFNcdjkucqNe+YorFX21EYw7XuT5XwIBEQ==#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIefgT/1vcuRoCAggAAgEYMBQG
CCqGSIb3DQMHBAjBYTCc+TuEIQSCAoDbSxK5UeaBREeMlP8ZBFihsxyapmrUs/ZYbieJIq+j
ZQJ+OX15hzpbk2/jqfUgYaV7uFBf8JVglWLw6SfQe3KrvFEH1K3FsIIVf2SzEvERiWUd9YuT
P6pxTwT0zUbyiKQJl+43BSYb8UWRBOsuAAJXUJ1KPRSd9BYSvysmc1CSJd+6TKsxCSH+3bFx
gH07FOzE/Q20bv8duk8AcM+9X/0Ob8hfW8Nt5/QSrc/fdutMKPrJOIaQRvOa9wulXbbmn28E
uQd8+21t22QvMPif/39VwvbDpX6a77Rg1ZOL0o2pFvpObmMnwTMAKq6ayJU+qhNpXh5T5HOw
8jUYt5GU2YCaxMczFvJousYi+5lN+rldwIxMyx9Z3pFFnbxYI5n9VuJUnqz0ZlCsf785/NXy
gZaYt7HCKgnCw4jUEK9aAqHIzsJCNOvM60dW92ZyhU6iycs9uzlW87hWC3mwEG518JShdAyX
hk0LhprJd4OEj/LJarLaTveePkFWJm4XyP5R+ByJgWOVqPdn7ILl2rRRlmpIsyTzBisOf/Aw
DF3oO2zlOPSCtPgVblQnUujuhrWy4/uldwSQC+78klzmcNG4z6UTDkThUiAKMoT27z9AOR3a
qv7e+C2ExR7ykk9lRz4836i4wMJddw5d1+AARpxGjidw5FjaTRss6NLB0k9Wo7fChFIlEjYc
N+BGMiMbkGiXLFtATQKEDqx/kDAlecN0FpljC5g6x6FYHxouaulEY0L7RkYSfVUvKQU2r6Lu
vTlEEZeNPdRtYwOz4ogqysHgZzDmbJ/AOt23u5R+O+vipNaYpv0S/vlGMJPtj2TcpgIn2ooZ
KLqSDA8igs89M3oRnyvz
[end]
_ATEOF

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read < migrate_keys"
echo t_migrate_rosterify.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read < migrate_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read < migrate_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read < migrate_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile1 <<'_ATEOF'
f1v1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:55: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile1"
echo t_migrate_rosterify.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile2 <<'_ATEOF'
f2v1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:57: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile2"
echo t_migrate_rosterify.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:58: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch1 commit --message blah-blah"
echo t_migrate_rosterify.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch1 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:61: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net cert \$REV somekey somevalue"
echo t_migrate_rosterify.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $REV somekey somevalue" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $REV somekey somevalue ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net cert $REV somekey somevalue ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile1 <<'_ATEOF'
f1v2
_ATEOF



cat >testfile3 <<'_ATEOF'
f3v1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:66: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile3"
echo t_migrate_rosterify.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:66: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:67: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch2 commit --message blah-blah"
echo t_migrate_rosterify.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch2 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:67: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:69: rm -rf _MTN.old"
echo t_migrate_rosterify.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:69: mv  _MTN _MTN.old"
echo t_migrate_rosterify.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:69: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV ."
echo t_migrate_rosterify.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:69: test \$PROBE_R_SHA = \$REV"
echo t_migrate_rosterify.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $REV" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $REV ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $REV ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile2 <<'_ATEOF'
f2v2
_ATEOF



cat >testfile4 <<'_ATEOF'
f4v1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:74: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile4"
echo t_migrate_rosterify.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile4" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile4 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile4 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:75: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch1 commit --message blah-blah"
echo t_migrate_rosterify.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch1 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >old_revs_propagate_log <<'_ATEOF'
propagate from branch 'testbranch2' (head c606ed519e48f526bb130fd64fef712f795f0625)
            to branch 'testbranch1' (head 04fe9ed6642b2e258162f948934726a3085e473f)
_ATEOF

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:80: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net propagate testbranch2 testbranch1 --message-file=old_revs_propagate_log"
echo t_migrate_rosterify.at:80 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate testbranch2 testbranch1 --message-file=old_revs_propagate_log" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate testbranch2 testbranch1 --message-file=old_revs_propagate_log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net propagate testbranch2 testbranch1 --message-file=old_revs_propagate_log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:80: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:81: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_migrate_rosterify.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:81: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:83: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop testfile1"
echo t_migrate_rosterify.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop testfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >testfile4 <<'_ATEOF'
f4v2
_ATEOF



$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:86: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch3 commit --message blah-blah"
echo t_migrate_rosterify.at:86 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch3 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch3 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch3 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:86: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# Exception to this code being untouchable:
# This line may have to be modified at a later date; this won't cause
# any problem, as long as it's replaced by code with the same effect.
$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:91: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db execute \"DELETE FROM revision_certs WHERE name = 'date'\""
echo t_migrate_rosterify.at:91 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute \"DELETE FROM revision_certs WHERE name = 'date'\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "DELETE FROM revision_certs WHERE name = 'date'" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db execute "DELETE FROM revision_certs WHERE name = 'date'" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:91: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:93: cp test.db latest.db"
echo t_migrate_rosterify.at:93 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db latest.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db latest.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:93: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:94: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db db dump"
echo t_migrate_rosterify.at:94 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db db dump" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db db dump ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db db dump ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:94: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:95: cp stdout latest.db.dump"
echo t_migrate_rosterify.at:95 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout latest.db.dump ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout latest.db.dump ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:95: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


######################################################################
## End untouchable code
######################################################################

# Usage: CHECK_MIGRATE_FROM(<schema id>, <encoded dumped db with this schema>)




cat >c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz.b64 <<'_ATEOF'
H4sICAaI5EECA2xhdGVzdC5kYi5kdW1wAO172Y7jSJblc+orHPmSVWB0i/vShQKaFEmRFBdR
osRlMChwM4r7KnH5+qE8MmPp8Ci451TPAIPxgEfI5TS7xmPnnnuuicEJe1l/sU6sfmZ3lmzo
f9vsTgJrCS8Wy6nCC0iL+B9RXAx+v/nlL79sfkmjl6oeXqp7UXx6ef36t3976YeurpKXm9/f
XmrwOuglrKshroZ1WOD38feD1iFZnVb9y5gOt9fL+39fJ667b+Ot72x+eX353eB1bBelALwM
9TPGGvoeDi/hvevWaC+gq8uXZ8DNL/cqbe/xX9Lo0+sbf9388te/bWT9LJysF1m3jG9jvVxZ
9SKc//Kbz4Q+BSMkQ/mRH8MkGTBkBFO+HwQYDOCIRHGCZNDwt0+/RTiDMgDFyQjFfAKJA5+k
GIakiRilAeMHMEUFOI3566US3svsH19H/aIZ14M2jwthyDvW6OS6yA/PX21+e8cSMRIwKI3D
UQiAj6IwiQdoFDExTON0hOAYsa6TConnEgETEQjt4zGCwXQYxDQBY0EU0YCg6AAhoxjHYQpn
kJ8usf68RL6d2Rv+/iXCzLqWECcxxEdhP0RIEsNxQNA+ioE4hnGfDEmc9PE1LhKHMQmvsDEg
YHASjWKUoBASQWCKZAI/QnwajumI/ukS889LVBrJbISvS/yBxU/+vtK36dLS7+aXPJ4/vYe+
kf8NA/9gfFiXTRf3fbyyK67COoqjL0Oec/ivs7xJua8w/VkGCf2i8seUTXaEOVEiZz7f/Pvf
39yar9GCIPYjQMcYgaN0yMQEhmExhYQ+QAmaQHCGxmAyDsi3omXHnE34CeUb4Z3R/iz11miH
7HlvnEMdHs47o/1ZFj2jWa9Iqj3Nz99F+45BpV+lIO6Hf4RxN3ym0itdvvDis9r8Tqg/mNTF
pZ9W6cotkMZF1L/0ceN3/rCSJZhffv2PX9/S0y+q+o1E/hH+D5n8spxvpLLyy/itudaZ6sZf
F/fk+XMt4a3u4+q5gnsfd5tfHn5xf2vk14FBUQebX9aEafy0++HK75fa3IMiDf+xXvx5WX2a
VP5w7/5rhHXU6cxuzxKLvHy9ZgXt1//xvJP/TKP/WBf2P3/9IuTPdz+9POX8dcGfXn5fz6ev
wz9r/Nsb96WI/QTzH3XAX7d1uMVrfq+4rWRLqzWt/5jvrbL2Axbx+lf8dbf+yeb9WOf+paXu
v4T8RqgxGIMZigkDJoRpFEfo2A8iCo8ZBCZpP46J2MeQpyaEOAgQyg99IvTpVZcYhIRxGEFp
lKJomkF8hqYJH36z3PHmiF9a2BJwWF9YuF9OR0soNN1ilzMlw+dFGC140s6ZjJ55XdYsbdYs
e9noQmNfdjdFPRPKTE+KHpuznt8XXZVH7XJTrHxQdV6eNV5XtLxR+suI9PxuOvMCrFmu6Gen
o547541LW6tM8uRSo2Uw/kRS/gUgURFOAIb2kdUtoGjI+KQPI4QfRcEqtwgBE3QE+1QY/78H
0gfoQUVIDPs+ePoqBocxFEViah0MU3CE0AQgAU1QgER/EGtHnUeM19iEhdV7NbMJeqQ1WTI1
7axcSX/rOdmtSoBPiVoja50s5KyHOLewRzcCdNkFwHDjMWygyomYYEtBZI9c9Ib146CJarYR
Fa7RvQssztKxejzG2ES19Kj0qm3ujldfS1XH2dCmZzvl+XCZu1y3sj07FQ+tg7I3vdHPwPoA
AhGxlmosin0U4KuvWwkFgmitcTASxBjuh9jqAgOGJt5klJOes/2kq4qmLfK0Mmi2MhOxBOSg
8wY28OdFE2Ckz9PFEsaVINFR64RxYxUn8yCstMkrdRFyhDCU+Zpx5itFgSyUNpf4tpjm9pR6
5ez6+7NZ7qfaK73ebZTSb8TaU2Z7U5ZNkpepHey9tCjTnabthXTsWc2p+kf1mWI/r7U/c2x/
Rqx/NHHv9XFf5/jJ5n67rX8u+1dij+YrsUVYuper104AtuUN/Za0V+WxAKrVTIOmOcQqeDyr
8VO4NKbXX31nI9Pl3rS31KPZkscYLGqAGgTCqoXkT4+w3TPKtfHgKZjTiVWKCcAzMSUoOvrL
WelsU1o6rt5eTWWTNEOC8za+zb1t5sbhPyX0Nx72T/LzazLv8d/vWaq9aTWawzVuB/RKM17N
PzzuIV06zqQE2T07jtSfKnGDFbuiDStsG/NYpdEOTnY78qaZ8CRQ7vmwm5175Nr7fn85GPQA
5Cm6jeeapou4zTR7njXmCHe6TW+SGxt1jNTxW1oFrBG+3T2UcZevPU61kuMzJYe5id92bb+z
6teVqb9+evm1fLrF5wvwx4vu9cXml7Auijgc0rr6iWV7dXP/1akV8SMufhp5HTV0cfzy+arh
lvZr5sQgnX5n9rr433/+yQzrBIUfrGPTaOV/CuanW3ze9jObnlOvpqeO5n9660Faran62YeQ
+G9x9HmCr+3U717lieGnl68wfPq87E+/L/kNJ7eqwGO1zq/O8l9rwH/Ul8+z+K8y8o2hfflL
/9yW3+FJ467/9LwC+OHw11d//DOZWTegm5tn2NXz/nEnL8+llP0PwvLtjX7JMxKPsZDBAz9E
URTHkRCPfAQJwzXvgrXzxwC19j8x/SwZw5qgcfefz3/+vYqH9Z2qmeFsbgMvmgsx17LoxBiP
oi156c7tnWYvHgcGvzGkv4fUBjIiblfaE72/x1JOi4c8nsZjeztx2uZ4rJtLfB/b6X52oFmo
I60gZIkr0wqu1CowYi5bC10Wl5wolJFebLMjL27ZtZTa0s2vOApDorMZbh6LapjgwLolyAny
eLyoKVMrin6Z/F3+6O3h4cuQdJG8LpvnKxWx+LUPSeUxoS5AIC3iWWGfb0/jxhuOsFre63R+
nHix5UTat8p1B+YAz0+H+lYp1FWEZvLmPspBazTMOlTNiRKCOuMW/dge7gZVHS/LZi2ULCXS
uIHi1wCsxuWon2XikeFpP9QjSvrHrELp9piBU5dfMdhW1W3kAFfJQW61SeFWteA8xO1m8urr
NOkx6xB0mcwwiwjddXrQF8oa78e1y95LQqOOM5YE6RFi/JxVdh3d0SjGS6XZtoTJC2oaHDfh
3fGAMQwNuJ7yMNBuWSzCGhkuIS7Vh0Sy2ApsEfq2RN64d7a2/TjJnCSXwUWBSj5oUG7mLXAA
G6HbO+eHh0nTruV4ep6Qc+XcrrTMSz5XXplxdEMdktBwMuy9l1MJNSlnhIF87GJyWIj1Z8e8
ruZoQ5rNzkvmfsq9cbk7/LKo3tFizqq34Ae0oSCKG7WgmRlvCmd2KVNhaFgUvxxhMhsyUafs
0GGjabsRiH1Zx0yACKljR6dYyi77JiRzWDXh49Fhx7YL99HoBobKe8TUmwTbC+5ZHGbrTMI8
UklcGOmlvdHg2LgoYqSA7V2Pt6jANiHm09Ys5N5wbVN3MK5XrOU5Ri8veHA1cr5dCkSkFmVk
LTso/f4c5Rq2IYuJz8OFA7tOyCSiIVyav0BJjMe4ehryymVqzlAowTTgYXSVBMvhv/9QKb6R
iv8zCrX+/I0a/VAv/okiverQ63J/KkPf6N4Xl89ENIwScMzgOAXTvh9QIGZIOEQQjAwIhAIR
BlPU2yqkyftIY+H97tzuz3KA8abAseaFZfG9yvI77jYeuMTcAX0bspofJAFpUSWd9/uqMSnV
IG9GVIVb6rqZ00d32g9lM57lochuAxKUiWqKGHVIz8daE/hLgPQDOEy+1rvpTKfWXJuQhgpX
8YhRFdoNle7B0qa+hmaE9qd+F3emeGOqvjgd57LITedSGKku6uSpEPUwyvJ72Oox5Nad6KCI
4I6Uc7cIZ5Q5wfz73397B3RRTOMBQREREeMUSuAYg8WBjzNRGK/f+OqZ6DjC0egp11n/n00d
1NO/r/b0/cAR+OOadV3r1hY4WoldkkpzV6HcEE6hjhrncMP1dkuGAW6XWFXM5XhtFWUen2+B
Obm4Y9nO6Uk9Tqe6B+r+jqI0exMWX8OVgJWQJkmo3fh4XKMNkE6OzjqClhg0k3BZnsfhpKb4
ZWuRFN+pWX46smmxS2zV0x+0Gxt7xmGPcWLPHXXTWeYb4L7LoC5+pP1qB/7hV+HKnG5+zaOV
oc8Tjx8OkL45avlj4OfjlPCWFm99UPHTAb+7ks+BVl/yHP/jMcoPq/uyu+sukWv9DGAUQ2kc
8eMwRtE4QFcDDK+dcPj8E9MU4+Pkb++e9N0zfvotJGEyjgiEiXEaECgZBAgGg4jEQQwoBAUU
QwCYRIn/luDwGoWJI5LE0QCNUYJGSBQwOM1gK9NJH4PpJ+cx8P7g757x028UQTMkFdIBGZJk
yBBBCGjgRwx4WiKUohEGD5/NyPuDvxvL/47g757x028MQiKhD8doQEcAXwetfWboA4xgAAwI
kqLx1SpSBPHzJPu/c5j9feb9/2Pr+J8IzesOfSFHvPpSAqdWQsIRTVGIT1Ekgvt+SMQMwGGG
RIMQp5jwI2r06begW1l4e5417a9LtFdm1yYynxf+vnmzjO8rgU47n4Piy5DworOFL6VvIY4G
Z03vIN6gu/4shfF9fkRXFZT4LZBqrKBpSpEtdnXPpErVxyTfmIVeCeTF9Z2wRjxEVh837roT
QcjlpXRVLqFqB0l0Px9BIJjuwlncse+5OwCI7+01Gb3dQ50+LuWmPPSPU5HLRr528YKrWTLU
gFJWL63w4wHmT6BlAOXTNI1TIYpTJI2FBGBW/cGQGIepgEIDcu2y0JD6GLT+fbjV3Rdor7Mp
nYoQM+9BeYXfhre4CZdtDi/LmZ0Jktwre3GpnYXrrWvLTReQhBdSSelkuY6ZFUKDF1JnL9oP
hwNUrQXWWECgNNGIby7L3omyMyOMPR5RTmXN+VYm246InCXsRSW9C56pUK7Zc03db6GJT9ut
EgnFxNlNRQGXrmdSJ+iNhrErZLrhcNHjNlsGKg+BcsPhaMzfDS8G+yRAcT/GqIgK8ABfNerp
dxiEYiKEwAASBCGMoh+DN1xbyiQu6mR97ZbTzd8habAX67eRdedBIlfXpXPYaC/eTAz3hw6J
D0YmpHLHGybE+nFmUbbEo/GV0QbqcOFu27ral83lvi3jDKq83cRtqAt1C12tO5OjdYVzJVJ1
WAbh3pE9PnpIWGcBhomdQDiLUJ0wkSTZdYrIITufoeSqs+e7yaNCEG2Y5kj09RnlwyCj/TEs
gvNMUPpi5/K7kcV9BI0IEDEBRRGrLKyFAsFDOqIiABMMTsDhajvpEPkYsn1dxqtQPTFGmcFz
vDWJr8XbuNoN6SXTGSnu8ElZ7V0PFIvCjvQVEeOwPTUXbdQnDBMVl8DqeN6peQZrj9ETVDp8
MMzAcD1p5GW7cb0HJGX1mYtx+e6WSh24kI/KsL/dsVtvVLGYSsOrJA4n3Fo7+wtV24POFzAx
ZpR15qniWF9dk9luLPlRWGjQY53EireZtL1lgS/ojofZd+NKhYTPAJLxfTQgYGTFlvLJiEAj
BkUCEmOeDgT4KPYR8/VTrZV/orVK1TjJGaEGslKsc2/wiXVEibnnuYlLhHOWErK59MCOb/Yx
z5tLyXEWdH6ELblvbg+nXbdfZ44ssrHv+16BwWHfxBS968dbsUMtR0GQy9m2lJicWVyzHimH
aEPRRPLq8nl+f5KXFgKKcXk8AC1wnopSGwpv74EdIOQULHeX8BjKq4bsfF8m/N3QIjQdRqhP
BYDxQ4aK/DUrkYhCGJSIAzJiKPL5WAIdfwzaP6G1qe5Z4vWWJwTt1NSJhrVFtiPsIt+g2hcZ
j2bEUat2mJ61Vk6ibdFm8aPTSz9P1X2ES+gtmHrQthtqe6O2UFm2p+DhL9cmP9RxZIFZPiN+
crqpBKgLBrFOc40GXdMsKq4mvlbvHx3UmIFDauKNf2QJtaHtHEW0PWwDjA79B91Tl1DmdwAz
31/K4JWwoR9FMPn8TI4g/JCMQxx/Hsb7zPMDJiyO/YDxPwbvx7RWP01n0zzBghrJth71dXi4
TMCd5d18s6eIMBn1QCqXWiHH87E3bjZPIPskj3bKlp/UixZdDNEoKWSTELGcwtVhWzRn6hDD
24plTLERza2hJlAB8nFqIXdRqZNNiKcr8KmBlk+GLvEzbZxhp+V5b0wf4kZxh/JSjg6m0b3R
cleSPqoGlfZ+ob0b2TgCaxkjY3Rt22mGpkjcx8PVk+MojKEE5q/m3Qc4ID7SE33Yfx05T0zW
qnXZ+832RBiXiM+53cHOHfkIb2EBSr17Wg9FR7dUgC3ovN83ZhJ5ZsOmN4clL6IM9SQzbHh3
D1tHbAC19OC5fMd5V6gWyMKYl60bENPckncDnRES2wfQVqylZIuLxV6MZ4izleTAXalsjHF1
U8Og54rb6WjLKbk13axEIi4DxrW6vBtagqAYPMIAifoRHPjMChuMMmC1sxTqM2s3tFa0AGbi
j0H7JzRBYSaWIAgTsxDofu2ThqRVJSrUNDCXbTxCO7wTPdsKrkMDoXSk6YhktI/iYKskrqSW
qvVhap5qdENTdjdUh1TqDuLSJHtIxXduGCYHlsOuoQ1kX3NM0RQ0th3zq5g1qcmz84PaE1SV
2mqsd2t+kI26CWO2Z+bbvsOcskD2ldnqw9xfAoag3w3vmvNkDIcUsRqvGFu9uI/Rz0cHIx8P
1vzH6cCnSCJGPgbvxzQhu3neqnK5hhl5fbo9spma2Wo4IKsRACIdjf5DEqjD5FieVidTZy9u
MpF49WiE1GMgMz67EGyJ0CYXcHoZO4PCTl61vytLsytg3L1zWg4R+tFlBWgCM91HS9Cr/VGA
ME9Zvdn2qOATJLF0Zo5HN6rYjWbxO+xyq6H6FgndoxW8nWJO1lj2/ft9AhlgMOyH4crPgAxW
caDogAJYyAAao9dWHVn9F/j84MP7e/s/Qdxoxk+YkB2iLgAHBZtKB3YyzJEQYleYhriwd51M
OQemnNKzuBweRWQPtamq1K5DC+XVGGhAjoK/GVHnkmiBpFEt76KygoPyooJEhtLVPigXqD0x
eOcbY3+Hmtw/etsKIpcyIScMPcZtvbdqItEbrN+YhifB6QSG7obscPgx36URt+1ke3w/vPBq
VRGfWcWWjgiYJEGIMSuyRBBjIbI2DVgAsAiloo/B+0HJ5cEwOv2BZGGpTikqP2TyfW0iTjKj
58BD4UdCmBdWCQNKxuD45HkQeR4DoUTreyc9QuROCqtUZsbGxznafBilO+wP937X8Q5ycJpd
68FNpdjVlNCP6yknqsYg2luRLoje20eh0dnDldxGF9LG+CUBhLKZCsxnjwTkdLXaS47KbMVF
5yvw0JJ3QxsxMB0AELxWrZh5+tlgZeya3AQIVyeAxAwSYRT5MWi/1YRQUh7hXqxc51TIe28O
UDhxK+UWlHot7yLYc3T4j5+1dJXG/a1wbTNxF3fUy2uuWwLhWSa+8bLLrJdKqlna6JUmqu+9
wsvCSStdzLCupca7s37OD/KOTb79jvb0dwE330U8f42o8ac1K4rCWxmv82ugcg1oJZOeKaWx
rsCwNFhfZNRdF2Dwayek8+HipfnhbcLsctYBGFqEIw4pUrvHiIjvLp7HSVAeazfJwV2m2gMj
ieyrjxiAvPdtIbKK1+XamHHGtnUxZYnGDRJNOOXT6r3lVdalxosWiORppiTh6ohC7CvdiRNZ
nqU0c/+IBga6yJ5mMjwhTiXvkYIgB7Szm8sNNEGOzgpFBwS5TqpdbCUm5m8xpu0/0GquVYRa
GQFCdM07H0Zjn6EZBiNDmMJIjCQiGkNA+JGzyZ/movaTXLxoLOpN8wIfAIu5W0reSZ2Fh8ve
S7jFnDMxVNvdwT84U38fgWB4d+mR94e4IQjdu3Y+5EjLypfzZqpz/ZbecoSzWP+E7CRUsZKD
rRA7ALusC9EG5mF2oN73tY3N22WeMyYyBEUD6dkZI67pO8cyH9pmtqZr3o1RIrbhdOUNAnOG
hsH8Enp/fY6JVeiwEPURhkLh5ynU63PhMUVQeIgjNBUGcbT25x+D9k9UEf4xQmhL9rPERd6E
7sJtpq/tezYYGcgR+dFRvpcUkVHZIXM5Ha9Fgru7ye2kSDzhlVgL+B2X8UnfjFzYB3K8V8KR
2hk3cvQeftIVq2QHcX/gwW7fSNs7TyOlRGvLVSnXAmPsES6u1o53f8zk1tLCfhI20v3sMI2T
RowzXciMy2M0ZJnHQVXMd8O7tuwwAp6PUKxqh4SrhcF8mkBRAo4IKozX+owzK8jox+D9mP3Z
BTPeZj0iHtcmEdDoRcmMy4GvNcVUORkY81aU7cP1SAgPkaQS9NTZhrZnV/HAtoXj0vrKOjFg
zE1k5az0GPeP+nDg7LGuqwscaUGJ76M63LncrenBffRQwr2doaOCHpyshG4Vhe1ORpNpBjKE
RFFezE3YKmcOv2phd8d29/0ozKOCpLOmC/Qbj+V9Obb/p4/lPQ/G/zLE0/D5I4PPQ/76v/MA
3h+T/PSQvP8zn1l99zDaHtPgsNtp7LzHHeNRV4noR22xBLamRXJJnLa1knUw06LxVk5j5UyD
BW2P0HnpNvB9Ru+TgJssZzjs4MzcjdFXYOpOkOZSRkv2dISh/Vg5ZwitUEKNHu10r5gtrDPy
oVlsmCqzajhuOroHAHF65qxQW9C79yqIlnQrGUH0CG7ne96zloIIk7xrtF1e5gXL6gXPGpOY
Vuo4b/vLTtcuwNygTZ2wvb1ry9l0EReMDC9e5dg4msKg8FIhjcLbz/b+COgHzge+A1RETdOu
ec2cRAbTDvl0lPMUUb2p2OV71OPTs5cny8DEA5xf1NMpyWKALdEWDPOm3/boViqFwb+eXEos
797at2fmrMhJbcutfCqMU7DnKy8qH1ugjh2EEhSIx75TrqagKHAwEnURw5tTxvJoOYRp0aX0
vMWU0SxkfZd268rGkyV2wD87O2MspQGtl5SYnHabGViLOyeNUZ2Tf80hyk7ABpARbvcKTqnx
WGZudyG34j3Lxyt0MSZ/spNkH2n21Q6MsLhJfO/GiHIxw5LKU7tGQFb37VmynXoTiKA08VOM
AUYhzwhzY5wWqUOccK0zwmun2K10rgwUzc/NXgceOUbiI3CGxHz3jn2ge/s+BWzjy44tpDib
eW4TQdHj5m1WFY0jFO3sBijUIHB+pg4YNgoWtAWvOwZve3IbVFI4IRfvdhSrVCh8uj7Y0lmj
0muWnGV+UOqHbC9O6FQ4sm3CAevpED0OuSSfzcpZCnWsNoO5yO4BwpFDIMzPHcPPtnwxusWp
l1ww665CLnQdsPWdEvX4yN3so+j5hJORgDFFSLdSkSZL/HXH4F0lQEPR0x5BDTZ75InhfEkO
ZaV5LZ+zc+7sud1gK2rKS3d7WY560h7yUtv3MXGWj+HkKW67kZwcF66n9n6cLbh4kCAJBpi7
TaccTW797PlccCoOIZWr8tRH8hkk/KE+M8QHduwD3vr7HUNPF3vV83XHtgzdSkW5qvR9HhTX
TMpJ1XW2bEw0olyaWl3nWFr02nqTzMQAfBM51ELOTkZTOEDnkaOy8nY/iZeJOwzF6OpeIRrn
eG3V2mi4U5hBwxHtWPhjgAaI09qx3B0EydS9TYqyfnu9tgeR4Aw/ux6PmAdNg1wdvDhOHME9
48bNwQypGFUW6oVg1uyQxY6xU+pbhwMtAz3iIUU3EQUdC4I5GfZEgWGJmfYY0KwndscKZhXx
TheYCsFyYQliqp3mVRu3GITCWys7wCfloCBBIURoUW76+pA1VSkhWdMwkWYNPJlkqMHc6O2l
FeZ6RHzPbo0rHlRhuJOs3U2Jqtw0bHBUJleG976D9XfF2NgOuYjhVFY7Xt7idVgYdwD45IhM
ziVNOM4MHft6QPE2OPBbJMyP7kM4kWHr+4kQoiYpJzek0rXdppBMu+2mfuiFrTzoNqjsQ3Gd
JB61axAS1wbNH1qtyWjS4apyiE+uPCy7XTOdRFpUxENxmA39bLAbR/ZNQ0HRNfmSh4Id2OSN
R7R/JNgHHM33j2jbx4vbCRo78VvMOMDcUUhjDffmsjDkShezbtAKHe0oKNp6+Vb2dnFkZA+o
4bKNhiERuJHEFUZ45dT4B0FJg+B8YL26LBSStP17KELAAP503EZFjGIVfrfP9ytfY2S+JtDg
69bFRzaefE1dP3Ox2VEBhK9dkAaneoq7VlhO5s3fNydzTHjj1PvEXrsEhmQ5ZwSsNdOxIh+A
XRpUj7vTbpyJVhUIDLFF0dKuziLSFIRah2WhlYuiSLVVJMKaEYViDpktTm7NxS8uctE9IrXh
E5hIZEFgu+tGSQwh2arJBGBucWL8sYTc1//IYGiabP1t878AuMrZ/Vg9AAA=
_ATEOF


$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:261: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz.b64
else
  \$UNB64_COMMAND <c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz.b64 >c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz
fi
"
echo t_migrate_rosterify.at:261 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz.b64
else
  $UNB64_COMMAND <c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz.b64 >c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz.b64
else
  $UNB64_COMMAND <c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz.b64 >c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:261: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:261: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz\" != \"c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz\"; then
    mv c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz
  fi
  gunzip c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz
else
  \$UNGZ_COMMAND <c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz >c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped
fi
"
echo t_migrate_rosterify.at:261 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz" != "c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz"; then
    mv c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz
  fi
  gunzip c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz
else
  $UNGZ_COMMAND <c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz >c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz" != "c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz"; then
    mv c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz
  fi
  gunzip c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz
else
  $UNGZ_COMMAND <c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped.gz >c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:261: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:261: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db db load < c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped"
echo t_migrate_rosterify.at:261 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db db load < c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db db load < c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db db load < c1e86588e11ad07fa53e5d294edc043ce1d4005a.db.dumped ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:261: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# verify that the db actually has the claimed schema
$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:261: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db db version"
echo t_migrate_rosterify.at:261 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db db version" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db db version ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db db version ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:261: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:261: grep c1e86588e11ad07fa53e5d294edc043ce1d4005a stdout >/dev/null"
echo t_migrate_rosterify.at:261 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep c1e86588e11ad07fa53e5d294edc043ce1d4005a stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep c1e86588e11ad07fa53e5d294edc043ce1d4005a stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:261: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# now do the actual migration
$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:261: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db db migrate"
echo t_migrate_rosterify.at:261 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db db migrate" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db db migrate ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db db migrate ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:261: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# and the rosterify
$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:261: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db db rosterify"
echo t_migrate_rosterify.at:261 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db db rosterify" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db db rosterify ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db db rosterify ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:261: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:261: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db ls keys"
echo t_migrate_rosterify.at:261 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:261: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:261: mv stdout expout"
echo t_migrate_rosterify.at:261 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:261: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:261: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys"
echo t_migrate_rosterify.at:261 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:261: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



REVS=`$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db complete revision ""`
for R in $REVS; do

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:261: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db automate certs \$R"
echo t_migrate_rosterify.at:261 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db automate certs $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db automate certs $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db automate certs $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:261: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:261: mv stdout expout"
echo t_migrate_rosterify.at:261 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:261: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:261: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs \$R"
echo t_migrate_rosterify.at:261 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:261: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:261: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db automate get_revision \$R"
echo t_migrate_rosterify.at:261 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db automate get_revision $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db automate get_revision $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db automate get_revision $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:261: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:261: mv stdout expout"
echo t_migrate_rosterify.at:261 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:261: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:261: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision \$R"
echo t_migrate_rosterify.at:261 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:261: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:261: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db automate get_manifest_of \$R"
echo t_migrate_rosterify.at:261 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db automate get_manifest_of $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:261: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:261: mv stdout expout"
echo t_migrate_rosterify.at:261 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:261: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:261: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of \$R"
echo t_migrate_rosterify.at:261 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:261: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


done


$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:261: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db complete file \"\""
echo t_migrate_rosterify.at:261 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db complete file \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db complete file "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db complete file "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:261: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:261: mv stdout expout"
echo t_migrate_rosterify.at:261 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:261: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:261: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file \"\""
echo t_migrate_rosterify.at:261 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:261: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


FILES=`$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db complete file ""`
for F in $FILES; do

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:261: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db automate get_file \$F"
echo t_migrate_rosterify.at:261 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db automate get_file $F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db automate get_file $F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=c1e86588e11ad07fa53e5d294edc043ce1d4005a.db automate get_file $F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:261: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:261: mv stdout expout"
echo t_migrate_rosterify.at:261 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:261: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:261: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file \$F"
echo t_migrate_rosterify.at:261 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file $F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file $F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file $F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:261: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


done




cat >40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz.b64 <<'_ATEOF'
H4sICDMaKEIAA2xhdGVzdC5kYi5kdW1wAO16aY/bSLbl59KvSPSX6gbdLe7Le2jgkSIpkuIi
ipS4DAaN4Cruq8Tl1w/Tbpftst3IrOk3AwwmjbQzZUbcyxMnzj03SE44yvqLfWF1iz3YsqH/
5+5wEVhbeLFZThVegh7U4f0fcduE92H3y593v9zBcH+pm/GlfpTly6POukf84eXz11//+vLx
giZ56eMKZHVWpy9JFpfR8DLELejBGEcvwfLyp//40+6XT7P/bLZtrrzJ6uFlysb7Nt0zG7Km
/kcY9+PwtycoH/Hul4+JfZngd1/bDFuEqKle7vH817gOm2iLnkW7X/7yu/tMsjL+RxSXI3i9
y192v2TRb7N++G2yYeyb7X4+3+HroJewqce4HrdhARjibwd9ewevlw9/2yZu+q/j/e01n48/
fjP4NfcoS5KXsXmNsYV+hONL+Oj7LdpL0m839Rpw98sn0P6cRR8+fvCXjzcn65ZwsV9k3Ta+
jvVyY9WrYP35V8CEgIIRkqFABGKYJAOGjGAKgCDA4ASOSBQnSAYNf/3wa4QzKJOgOBmhGCCQ
OAAkxTAkTcQonTAggCkqwGkMbJdK+CCzn7/O+lUzbidtmVbCkA+s0ctNWZxe/2v36xtSxMiE
QWkcjsIkASgKk3iARhETwzRORwiOEVueVEi8ppgwEYHQAI8RDKbDIKYJGAuiiE4Iig4QMopx
HKZwBvlpis2nFPluYe/421OEmS2XECcxBKAwCBGSxHA8IWiAYkkcwzggQxInAb7FReIwJuEN
NiYJGJxEoxglKIREEJgimQBECKDhmI7on6ZYfEpRaSWzFb6k+B2LP+3SjWVtn1WgX16KePnw
FvpG4CsGfmZ82FRtHw9DvLHr8/75POR1DvBxlh9S7gtMf5RBwrCq/Dlj0wNhzpTIma8f/v3v
P1yaL9GCIAZRQscYgaN0yMQEhmExhYQgQQmaQHCGxmAyDsgfRcvPBZvyM8q3whuj/VHqbdFO
+eu9cS51erpvjPZHWfQazf6IpDrQ/PJNtG8YVIE6S+Jh/KSy/1Lw3yf13+vpj0T+c/jPMvlb
Ol9JZQ2q+EdzbTM1LdiSe+X5ay7hvRni+jWDxxD3u18+lowfjPwyMCibYPfLtmFakPXfXflt
qu0jKLPwH9vFn9IasrQG46P/fYRt1MVi95bEIi9frtlA+9P/eL2T/8qi/9gS+59/+k3IXz/9
8PIq5x8T/vDyz3w+fBn+l+8L2O+Q+iwCP7zb3+kA2JZ1vMfb/t5w28iW1du2/jzfj8rad1jE
21/xl9X6F4v3fZ37t5a634X8SqgxGIMZigkDJoRpFEfoGAQRhccMApM0iGMiBhjyqgkhngQI
BUJAhIDedIlBSBiHEZRGKYqmGQQwNE0A+Ifljjcn/NrBtoDD+srCw3o520Kp6Ta7WpQMW6sw
2fCsWbmMWrwua7a2aLaz7nShda6Hu6JahLLQs6LH5qIXj1VX5Um73hW7GFWdlxeN1xWtaJXh
OiEDf5gtXoA12xNBfjnrhWvtPNreZJIn1watguknkvJvAImKcCJhaIBsbgFFQwaQAEYIEEXB
JrcIARN0BAMqjP/fA+kd9KAiJIYBSF59FYPDGIoiMbUNhik4QmgiIROaoBIS/U6sXXWZMF5j
UxZWH/XCpuiZ1mTJ1DRLuZFg77v5vU4TQIlaK2u9LBSsj7j3cEB3AnQ9BInhxVPYQrUbMcGe
gsgBueotC+KgjRq2FRWu1f0rLC7SuX4+p9hEteysDKpjHs43oGWq6+5o03fcyjpdl77Q7fzI
zuVT66H8h97oZ2C9A4GI2Eo1FsUATfDN122ESoJoq3EwEsQYDkJsc4EBQxM/ZJSbWflx1lVF
01Z53hi02LmJ2AJy0nkDG3lr1QQYGYpstYVpI0h01nph2tnlxTwJG22KWl2FAiEMZbnlnPmR
ooksVA6XAkfMCmfO/GrxwNEyq+Pc+JU/eK1SgVZsfGVxdlXVpkWVOcHRz8oqO2jaUcimgdXc
enjWnyj281r7M8f2R8T6exP3Vh/3ZY6fLO7Xy/rHdv9G7Mn8SGwRlh7V5rXTBNvzhn5Pu5vy
XBOq00yDpjnELnk8b/BLuLamP9yAu5Pp6mg6e+rZ7slznKxqgBoEwqqlBOZn2B0Z5db68Bws
2cwq5ZzACzGnKDqB1VJ6x5TWnmv2N1PZpe2Y4ryD7wt/n3tx+C8J/ZWH/YP8/LKZj/g/71lq
/HkzmuMt7kb0RjN+wz997ilde86kBNmzXFcaLrW4w8pD2YU1to95rNZoFyf7A3nXTHgWKM86
HRb3EXnOcTheTwY9JvIc3Seroeky7nLNWRaNOcO97tC79M5GPSP1/J5WE9b4cs/f8HGj33Pz
bB8tzb/X+X1P7E+zgI/8/cpJvfx5eHV3WbTxMttm7IcPr1ckIBz/8tGY/YzfG6f7pX0Nu5mt
z3fy8ppKNXzH6K9v9LcFJvEYCxk8ACGKojiOhHgEECQMtwUPtpYTS6jNeMf0q1aNGzPi/r9e
//lbHY/bJ3W7wPnSBX60lGKh5dGFMZ5lV/HSgzu67VE8jwx+Z0hwhNQWMiLuUDkzfXzEUkGL
pyKep3N3v3Da7nxu2mv8mLr5YbnQIjSRVhKyxFVZDddqHRgxl28Km8cVJwpVpJf7/MyLe3bT
cEe6g5qjMCSyzHD3XFXDTE6sVyUFQZ7PVzVjGkXRrzM4FM/BGZ9AhqSr5Pf5styoiMVvQ0gq
zxn1EgTSIp4VjsX+Mu388Qyr1aPJlueFFztOpIFdbSuwBHhxOTX3WqFuIrSQd+9ZjVqrYfap
bi+UEDQ5t+rn7vQwqPp8XXebQrOUSOMGit+CZKuYZ92SiWeOZ8PYTCgJznmN0t05Ty59ccNg
R1X3kZt4SpEUdpeWXt0I7lPc72a/uc2zHrMuQVfpArOI0N/mJ32l7Olx3tq7oyS06rRgaZCd
IQYUrHLo6Z5GMV6qzK4jTF5Qs+C8Cx+unxjj2Ca3SxEG2j2PRVgjwzXEpeaUSjZbJ3uEvq+R
Px3dveM8LzInyVVwVaCKD1qUW3g7OSU7oT+61tPHpPnQcTy9zIhVu/cbLfMS4KobM01eqEMS
Gs6Gc/QLKqVmxUIYCGBXk8NCbLBc87ZV5R1ptgc/XYa58Kf14fLrqvpnm7FUf8VPaEtBFDdp
Qbsw/hwu7FplwtiyKH49w2Q+5qJOOaHLRvN+JxDHqomZABEy14kusZRfj21IFrBqwuezy05d
Hx6jyQsMlfeJeTAJdhA8SxwX2yJhHqklLoz0ytlpcGxcFTFSkv1Dj/eowLYhBmh7EQp/vHWZ
Nxq3G9bxHKNXVzy4GQXfrSUiUqsysbYTVGCwokLDdmQ580W4csmhF3KJaAmP5q9QGuMxrl7G
ovaYhjMUSjANeJw8JcUK+O/fS9QXqfg/o1Db71+p0Xct5b9QpI869DHdn8rQV7r3m71kIhpG
CThmcJyCaQACKokZEg4RBCMDAqGSCIMp6scqpMnHSGPh48HqjpYcYLwpcKx5ZVn8qLL8gbtP
Jy41D4m+D1kNBGlA2lRFF8Oxbk1KNci7EdXhnrrtluzZX45j1U6WPJb5fUSCKlVNEaNOmXVu
NIG/BsgwJqcZaIOXLXRmL40JaahwE88YVaP9WOs+LO2aW2hG6HAZDnFvinemHsrLeanKwnSv
pZHpok5eSlEPo7x4hJ0eQ17Tiy6KCN5EuQ+bcCeZE8y///339flH0EUxjQcERUREjFMogWMM
FgcAZ6Iw3r7xrVjTcYSj0atc58N/tU3QzH/bfNHbgSPw5y3v+85r7ORsp05FKu1DhQpDuIQ6
aljhjhucjgwD3Kmwulyq6dYpyjK9fpQs6dWbqm7JLup5vjRDoh4fKEqzd2EFGq4ErIS0aUod
pufzFu0S6eLqrCtoqUEzKZcXRRzOaoZf9zZJ8b2aF5czm5WH1FF9/Ul7sXFkXPYcp87SU3ed
Zb4C7psd9NsxOqjDjTn98nEfbQx9bbW/O7n4wfn7pz4+vGflj07Ifzrgn637p0AfXj6O/75/
/y6731Z3WyVyq58BjGIojSMgDmMUjQN0c17w1oKFr39immIATv6eLD+f9M0zfvg1JGEyjgiE
iXE6IVAyCBAMTiIST+KEQtCEYogEJlHivyU4vEVh4ogkcTRAY5SgERJNGJxmsI3pJMBg+pXz
WPL24G+ecWtjCZohqZAOyJAkQ4YIwoROQMQkr5YIpWiEwcNXF/z24G/G8r8j+Jtn/PDr1tsj
IYBjNKCjBN8GbQ1OCBKMYBI4IUiKxjerSBHEzzfZ/51T1G933v8/L/3BQeG3K/QbOeLNlxI4
tRESjmiKQgBFkQgOQEjETILDDIkGIU4x4XvU6MOvnx5zvh5yHG9rdFQWzyFywAt/3/2wjB9r
gc56wEHxdUx50d3D1wrYiKvBeTu4iD/qHlikMH4sz+imJhV+D6QGK2maUmSb3dwzqVLNOS12
ZqnXAnn1gBs2iI/I6vPO3Q5iEnJFJd2Ua6g6QRo9rHMSCKa3cjZ3HgbukSQI8I+ajN4foU6f
12pXnYbnpSxko9jaR8HTbBlqk0pWr53w/cnZT6BlEgrQNI1TIYpTJI2FRMJs+oMhMQ5TAYUG
5NZloSH1PmjBY7w3/W/Q3hZTupQhZj6C6gb/GN7yLlz3BbyuFrsQJHlUjuLauCs32LeOm69J
Gl5JJaPT9TbldgiNfkhZfnQcTyeo3gqssSaB0kYTvruuRzfKLUaYBjyi3Npeir1Mdj0RuWs4
iEr2EHxToTxz4Npm2EMzn3V7JRLKmXPamko8ullInaB3GsZukOmGy0XP+2IbqDwGyh2Ho6l4
M7wYDMgExUGMUREV4AG+adSr32EQiokQAkuQIAhhFH0fvOHWUqZx2aTbz14138EByYKj2PwY
WW8ZJXJzXTqHTc7qL8T4eOqQ+GRkQqoOvGFCLIhzm3IkHo1vjDZSpyt33zf1sWqvj30V51Dt
H2ZuR12pe+hpvUVO9g0ulEjVYTkJj67s89FTwno7YZjYDQRLhJqUiSTJaTJEDtnFgtKbzloP
k0eFINox7ZkYGgvlwyCnwRSWgbUQlL46hfxmZHGAoBGRRExAUcQmC1uhQPCQjqgogQkGJ+Bw
s510iLwP2aGp4k2oXjFGmdF3/W0T38of4+q0pJ/OFlI+4Iuy2bshUWwKO9M3RIzD7tJetUmf
MUxUPAJr4uWgFjmsPSdfUOnwyTAjww2kUVTdzvOfkJQ3Fhfj8sOrlCbwIIDKMNgf2L0/qVhM
ZeFNEscLbm+d/ZVqnFHnS5iYcsq2eKo8NzfPZPY7W36WNhoMWC+x4n0hHX9d4St64GH2zbhS
IQGYhGQAQAMCRjZsKUBGBBoxKBKQGPPqQBKAYu8xXz/VWvknWqvUrZtaCDWStWJbg8Gn9hkl
loHnZi4VrDwjZHMdEie+O+eiaK8Vx9mQ9Qw78tjen263Lb/OnFlk5zyOgwInp2MbU/RhmO7l
AbVdBUGulmMrMbmwuGY/Mw7RxrKN5M3l8/zxIq8dlCjG9flMaIHzVZTaUXj3CJwAIedgfXiE
z1B+PebWY53xN0OL0HQYoYAKEgaEDBWBbVciEYUwKBEHZMRQ5OvzcDp+H7R/QGsz3bfF271I
CdptqAsNa6vsRNhVvkMNEBmfZsRJqw+Ynnd2QaJd2eXxs9crUGTqMcIl9B7MQ9J1O2p/p/ZQ
VXWX4AnWW1ucmjiyk0W2EJBe7iqRNCWD2JelQYO+bVcVV1OgNcdnD7Vm4JKaeOefeUrtaKdA
Ee0IOwlGh+BJD9Q1lPlDgplvL2XwRtgQRBFMvj4MIggQknGI46+nwIB5fbKBxTEIGPA+eN+n
tfpltkzzAgtqJDt6NDTh6Ton3iIflrszR4TJqCdSuTYKOVnnwbg7PIEc0yI6KHt+Vq9adDVE
o6KQXUrEcgbXp33ZWtQphvc1y5hiK5p7Q02hMimmuYO8VaUuDiFebgmgRlq+GLrEL7RhwW7H
8/6UPcWd4o3VtZpcTKMHo+NuJH1WDSobQKm9Gdk4SrYyRsbo1rbTDE2ROMDDzZPjKIyhBAY2
8w4SPCHe0xO923+dOV9Mt6p1PYJ2fyGMa8QX3OHkFK58hvewAGX+I2vGsqc7KsBWdDkeWzON
fLNls7vLkldRhgaSGXe8d4TtMzYmjfTkueLA+TeoEcjSWNa9FxDz0pEPA10QEjsG0F5spHSP
i+VRjBeIc5T0xN2ofIpxddfAycCV98vZkTNyb3p5hURcnhi3+vpmaAmCYvAIS0gURHAAmA02
GGWSzc5SKGC2bmiraAHMxO+D9g9ogsLMLEEQJmYj0OM2pC1Jq0pUqllgrvt4gg54L/qOHdzG
FkLpSNMRyeie5clRSVzJbFUbwsy8NOiOppx+rE+Z1J/EtU2PkIofvDBMTyyH3UInkYHmmqIp
aGw3FTcxbzOTZ5cndSSoOnPUWO+3/UG26i6M2YFZ7scec6sSOdZmp4/LcA0Ygn4zvNueJ2M4
pIjNeMXY5sUBRr++sxYBPNj2P04HgCKJGHkfvO/ThPzu+5vKFRpmFM3l/swXamHr8YRsRiAR
6WgCT0mgTrNr+1qTzr2zeulM4vWzFTKfgczY8iDYFqFdIeD0OvUGhV38+vhQ1vZQwrj34LQC
IvSzxwrQnCz0EK3BoA5nAcJ8ZfNm+7OCz5DE0rk5nb2oZneazR+w672Bmnsk9M9O8A+KOdtT
NQxv9wlkgMEwCMONnwEZbOJA0QGVYCGT0Bi9terI5r+ST0/c397b/wHiRgt+wYT8FPVBclKw
uXJhN8dcCSEOpWmIK/vQyYxzYcqtfJsr4ElEjlCXqUrjubRQ3YyRTshJALsJda+pFkga1fEe
Kit4Ul3VJJWhbLMPyhXqLgzeA2MaHlBbgLO/ryFyrVJyxtBz3DVHuyFSvcWGnWn4EpzNydjf
kQMOP5eHNOGOk+7Pb4cX3qwqAphNbOmIgEkyCTFmQ5YIYixEtqYBCxIsQqnoffC+U3L5ZJzc
4USysNRkFFWccvmxNREXmdGLxEfhZ0qYV1YJA0rG4Pji+xBpTYFQoc2jl54h8iCFTSpzYwdw
jjafRuWNx9NjOPS8i5zc9tD5cFsrTj2n9PN2KYi6NYjuXmYrog/OWWh19nQj99GVdDB+TRNC
2c0lBtgzAbl9ow6SqzJ7cdX5Onlq6ZuhjRiYDpIk+Fi1YubVzwYbY7fNTSTh5gSQmEEijCLf
B+3XmhBKyjM8irXnXkr56C8BCqderdyDSm/kQwT7rg5//l3LNmk83kvPMVNv9Sa9uhW6LRC+
beI7P78ueqVkmq1NfmWi+tEv/TyctcrDDPtWaby36FZxkg9s+vV3dKS/Cbj7JqL1JaLGX7Zd
UZb+xnid3wJVW0A7nfVcqYwtA8PWYH2VUW9LwOC3Tkjnw9XPitOPCXMoWDfB0DKccEiRuiNG
RHx/9X1OgopYu0su7jH1MTHSyLkBxEjIx9CVIqv4faFNOWfsOw9T1mjaIdGMU4BWHx2vsh41
XbVAJC8LJQk3VxRioPQXTmR5ltLM4zMaGegq+5rJ8IQ4V7xPCoIc0O5hqXbQDLk6K5R9IshN
Wh9iOzUxsMeY7u17EQdbFaE2RiQhuu07AKMxYGiGwcgQpjASI4mIxpAkfM/Z5E/3ovaTvXjV
WNSflxU+JSzm7Sn5IPU2Hq5HP+VWc8nFUO0OJ3By5+ExJYLhP6RnMZziliB0/9YDyJXWjS/W
bm4K/Z7dC4SzWXBBDhKq2OnJUYhDAnusB9EG5mNOoD6OjYMt+3VZciYyBEVLMsudIq4detc2
n9pusedb0U9RKnbhfOMNAnPHlsFABb29PsfEJnRYiAKEoVD49RTq4wvJMUVQeIgjNBUGcbT1
5++D9g9UEf45QWhHDovERf6MHsJ9rm/tez4aeVIg8rOngJ+WkVE7IXO9nG9linuH2eulSLzg
tdgI+AOX8VnfTVw4BHJ8VMKJOhh3cvKfIO3LTbKDeDjxyeHYSvsHTyOVRGvrTam2AmMcES6u
t473eM7lztbCYRZ20sNymdbNIsadr2TOFTEasszzpCrmm+HdWnYYSV5fodjUDgk3C4MBmkBR
Ao4IKoy3+owzG8jo++B9n/05BAve5QMinrcmMaHRq5Ib1xPfaIqpcnJiLHtRdk63MyE8RZJK
0UvvGNqR3cQD25euR+sb68SAMXeRXbDSczo+m9OJc6amqa9wpAUVfoya8OBx93ZIHpOPEt7d
gs4KenLzCrrXFHa4GG2uGcgYEmV1NXdhp1gcftPC/oEdHsdJWCYFyRZNF+gfvA/227H9v3wf
7PVg/M9jPI+fHhl8GvKX/503vz5P8tND8uGPPLP65i2oI6bBYX/Q2OWIu8azqVMRRF25Bo6m
RXJFXPaNkvcw06HxXs5ixaKTFe3OkLX2O/ixoI9ZwE2WM1x2dBfuzugbME0vSEsloxV7OcPQ
capdC0JrlFCjZzc/amYP64x8alcHpqq8Hs+7nh6SBHEHxlKofTJ4jzqI1mwvGUH0DO7WoxhY
W0GEWT602qGoipJl9ZJnjVnManVa9sP1oGvXxNyhbZOyg3PoqsX0EC+ZGF68ybFxNoVR4aVS
moQfv1T6PaDvOB/4BlARNU2n4TVzFhlMOxXzWS4yRPXn8lAcUZ/PLL9I15GJR7i4qpdLmscJ
tkb7ZFx2w35A91IljOB28Sixevhb356biyKnjSN38qU0LsGRr/2oeu4TdeohlKCSeBp65WYK
igIHE9GUMby75CyPVmOYlX1GL3tMmcxS1g9Zv2U2XWyxT4DlHoypkka0WTNidrt9bmAd7l40
RnUv4FZAlJMmu4SMcGdQcEqNpyr3+iu5Fx95Md2gqzGD2UnTY6Q5NycwwvIu8YMXI8rVDCuq
yJwGSfJm6CzJcZtdICaViV9iLGEU0kKYO+N2SBPihGdbCK9dYq/WuSpQNFCYg5745BSJz8Ad
U/PNK/aO7u3bLeAYv63YSoqLWRQOEZQDbt4XVdE4QtEsL0ChFoELizph2CTY0D75uGLwfiD3
QS2FM3L172exzoQS0M3JkSyNym55asn8qDRP2Vnd0K1xZN+GIzbQIXoeC0m2zNpdS3Wqd6O5
yt4JwpFTICyvK4Zbjnw1+tVt1kIwm75GrnQTsM2DEvX4zN2ds+gDws3JhDFFSLczkSYr/OOK
wYdagMZyoH2CGh32zBOjdU1PVa35HV+wS+EeucPoKGrGSw9nXc962p2KSjsOMWHJ53D2Fa/b
SW6BC7dL9zgvNlw+ySQNRpi7z5cCTe/D4gMuuJSnkCpUeR4i2UpS/tRYDPGOFXuHt/52xdDL
1dn0fFuxPUN3UlltKv1YRsUz02pWdZ2tWhONKI+mNtc5VTa9td4kMzMJvotcaiUXN6cpPEGX
iaPy6v64iNeZO43l5Ol+KRpWvLVqXTQ+KMyg4Yh2bfw5QiPEad1UHU6CZOr+LkNZ0N1u3Ukk
OAPkt/MZ86F5lOuTH8epK3gWbtxdzJDKSWWhQQgWzQlZ7By7lb53uaRjoGc8ZuguoqBzSTAX
w5mpZFxjpjsHNOuL/bmGWUV80CWmQrBc2oKYaZdl08Y9BqHw3s5P8EU5KUhQChFaVruhOeVt
XUlI3rZMpNkjT6Y5ajB3en/thKWZEOA7nXHDgzoMD5J9uCtRXZiGk5yV2ZPhI3Cx4aEYO8cl
VzGcq/rAy3u8CUvjkSR8ekZm95qlHGeGrnM7oXgXnPg9EhZn7ylcyLADIBVC1CTl9I7UunbY
lZLpdP08jIOwl0fdSWrnVN5miUedJgmJW4sWT63RZDTtcVU5xRdPHtfDoZ0vIi0q4qk8LYZu
GezOlYFpKCi6bb70qWAnNv3Bu8HfE+wdjubbd4Od89XrBY2d+T1mnGDuLGSxhvtLVRpyrYt5
P2qljvYUFO39Yi/7hzgy8ifUcvlOw5AouZPEDUZ45dKCk6BkQWCdWL+pSoUkHfAIRSgxEjCf
91EZo1iNPxzrceMbjCy2DTQC3b4CZOfLt8wDuYctrppA+NYFaXCmZ7hnh9Vs3sGxvZhTyhuX
ARBH7RoYku1aSLLVTNeOQJIcsqB+Ptxu5860qkDJGNsULR2aPCJNQWh0WBY6uSzLTNtEImwY
USiXkNnj5N5cQXmVy/4ZqS2fwkQqCwLb33ZKagjpXk3nBOZWN8afa8h9eYPe0DTZ/s/d/wIp
/8/fuTwAAA==
_ATEOF


$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:406: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o 40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz 40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz.b64
else
  \$UNB64_COMMAND <40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz.b64 >40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz
fi
"
echo t_migrate_rosterify.at:406 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o 40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz 40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz.b64
else
  $UNB64_COMMAND <40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz.b64 >40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o 40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz 40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz.b64
else
  $UNB64_COMMAND <40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz.b64 >40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:406: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:406: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz\" != \"40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz\"; then
    mv 40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz 40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz
  fi
  gunzip 40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz
else
  \$UNGZ_COMMAND <40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz >40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped
fi
"
echo t_migrate_rosterify.at:406 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz" != "40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz"; then
    mv 40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz 40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz
  fi
  gunzip 40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz
else
  $UNGZ_COMMAND <40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz >40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz" != "40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz"; then
    mv 40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz 40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz
  fi
  gunzip 40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz
else
  $UNGZ_COMMAND <40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped.gz >40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:406: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:406: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db db load < 40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped"
echo t_migrate_rosterify.at:406 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db db load < 40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db db load < 40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db db load < 40369a7bda66463c5785d160819ab6398b9d44f4.db.dumped ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:406: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# verify that the db actually has the claimed schema
$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:406: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db db version"
echo t_migrate_rosterify.at:406 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db db version" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db db version ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db db version ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:406: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:406: grep 40369a7bda66463c5785d160819ab6398b9d44f4 stdout >/dev/null"
echo t_migrate_rosterify.at:406 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 40369a7bda66463c5785d160819ab6398b9d44f4 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 40369a7bda66463c5785d160819ab6398b9d44f4 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:406: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# now do the actual migration
$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:406: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db db migrate"
echo t_migrate_rosterify.at:406 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db db migrate" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db db migrate ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db db migrate ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:406: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# and the rosterify
$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:406: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db db rosterify"
echo t_migrate_rosterify.at:406 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db db rosterify" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db db rosterify ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db db rosterify ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:406: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:406: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db ls keys"
echo t_migrate_rosterify.at:406 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:406: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:406: mv stdout expout"
echo t_migrate_rosterify.at:406 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:406: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:406: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys"
echo t_migrate_rosterify.at:406 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:406: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



REVS=`$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db complete revision ""`
for R in $REVS; do

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:406: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db automate certs \$R"
echo t_migrate_rosterify.at:406 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db automate certs $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db automate certs $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db automate certs $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:406: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:406: mv stdout expout"
echo t_migrate_rosterify.at:406 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:406: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:406: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs \$R"
echo t_migrate_rosterify.at:406 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:406: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:406: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db automate get_revision \$R"
echo t_migrate_rosterify.at:406 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db automate get_revision $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db automate get_revision $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db automate get_revision $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:406: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:406: mv stdout expout"
echo t_migrate_rosterify.at:406 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:406: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:406: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision \$R"
echo t_migrate_rosterify.at:406 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:406: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:406: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db automate get_manifest_of \$R"
echo t_migrate_rosterify.at:406 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db automate get_manifest_of $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:406: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:406: mv stdout expout"
echo t_migrate_rosterify.at:406 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:406: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:406: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of \$R"
echo t_migrate_rosterify.at:406 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:406: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


done


$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:406: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db complete file \"\""
echo t_migrate_rosterify.at:406 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db complete file \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db complete file "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db complete file "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:406: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:406: mv stdout expout"
echo t_migrate_rosterify.at:406 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:406: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:406: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file \"\""
echo t_migrate_rosterify.at:406 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:406: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


FILES=`$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db complete file ""`
for F in $FILES; do

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:406: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db automate get_file \$F"
echo t_migrate_rosterify.at:406 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db automate get_file $F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db automate get_file $F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=40369a7bda66463c5785d160819ab6398b9d44f4.db automate get_file $F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:406: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:406: mv stdout expout"
echo t_migrate_rosterify.at:406 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:406: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:406: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file \$F"
echo t_migrate_rosterify.at:406 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file $F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file $F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file $F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:406: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


done




cat >e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz.b64 <<'_ATEOF'
H4sICPo+PkICA2xhdGVzdC5kYi5kdW1wAO16aY/bSrLl56tfUegvtxt0t7gv76GBR4qkSIqL
KFHiMhg0kqu4rxKXXz9Uue1rX5cbVXf6zQCDkVFlScXMiDwReeJEkpywl/UX68TqZ3ZnyYb+
n5vdSWAt4cViOVV48TtQBbd/RE0d3PrNL3/e/HID/e2lqoeX6l4UL/cqbe/Rp5cvr7/+9eX1
gjp+6aISpFVaJS9xGhVh/9JHDejAEIUv/vzyp//40+aXz7P/bLZ1rqxOq/5lTIfbOt0j7dO6
+kcQdUP/twco7tHml1fHfpvgd691htVCWJcvt2j6a1QFdbhaT8PNL3/53TpD/x8P0PWbLyP/
/PXdOnpdxlcTn77O3Ad1Ez0XCpqmSAMwrM69fnxZZ/o6vAJl9PvBr8PXi17yaP564euCfrjy
nxd+Xu2XSz/D9OfPnn16NfGXr3/8/critIj+EUbFAJ7x+2XzSxq+tZihq9dIfYndc9BLUFdD
VA3rMB/0v3Pt+9g8L+//tk5cd9/a+9sT6de33w1+RiVM4/hlqJ82VtP3YHgJ7l23WnuJuzVc
T4ObX/65zjT89PrFX17DJutn4WS9yLplfGvr5cqqF+H8518BEwAKRkiGAiGIYJL0GTKEKQB8
H4NjOCRRnCAZNPj1068hzqBMjOJkiGKAQCIfkBTDkDQRoXTMAB+mKB+nMbBeKuG9zH55HfWL
ZlwP2jwuhCHvWKOT6yI/PP+0+fUdLmJkzKA0DodBHAMUhUncR8OQiWAap0MEx4jVTyogni7G
TEggNMAjBIPpwI9oAsb8MKRjgqJ9hAwjHIcpnEF+6mL92UW+ndkb/n4XYWb1JcBJDAEoDAKE
JDEcjwkaoFgcRTAOyIDESYCvdpEoiEh4hY2JfQYn0TBCCQohEQSmSMYHIQJoOKJD+qcu5p9d
VBrJbITfXPwhiz/zz5plTZeWoJuf2+fTe9I3BN9k4JeMD+qy6aK+j9bs+sIMX4Z83sbPWd5M
ud9g+qMZJPSLyh9TNtkR5kSJnPn88u9/fzM0v1nz/QiEMR1hBI7SARMRGIZFFBKAGCVoAsEZ
GoPJyCffspYdczbhJ5RvhHda+6Opt1o7ZM+1cQ51eDjvtPZHs+hpzXpFUu1pfv7O2ncZVIIq
jaN++Fw//mUp+1gR+5FP3ypfX8x/ocmv7nxDlW/XiteZ6gaszj3z/OlLcKv7qHp6cO+jbvPL
27Xj24F+UfubX9YN04C0e6vKfONqc/fXevaP9eLPbvVpUoHh3v3ewjrqdGa3Z4lFXn67ZgXt
T//juZL/SsP/WB37n3/6SuTPbz+9POn81eFPL//059Nvw//yY2n+HVJfSODN1f6OB8Aa1uEW
rft7xW1NtrWOg6/zvVXWfsAiWn9Fv0XrXwTvxzr3by11vzP5DVFjMAYzFBP4TADTKI7QEfBD
Co8YBCZpEEVEBDDkyQkBHvsIBQJABIBeeYlBSBiHEZRGKYqmGQQwNE0A+M1yx5sjfmlhS8Bh
fWHhfjkdLaHQdItdzpQMnxdhtOBJO2cyeuZ1WbO0WbPsZaMLjX3Z3RT1TCgzPSl6ZM56fl90
VR61y02x8kHVeXnWeF3R8kbpLyPS87vpzAuwZrkiyE5HPXfOG5e2VprkyaVGS3/8CaX8G0Ci
QpyIGRogq1pA0YABJIARAoShv9ItQsAEHcKACqL/90D6QHpQIRLBAMRPXcXgMIaiSEStg2EK
DhGaiMmYJqiYRH8ga0edR4zX2ISF1Xs1swl6pDVZMjXtrFxJsPWc7FYlMaBErZG1ThZy1kOc
W9CjGwG67PzYcKMxaKDKCRl/S0Fkj1z0hgWR34Q124gK1+jeBRZn6Vg9HmNkolp6VHrVNnfH
K9BS1XE2tOnZTnk+XOYu161sz07FQ+ug7E1t9DOwPoBASKylGgsjgMb4quvWhIr9cK1xMOJH
GA4CbFWBPkMTb2aUk56z/aSriqYt8rRm0GxlJmIJyEHnDWzgz4smwEifp4sljGuChEetE8aN
VZzMg7CmTV6pi5AjhKHM14wzX1M0loXS5hJgi2luT6lXzi7Yn81yP9Ve6fVuo5SgEWtPme1N
WTZJXqa2v/fSokx3mrYX0rFnNafqH9XnFPt5rf2ZYvsjZP2jiHuvjvttjp8E99uw/rHdvyb2
aL4mtghL93LV2kmMbXlDvyXtVXksMdVqpkHTHGIVPJ7V+ClYGtPrr8DZyHS5N+0t9Wi25DGK
F9VHDQJh1UIC0yNo94xybTx48ud0YpViiuGZmBIUHcFyVjrblJaOq7dXU9kkzZDgvI1vc2+b
uVHwLxP6Gw37B/Pzt828x/+5Zqn2plVoDteoHdArzXg1//C4h3TpOJMSZPfsOFJ/qsQNVuyK
NqiwbcRjlUY7ONntyJtmwpNAuefDbnbuoWvv+/3lYNBDLE/hbTzXNF1EbabZ86wxR7jTbXqT
3NiwY6SO39JqzBrB293Dmn6PVbO9Spp/r/L7MbE/zwJe8/cbJfXy5/6p7tJwzct0nbHrPz2v
iEEw/OVVmP0sv9ec7ubmaXYVW19W8vJ0pex/yOhvF/o1wCQeYQGD+yBAURTHkQAPAYIEwRpw
f205sZhahXdEP7lqWDMj6v7r+d/fqmhYv6maGc7m1vfCuRBzLQtPjPEo2pKX7tzeafbicWDw
G0OCPaQ2kBFyu9Ke6P09knJaPOTRNB7b24nTNsdj3Vyi+9hO97MDzUIdagUhS1yZVnClVr4R
cdnKsFlUcqJQhnqxzY68uGVXDrelG6g4CkPCsxlsHotqmPGBdcs4J8jj8aKmTK0o+mUCu/zR
28MDyJB0kbwum+crFbL4tQ9I5TGhboxAWsizwj7fnsaNNxxhtbzX6fw48WLLiTSwyjUCs4/n
p0N9qxTqKkIzeXMf5aA1GmYdquZECX6dcYt+bA93g6qOl2WzMjRLiTRuoPjVj9eKedTPMvHI
8LQf6hElwTGrULo9ZvGpy68YbKvqNnRiV8nj3GqTwq1qwXmI283k1ddp0iPWIegymWEWEbrr
9KAvlDXej2t7t5eERh1nLPHTI8SAnFV2Hd3RKMZLpdm2hMkLauofN8Hd8WJjGJr4esoDX7tl
kQhrZLAEuFQfEsliq3iL0Lcl9Ma9s7Xtx0nmJLn0LwpU8n6DcjNvxYd4I3R75/zwMGnatRxP
zxNyrpzblZZ5CXDllRlHN9AhCQ0mw957OZVQk3JGGAhgF5PDAqw/O+Z1rcob0mx2XjL3U+6N
y93hl0X1jhZzVr0FP6ANBVHcqPnNzHhTMLNLmQpDw6L45QiT2ZCJOmUHDhtO241A7Ms6YnxE
SB07PEVSdtk3AZnDqgkfjw47tl2wD0fXN1TeI6beJNhecM/iMFtnEuaRSuKCUC/tjQZHxkUR
QyXe3vVoiwpsE2CAtmYh94Zrm7qDcb1iLc8xennB/auR8+1SICK1KCNr2X4J+nOYa9iGLCY+
DxYu3nVCJhEN4dL8BUoiPMLV05BXLlNzhkIJpgEPo6skWA7//UeK+o0q/s8w1Pr5Gzb6oaX8
F4z0ykOv7v6Uhr7hva/ykglpGCXgiMFxCqYB8Kk4Ykg4QBCM9AmEikMMpqi3WUiT96HGwvvd
ud2fZR/jTYFjzQvL4nuV5XfcbTxwibmL9W3AasBPfNKiSjrv91VjUqpB3oywCrbUdTOnj+60
H8pmPMtDkd0GxC8T1RQx6pCej7Um8Bcf6Yf4MAGtd9OZTq25NiENFa7iEaMqtBsq3YOlTX0N
zBDtT/0u6kzxxlR9cTrOZZGbzqUwUl3UyVMh6kGY5feg1SPIrTvRQRHBHSnnbhHOKHOC+fe/
//oO6MKIxn2CIkIiwimUwDEGi3yAM2EQrT/4WqzpKMTR8EnXWf9fTe3X099WXfR+4Aj8cc26
rnVrKz5aiV2SSnNXodwQToGOGudgw/V2SwY+bpdYVczleG0VZR6fX8VzcnHHsp3Tk3qcTnUf
q/s7itLsTViAhis+KyFNklC78fG4hptYOjk66whaYtBMwmV5HgWTmuKXrUVSfKdm+enIpsUu
sVVPf9BuZOwZhz1GiT131E1nmW+A+24Hfb1BAKpgzZxuft1Ha4Y+W+0fTi7euLPwuY8Pbmnx
1gn5Twf8s3X/bOjTy+v4H/v3H7z7Gt01SuRaP30YxVAaR0AURCga+eiqvOC1BQue/yKaYgBO
/vruSd8946dfAxImo5BAmAinYwIlfR/B4Dgk8TiKKQSNKYaIYRIl/luMw6sVJgpJEkd9NEIJ
GiHRmMFpBlsznQQYTD9zHovfb/zdM65tLEEzJBXQPhmQZMAQfhDTMQiZ+CmJUIpGGDx4quD3
G383lv8dxt8946df194eCQAcoT4dxvg6aG1wAhBjBBPDMUFSNL5KRYogfr7J/u+con6/8/7/
eWn0L4jmNUJfkyNadSmBU2tCwiFNUQigKBLBAQiIiIlxmCFRP8ApJvgIG3369fMN3Ochx/66
hHtldm0iA7zw982bZXxfCXTaAQ6KLkPCi84WvpTAQhwNzpreQbxBd8EsBdF9foRXNS7xmy/V
WEHTlCJb7KqeSZWqj0m+MQu9EsiLC5ygRjxEVh837roT44DLS+mqXALV9pPwfj7GvmC6C2dx
x77n7nGMAG+vyejtHuj0cSk35aF/nIpcNvK1fRRczZKhJi5l9dIKP56c/QRaJqYATdM4FaA4
RdJYQMTMyj8YEuEw5VOoT65dFhpQH4MW3Idb3X2F9jqb0qkIMPPul1f4bXiLm3DZ5vCynNmZ
IMm9sheX2lm43rq23HSJk+BCKimdLNcxswJo8ALq7IX74XCAqrXAGkvsK0044pvLsnfC7MwI
Y4+HlFNZc76VybYjQmcJelFJ74JnKpRr9lxT91to4tN2q4RCMXF2U1GxS9czqRP0RsPYFTLd
cLjwcZstA5UHX7nhcDjm74YXgwEZoziIMCqkfNzHV4566h0GoZgQIbAY8f0ARtGPwRusLWUS
FXWyvnfL6QZ2SOrvxfptZN15kMhVdekcNtqLNxPD/aFD4oORCanc8YYJsSDKLMqWeDS6MtpA
HS7cbVtX+7K53LdllEGVt5u4DXWhboGrdWdytK5wroSqDstxsHdkjw8fEtZZMcNEji+cRahO
mFCS7DpF5ICdz1By1dnz3eRRwQ83THMk+vqM8oGf0WAMCv88E5S+2Ln8bmRxgKAhEYeMT1HE
SgtroUDwgA6pMIYJBifgYJWddIB8DNm+LqOVqJ4Yo8zgOd66ia/F27jaDekl0xkp7vBJWeVd
HysWhR3pKyJGQXtqLtqoTxgmKi6B1dG8U/MM1h6jJ6h08GCYgeF60sjLduN6D0jK6jMX4fLd
LZXadyGAyjDY7titN6pYRKXBVRKHE26tnf2Fqu1B5wuYGDPKOvNUcayvrslsN5b8KCzU77FO
YsXbTNressAXdMfD7LtxpQICMDHJAID6BIys2FKADAk0ZFDEJzHmqUBigGIfEV8/5Vr5J1yr
VI2TnBFqICvFOvcGn1hHlJh7npu4RDhnKSGbSx/b0c0+5nlzKTnOgs6PoCX3ze3htGv4debI
Ihv7vu8VOD7sm4iid/14K3ao5SgIcjnblhKRM4tr1iPlEG0omlBeVT7P70/y0kKxYlwej5gW
OE9FqQ2Ft3ff9hFy8pe7S3gM5VVDdr4vE/5uaBGaDkIUUH7MgIChQrDuSiSkEAYlIp8MGYp8
3g+no49B+we4NtU9S7ze8oSgnZo60bC2yHaIXeQbVAOR8WhGHLVqh+lZa+Uk2hZtFj06vQR5
qu5DXEJv/tTHbbuhtjdqC5Vle/IfYLk2+aGOQiue5TMCktNNJeK6YBDrNNeo3zXNouJqArR6
/+igxvQdUhNv/CNLqA1t5yii7WE7xugAPOieugQyv4sx8/2lDF4TNgBhCJPPm0EEAQIyCnD8
eQoMmOedDSyKgM+Aj8H7Ma7VT9PZNE+woIayrYd9HRwuU+zO8m6+2VNImIx6IJVLrZDj+dgb
N5snkH2Shztly0/qRQsvhmiUFLJJiEhO4eqwLZozdYjgbcUyptiI5tZQE6iI83FqIXdRqZNN
iKdrDKiBlk+GLvEzbZxhp+V5b0wf4kZxh/JSjg6m0b3RcleSPqoGlfag0N6NbBTGaxkjI3Rt
22mGpkgc4MGqyXEUxlACA6t4BzEeEx/piT6sv46cJyZr1brsQbM9EcYl5HNud7BzRz7CW1iA
Uu+e1kPR0S3lYws67/eNmYSe2bDpzWHJiyhDPckMG97dw9YRG+JaevBcvuO8K1QLZGHMy9b1
iWluybuBzgiJ7X1oK9ZSssXFYi9GM8TZSnLgrlQ2Rri6qeG454rb6WjLKbk13axEQi6LjWt1
eTe0BEExeIjFJApC2AfMChuMMvEqZykUMGs3tFY0H2aij0H7BzhBYSaWIAgTsxDofu2ThqRV
JSzU1DeXbTRCO7wTPdvyr0MDoXSo6YhktI/iYKskrqSWqvVBap5qdENTdjdUh1TqDuLSJHtI
xXduECQHlsOugR3LQHNM0RQ0th3zq5g1qcmz84PaE1SV2mqkd+v+IBt1E0Rsz8y3fYc5ZYHs
K7PVh7m/+AxBvxvedc+TERxQxCq8ImzV4gCjn8+shQD31/2P0z6gSCJCPgbvxzghu3neynK5
hhl5fbo9spma2Wo4IKsQiEU6HMFDEqjD5FieVidTZy9uMpF49WiE1GMgMzq7EGyJ0CYXcHoZ
O4PCTl61vytLsytg3L1zWg4R+tFlBWiKZ7oPF79X+6MAYZ6yarPtUcEnSGLpzByPblixG83i
d9jlVkP1LRS6Ryt4O8WcrLHs+/frBNLHYBgEwZqfPumv5EDRPhVjARPTGL226siqv+LPd9zf
39v/gcQNZ/yECdkh7Pz4oGBT6cBOhjkSQuwK0xAX9q6TKefAlFN6FpfDo4jsoTZVldp1aKG8
GgMdk6MANiPqXBLNlzSq5V1UVvC4vKhxIkPpKh+UC9SeGLwDxtjfoSYHR29bQeRSJuSEoceo
rfdWTSR6g/Ub0/AkOJ3iobshOxx+zHdpxG072R7fDy+8SlUEMCvZ0iEBk2QcYMyKLOFHWICs
TQPmx1iIUuHH4P0g5fLxMDr9gWRhqU4pKj9k8n1tIk4yo+exh8KPhDAvrBL4lIzB0cnzIPI8
+kKJ1vdOegTInRRWqsyMDcA52nwYpTvsD/d+1/EOcnCaXevBTaXY1ZTQj+spJ6rGINpbkS6I
3ttHodHZw5XchhfSxvgliQllMxUYYI8E5HS12kuOymzFReer+KEl74Y2ZGDaj2P/tWpFzFPP
+mvGrpubiINVCSARg4QYRX4M2m85IZCUR7AXK9c5FfLem30UTtxKufmlXsu7EPYcHf7yWUtX
atzfCtc2E3dxR7285rolEJ5l4hsvu8x6qaSapY1eaaL63iu8LJi00sUM61pqvDvr5/wg79jk
259wT39ncPOdxfNvFjX+tO6KovDWjNf51VC5GrSSSc+U0lg9MCwN1hcZdVcHDH7thHQ+WLw0
P7ydMLucdWIMLYIRhxSp3WNEyHcXz+MkKI+0m+TgLlPtYyMJ7StAjJi8920hsorX5dqYcca2
dTFlCccNEk44BWj13vIq61LjRfNF8jRTknB1RCECSnfiRJZnKc3cP8KBgS6yp5kMT4hTyXuk
IMg+7ezmcgNNkKOzQtHFglwn1S6yEhMDW4xp+w+0mmsVodaMiAN03XcARiPA0AyDkQFMYSRG
EiGNIXHwkbPJn+5F7Sd78aKxqDfNC3yIWczdUvJO6iw8WPZewi3mnImB2u4O4OBM/X2MBcO7
S4+8P0QNQejetQOQIy1rvpw3U53rt/SWI5zFghOyk1DFSg62Quxi2GVdiDYwD7N99b6vbWze
LvOcMaEhKFqcnp0x5Jq+cyzzoW1ma7rm3RgmYhtMV94gMGdoGAyU0Pvrc0SsRIcFKEAYCoWf
p1CvDyRHFEHhAY7QVOBH4dqffwzaP1BF+McIoS3ZzxIXehO6C7aZvrbv2WBkcY7Ij44CXlKE
RmUHzOV0vBYJ7u4mt5NC8YRXYi3gd1zGJ30zckHvy9FeCUZqZ9zI0XuApCtWyvaj/sDHu30j
be88jZQSrS1XpVwLjLFHuKhaO979MZNbSwv6SdhI97PDNE4aMs50ITMuj9CAZR4HVTHfDe/a
ssNI/HyEYmU7JFglDAZoAkUJOCSoIFrrM86sIKMfg/dj8mfnz3ib9Yh4XJvEmEYvSmZcDnyt
KabKybExb0XZPlyPhPAQSSpBT51taHt2JQ9sWzgura9ZJ/qMuQmtnJUe4/5RHw6cPdZ1dYFD
zS/xfVgHO5e7NX18Hz2UcG9n6KigBycroVtFYbuT0WSagQwBUZQXcxO0ypnDr1rQ3bHdfT8K
86gg6azpAv3G82Bfj+3/5fNgz4PxPw/RNHy+ZfB5yF/+d578+jLJTw/J+z9yz+q7p6D2mAYH
3U5j5z3uGI+6SkQQtsXi25oWyiVx2tZK1sFMi0ZbOY2UMx0vaHuEzku3ge8zep8E3GQ5w2EH
Z+ZujL4CU3eCNJcyWrKnIwztx8o5Q2iFEmr4aKd7xWxhnZEPzWLDVJlVw3HT0X0cI07PnBVq
G/fuvfLDJd1Khh8+/Nv5nvespSDCJO8abZeXecGyesGzxiSmlTrO2/6y07VLbG7Qpk7Y3t61
5Wy6iBuPDC9e5cg4msKg8FIhjcLbD5X+COgHzge+A1RETdOuec2cRAbTDvl0lPMUUb2p2OV7
1OPTs5cny8BEA5xf1NMpyaIYW8JtPMybftujW6kUBnA9uZRY3r21b8/MWZGT2pZb+VQYJ3/P
V15YPraxOnYQSlBxNPadcjUFRYH9kaiLCN6cMpZHyyFIiy6l5y2mjGYh67u0Wz0bT5bYxeDs
7IyxlAa0XlJictptZmAt7pw0RnVO4JpDlJ3Em5gMcbtXcEqNxjJzuwu5Fe9ZPl6hizGByU6S
fajZV9s3guIm8b0bIcrFDEoqT+0aibO6b8+S7dQbX4xLEz9FWMwo5BlhbozTInWAE651Rnjt
FLmVzpW+ooHc7PXYI8dQfPjOkJjvjtgHurfvt4BtfI3YQoqzmec24Rc9bt5mVdE4QtHOro9C
DQLnZ+qAYaNgQdv4NWLwtie3fiUFE3LxbkexSoUC0PXBls4alV6z5Czzg1I/ZHtxAqfCkW0T
DFhPB+hxyCX5bFbOUqhjtRnMRXYPEI4cfGF+Rgw/2/LF6BanXnLBrLsKudC1z9Z3StSjI3ez
j6IHCCcjY8YUId1KRZos8deIwbtKgIaipz2CGmz2yBPD+ZIcykrzWj5n59zZc7vBVtSUl+72
shz1pD3kpbbvI+IsH4PJU9x2Izk5LlxP7f04W3DxIOPEH2DuNp1yNLn1swc4/1QcAipX5akP
5XOc8If6zBAfiNgHtPX3EUNPF3vl8zViW4ZupaJcWfo+D4prJuWk6jpbNiYaUi5NrapzLC16
bb1JZmJifBM61ELOTkZTeIzOI0dl5e1+Ei8TdxiK0dW9QjTO0dqqteFwpzCDhkPasfDHAA0Q
p7VjuTsIkql7mxRlQXu9tgeR4AyQXY9HzIOmQa4OXhQljuCecePmYIZUjCoL9YI/a3bAYsfI
KfWtw8UtAz2iIUU3IQUdC4I5GfZExcMSMe3Rp1lP7I4VzCrinS4wFYLlwhLEVDvNKzduMQiF
t1Z2gE/KQUH8QgjRotz09SFrqlJCsqZhQs0aeDLJUIO50dtLK8z1iADPbo0r7ldBsJOs3U0J
q9w07PioTK4M74GD9XfF2NgOuYjBVFY7Xt7idVAY9zjmkyMyOZc04TgzcOzrAcVb/8BvkSA/
ug/hRAYtAIkQoCYpJzek0rXdppBMu+2mfuiFrTzodlzZh+I6STxq13FAXBs0f2i1JqNJh6vK
ITq58rDsds10EmlREQ/FYTb0s8FuHBmYhoKi6+ZLHgp2YJM3ng3+McE+oGi+fzbYPl7cTtDY
id9ixgHmjkIaabg3l4UhV7qYdYNW6GhHQeHWy7eyt4tCI3tADZdtNAwJ4xtJXGGEV04NOAhK
6vvnA+vVZaGQpA3ugQjFRgym4zYsIhSr8Lt9vl/5GiPzdQMNQLcuANl48jV1QeZis6PGEL52
QRqc6inuWkE5mTewb07mmPDGqQfEXrv4hmQ5ZyRea6ZjhSCOd6lfPe5Ou3EmWlWgeIgsipZ2
dRaSpiDUOiwLrVwURaqtJBHUjCgUc8BscXJrLqC4yEX3CNWGT2AikQWB7a4bJTGEZKsmUwxz
ixPhjyXgfnuC3tA02frPzf8CKk8cw5M9AAA=
_ATEOF


$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:552: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz.b64
else
  \$UNB64_COMMAND <e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz.b64 >e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz
fi
"
echo t_migrate_rosterify.at:552 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz.b64
else
  $UNB64_COMMAND <e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz.b64 >e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz.b64
else
  $UNB64_COMMAND <e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz.b64 >e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:552: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:552: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz\" != \"e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz\"; then
    mv e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz
  fi
  gunzip e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz
else
  \$UNGZ_COMMAND <e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz >e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped
fi
"
echo t_migrate_rosterify.at:552 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz" != "e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz"; then
    mv e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz
  fi
  gunzip e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz
else
  $UNGZ_COMMAND <e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz >e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz" != "e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz"; then
    mv e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz
  fi
  gunzip e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz
else
  $UNGZ_COMMAND <e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped.gz >e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:552: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:552: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db db load < e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped"
echo t_migrate_rosterify.at:552 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db db load < e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db db load < e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db db load < e372b508bea9b991816d1c74680f7ae10d2a6d94.db.dumped ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:552: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# verify that the db actually has the claimed schema
$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:552: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db db version"
echo t_migrate_rosterify.at:552 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db db version" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db db version ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db db version ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:552: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:552: grep e372b508bea9b991816d1c74680f7ae10d2a6d94 stdout >/dev/null"
echo t_migrate_rosterify.at:552 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep e372b508bea9b991816d1c74680f7ae10d2a6d94 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep e372b508bea9b991816d1c74680f7ae10d2a6d94 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:552: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# now do the actual migration
$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:552: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db db migrate"
echo t_migrate_rosterify.at:552 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db db migrate" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db db migrate ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db db migrate ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:552: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# and the rosterify
$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:552: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db db rosterify"
echo t_migrate_rosterify.at:552 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db db rosterify" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db db rosterify ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db db rosterify ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:552: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:552: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db ls keys"
echo t_migrate_rosterify.at:552 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:552: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:552: mv stdout expout"
echo t_migrate_rosterify.at:552 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:552: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:552: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys"
echo t_migrate_rosterify.at:552 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:552: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



REVS=`$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db complete revision ""`
for R in $REVS; do

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:552: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db automate certs \$R"
echo t_migrate_rosterify.at:552 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db automate certs $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db automate certs $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db automate certs $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:552: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:552: mv stdout expout"
echo t_migrate_rosterify.at:552 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:552: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:552: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs \$R"
echo t_migrate_rosterify.at:552 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:552: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:552: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db automate get_revision \$R"
echo t_migrate_rosterify.at:552 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db automate get_revision $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db automate get_revision $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db automate get_revision $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:552: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:552: mv stdout expout"
echo t_migrate_rosterify.at:552 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:552: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:552: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision \$R"
echo t_migrate_rosterify.at:552 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:552: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:552: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db automate get_manifest_of \$R"
echo t_migrate_rosterify.at:552 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db automate get_manifest_of $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:552: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:552: mv stdout expout"
echo t_migrate_rosterify.at:552 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:552: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:552: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of \$R"
echo t_migrate_rosterify.at:552 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:552: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


done


$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:552: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db complete file \"\""
echo t_migrate_rosterify.at:552 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db complete file \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db complete file "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db complete file "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:552: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:552: mv stdout expout"
echo t_migrate_rosterify.at:552 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:552: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:552: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file \"\""
echo t_migrate_rosterify.at:552 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:552: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


FILES=`$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db complete file ""`
for F in $FILES; do

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:552: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db automate get_file \$F"
echo t_migrate_rosterify.at:552 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db automate get_file $F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db automate get_file $F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=e372b508bea9b991816d1c74680f7ae10d2a6d94.db automate get_file $F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:552: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:552: mv stdout expout"
echo t_migrate_rosterify.at:552 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:552: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:552: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file \$F"
echo t_migrate_rosterify.at:552 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file $F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file $F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file $F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:552: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


done




cat >1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz.b64 <<'_ATEOF'
H4sICNOi0EIAA2xhdGVzdC5kYi5kdW1wAO16aY/bSLbl59KvSPSXrgb9WtyX99DAI0VSJMVF
lChxGQwKwVXcV4nLrx8q3XbZ5XRPZs2bGWAwadjOVDLi3jj3xrnnBoMT9rL+Yp1Y/czuLNnQ
/2OzOwmsJbxYLKcKL34HquD2W9TUwa3f/PLr5pcb6G8vVT28VPeieLlXaXuPPr18+fq3f3t5
faCOX7qoBGmVVslLnEZF2L/0UQM6METhiz+//OXf/7L55fPsP5ttnSur06p/GdPhtk73SPu0
rn4Lom7o//4AxT3a/PLq2O8T/OFrnWG1ENblyy2a/i2qgjpcrafh5pe//WGdof/bA3T95svI
X79+t45el/HVxKevM/dB3UTPhYKmKdIADKtzrz++rDN9HV6BMvrj4Nfh60MveTR/ffB1QT88
+c8HP6/2y6OfYfr1s2efXk387esv/7iyOC2i38KoGMAzfr9sfknDtxYzdPUaqS+xew56Cepq
iKphHeaD/g+ufR+b5+P939eJ6+5be39/Iv367XeDn1EJ0zh+GeqnjdX0PRhegnvXrdZe4m4N
19Pg5pd/rjMNP71+8LfXsMn6WThZL7JuGd/aermy6kU4//pXwASAghGSoUAIIpgkfYYMYQoA
38fgGA5JFCdIBg3++umvIc6gTIziZIhigEAiH5AUw5A0EaF0zAAfpigfpzGwPirhvcx++Trq
F824HrR5XAhD3rFGJ9dFfnj+avPXd7iIkTGD0jgcBnEMUBQmcR8NQyaCaZwOERwjVj+pgHi6
GDMhgdAAjxAMpgM/ogkY88OQjgmK9hEyjHAcpnAG+amL9WcX+XZmb/j7XYSZ1ZcAJzEEoDAI
EJLEcDwmaIBicRTBOCADEicBvtpFoiAi4RU2JvYZnETDCCUohEQQmCIZH4QIoOGIDumfuph/
dlFpJLMRfnfxhyz+zD9rljVdWoJufm6fT+9J3xB8k4FfMj6oy6aL+j5as+sLM3wZ8nkbP2d5
M+V+h+nPZpDQLyp/TNlkR5gTJXLm88N//OPN0PxuzfcjEMZ0hBE4SgdMRGAYFlFIAGKUoAkE
Z2gMJiOffMtadszZhJ9QvhHeae3Ppt5q7ZA918Y51OHhvNPan82ipzXrFUm1p/n5O2vfZVAJ
qjSO+uFz/fiXpexjRexHPn2rfH0x/4Umv7rzDVW+XSteZ6obsDr3zPOnL8Gt7qPq6cG9j7rN
L2/Xjm8H+kXtb35ZN0wD0u6tKvONq83dX+vZb+vDn93q06QCw737o4V11OnMbs8Si7z8/swK
2l/+23Ml/5mG/7469t//8pXIn59+ennS+avDn17+6c+n34f/7cfS/AekvpDAm6v9Aw+ANazD
LVr394rbmmxrHQdf53urrP2ARbT+E/0erX8RvB/r3H9pqfuDyW+IGoMxmKGYwGcCmEZxhI6A
H1J4xCAwSYMoIiKAIU9OCPDYRygQACIA9MpLDELCOIygNEpRNM0ggKFpAsBvljveHPFLC1sC
DusLC/fL6WgJhaZb7HKmZPi8CKMFT9o5k9Ezr8uapc2aZS8bXWjsy+6mqGdCmelJ0SNz1vP7
oqvyqF1uipUPqs7Ls8bripY3Sn8ZkZ7fTWdegDXLFUF2Ouq5c964tLXSJE8uNVr6408o5b8A
JCrEiZihAbKqBRQNGEACGCFAGPor3SIETNAhDKgg+n8PpA+kBxUiEQxA/NRVDA5jKIpE1DoY
puAQoYmYjGmCikn0B7J21HnEeI1NWFi9VzOboEdakyVT087KlQRbz8luVRIDStQaWetkIWc9
xLkFPboRoMvOjw03GoMGqpyQ8bcURPbIRW9YEPlNWLONqHCN7l1gcZaO1eMxRiaqpUelV21z
d7wCLVUdZ0Obnu2U58Nl7nLdyvbsVDy0Dsre1EY/A+sDCITEWqqxMAJojK+6bk2o2A/XGgcj
foThIMBWFegzNPFmRjnpOdtPuqpo2iJPawbNVmYiloAcdN7ABv68aAKM9Hm6WMK4Jkh41Dph
3FjFyTwIa9rklboIOUIYynzNOPM1RWNZKG0uAbaY5vaUeuXsgv3ZLPdT7ZVe7zZKCRqx9pTZ
3pRlk+Rlavt7Ly3KdKdpeyEde1Zzqv5RfU6xn9fanym2P0PWP4q49+q43+f4SXC/Deuf2/1r
Yo/ma2KLsHQvV62dxNiWN/Rb0l6VxxJTrWYaNM0hVsHjWY2fgqUxvf4KnI1Ml3vT3lKPZkse
o3hRfdQgEFYtJDA9gnbPKNfGgyd/TidWKaYYnokpQdERLGels01p6bh6ezWVTdIMCc7b+Db3
tpkbBf8yob/RsH8yP3/fzHv8n2uWam9aheZwjdoBvdKMV/MPj3tIl44zKUF2z44j9adK3GDF
rmiDCttGPFZptIOT3Y68aSY8CZR7Puxm5x669r7fXw4GPcTyFN7Gc03TRdRmmj3PGnOEO92m
N8mNDTtG6vgtrcas8fuav8vHNf0eq2Z7lTT/tcrvx8T+PAt4zd9vlNTLr/1T3aXhmpfpOmPX
f3o+EYNg+NurMPtZfq853c3N0+wqtr6s5OXpStn/kNHfLvRrgEk8wgIG90GAoiiOIwEeAgQJ
gjXg/tpyYjG1Cu+IfnLVsGZG1P3n87+/V9GwflI1M5zNre+FcyHmWhaeGONRtCUv3bm90+zF
48DgN4YEe0htICPkdqU90ft7JOW0eMijaTy2txOnbY7HurlE97Gd7mcHmoU61ApClrgyreBK
rXwj4rKVYbOo5EShDPVimx15ccuuHG5LN1BxFIaEZzPYPBbVMOMD65ZxTpDH40VNmVpR9MsE
dvmjt4cHkCHpInldNs9XKmTxax+QymNC3RiBtJBnhX2+PY0bbzjCanmv0/lx4sWWE2lglWsE
Zh/PT4f6VinUVYRm8uY+ykFrNMw6VM2JEvw64xb92B7uBlUdL8tmZWiWEmncQPGrH68V86if
ZeKR4Wk/1CNKgmNWoXR7zOJTl18x2FbVbejErpLHudUmhVvVgvMQt5vJq6/TpEesQ9BlMsMs
InTX6UFfKGu8H9f2bi8JjTrOWOKnR4gBOavsOrqjUYyXSrNtCZMX1NQ/boK748XGMDTx9ZQH
vnbLIhHWyGAJcKk+JJLFVvEWoW9L6I17Z2vbj5PMSXLpXxSo5P0G5Wbeig/xRuj2zvnhYdK0
azmenifkXDm3Ky3zEuDKKzOObqBDEhpMhr33ciqhJuWMMBDALiaHBVh/dszrWpU3pNnsvGTu
p9wbl7vDL4vqHS3mrHoLfkAbCqK4UfObmfGmYGaXMhWGhkXxyxEmsyETdcoOHDacthuB2Jd1
xPiIkDp2eIqk7LJvAjKHVRM+Hh12bLtgH46ub6i8R0y9SbC94J7FYbbOJMwjlcQFoV7aGw2O
jIsihkq8vevRFhXYJsAAbc1C7g3XNnUH43rFWp5j9PKC+1cj59ulQERqUUbWsv0S9Ocw17AN
WUx8HixcvOuETCIawqX5C5REeISrpyGvXKbmDIUSTAMeRldJsBz+x48U9TtV/J9hqPXnb9jo
h5byXzDSKw+9uvtTGvqG977KSyakYZSAIwbHKZgGwKfiiCHhAEEw0icQKg4xmKLeZiFN3oca
C+9353Z/ln2MNwWONS8si+9Vlt9xt/HAJeYu1rcBqwE/8UmLKum831eNSakGeTPCKthS182c
PrrTfiib8SwPRXYbEL9MVFPEqEN6PtaawF98pB/iwwS03k1nOrXm2oQ0VLiKR4yq0G6odA+W
NvU1MEO0P/W7qDPFG1P1xek4l0VuOpfCSHVRJ0+FqAdhlt+DVo8gt+5EB0UEd6Scu0U4o8wJ
5j/+8cf6/BZ0YUTjPkERIRHhFErgGINFPsCZMIjWv/harOkoxNHwSddZ/59N7dfT31dd9H7g
CPxxzbqudWsrPlqJXZJKc1eh3BBOgY4a52DD9XZLBj5ul1hVzOV4bRVlHp8fxXNycceyndOT
epxOdR+r+zuK0uxNWICGKz4rIU2SULvx8biGm1g6OTrrCFpi0EzCZXkeBZOa4petRVJ8p2b5
6cimxS6xVU9/0G5k7BmHPUaJPXfUTWeZb4D7bgd9fUEAqmDNnG5+3Udrhj5b7R9OLt54s/C5
jw9uafHWCflPB/yzdf9s6NPL6/gf+/cfvPsa3TVK5Fo/fRjFUBpHQBREKBr56Kq84LUFC55/
IppiAE7+MVl+Pum7Z/z014CEySgkECbC6ZhASd9HMDgOSTyOYgpBY4ohYphEif8txuHVChOF
JImjPhqhBI2QaMzgNIOtmU4CDKafOY/F7zf+7hnXNpagGZIKaJ8MSDJgCD+I6RiETPyURChF
IwwePFXw+42/G8v/HcbfPeOnv669PRIAOEJ9OozxddDa4AQgxggmhmOCpGh8lYoUQfx8k/3f
OUX9fuf9//PSNw4Kv4/Q1+SIVl1K4NSakHBIUxQCKIpEcAACImJiHGZI1A9wigk+wkaf/vr5
Be7zkGN/XcK9Mrs2kQFe+MfmzTK+rwQ67QAHRZch4UVnC19KYCGOBmdN7yDeoLtgloLoPj/C
qxqX+M2XaqygaUqRLXZVz6RK1cck35iFXgnkxQVOUCMeIquPG3fdiXHA5aV0VS6BavtJeD8f
Y18w3YWzuGPfc/c4RoC312T0dg90+riUm/LQP05FLhv52j4KrmbJUBOXsnpphR9Pzn4CLRNT
gKZpnApQnCJpLCBiZuUfDIlwmPIp1CfXLgsNqI9BC+7Dre6+QnudTelUBJh598sr/Da8xU24
bHN4Wc7sTJDkXtmLS+0sXG9dW266xElwIZWUTpbrmFkBNHgBdfbC/XA4QNVaYI0l9pUmHPHN
Zdk7YXZmhLHHQ8qprDnfymTbEaGzBL2opHfBMxXKNXuuqfstNPFpu1VCoZg4u6mo2KXrmdQJ
eqNh7AqZbjhc+LjNloHKg6/ccDgc83fDi8GAjFEcRBgVUj7u4ytHPfUOg1BMiBBYjPh+AKPo
x+AN1pYyiYo6Wb93y+kGdkjq78X6bWTdeZDIVXXpHDbaizcTw/2hQ+KDkQmp3PGGCbEgyizK
lng0ujLaQB0u3G1bV/uyudy3ZZRBlbebuA11oW6Bq3VncrSucK6Eqg7LcbB3ZI8PHxLWWTHD
RI4vnEWoTphQkuw6ReSAnc9QctXZ893kUcEPN0xzJPr6jPKBn9FgDAr/PBOUvti5/G5kcYCg
IRGHjE9RxEoLa6FA8IAOqTCGCQYn4GCVnXSAfAzZvi6jlaieGKPM4Dneuomvxdu42g3pJdMZ
Ke7wSVnlXR8rFoUd6SsiRkF7ai7aqE8YJiougdXRvFPzDNYeoyeodPBgmIHhetLIy3bjeg9I
yuozF+Hy3S2V2nchgMow2O7YrTeqWESlwVUShxNurZ39hartQecLmBgzyjrzVHGsr67JbDeW
/Cgs1O+xTmLF20za3rLAF3THw+y7caUCAjAxyQCA+gSMrNhSgAwJNGRQxCcx5qlAYoBiHxFf
P+Va+Sdcq1SNk5wRaiArxTr3Bp9YR5SYe56buEQ4Zykhm0sf29HNPuZ5cyk5zoLOj6Al983t
4bRr+HXmyCIb+77vFTg+7JuIonf9eCt2qOUoCHI525YSkTOLa9Yj5RBtKJpQXlU+z+9P8tJC
sWJcHo+YFjhPRakNhbd33/YRcvKXu0t4DOVVQ3a+LxP+bmgRmg5CFFB+zICAoUKw7kokpBAG
JSKfDBmKfL4Pp6OPQfsnuDbVPUu83vKEoJ2aOtGwtsh2iF3kG1QDkfFoRhy1aofpWWvlJNoW
bRY9Or0EearuQ1xCb/7Ux227obY3aguVZXvyH2C5NvmhjkIrnuUzApLTTSXiumAQ6zTXqN81
zaLiagK0ev/ooMb0HVITb/wjS6gNbecoou1hO8boADzonroEMr+LMfP9pQxeEzYAYQiTz5dB
BAECMgpw/HkKDJjnmw0sioDPgI/B+zGu1U/T2TRPsKCGsq2HfR0cLlPszvJuvtlTSJiMeiCV
S62Q4/nYGzebJ5B9koc7ZctP6kULL4ZolBSySYhITuHqsC2aM3WI4G3FMqbYiObWUBOoiPNx
aiF3UamTTYinawyogZZPhi7xM22cYafleW9MH+JGcYfyUo4OptG90XJXkj6qBpX2oNDejWwU
xmsZIyN0bdtphqZIHODBqslxFMZQAgOreAcxHhMf6Yk+rL+OnCcma9W67EGzPRHGJeRzbnew
c0c+wltYgFLvntZD0dEt5WMLOu/3jZmEntmw6c1hyYsoQz3JDBve3cPWERviWnrwXL7jvCtU
C2RhzMvW9Ylpbsm7gc4Iie19aCvWUrLFxWIvRjPE2Upy4K5UNka4uqnhuOeK2+loyym5Nd2s
REIui41rdXk3tARBMXiIxSQKQtgHzAobjDLxKmcpFDBrN7RWNB9moo9B+yc4QWEmliAIE7MQ
6H7tk4akVSUs1NQ3l200Qju8Ez3b8q9DA6F0qOmIZLSP4mCrJK6klqr1QWqeanRDU3Y3VIdU
6g7i0iR7SMV3bhAkB5bDroEdy0BzTNEUNLYd86uYNanJs/OD2hNUldpqpHfr/iAbdRNEbM/M
t32HOWWB7Cuz1Ye5v/gMQb8b3nXPkxEcUMQqvCJs1eIAo5931kKA++v+x2kfUCQRIR+D92Oc
kN08b2W5XMOMvD7dHtlMzWw1HJBVCMQiHY7gIQnUYXIsT6uTqbMXN5lIvHo0QuoxkBmdXQi2
RGiTCzi9jJ1BYSev2t+VpdkVMO7eOS2HCP3osgI0xTPdh4vfq/1RgDBPWbXZ9qjgEySxdGaO
Rzes2I1m8Tvscquh+hYK3aMVvJ1iTtZY9v37dQLpYzAMgmDNT5/0V3KgaJ+KsYCJaYxeW3Vk
1V/x5zfu7+/t/0TihjN+woTsEHZ+fFCwqXRgJ8McCSF2hWmIC3vXyZRzYMopPYvL4VFE9lCb
qkrtOrRQXo2BjslRAJsRdS6J5ksa1fIuKit4XF7UOJGhdJUPygVqTwzeAWPs71CTg6O3rSBy
KRNywtBj1NZ7qyYSvcH6jWl4EpxO8dDdkB0OP+a7NOK2nWyP74cXXqUqApiVbOmQgEkyDjBm
RZbwIyxA1qYB82MsRKnwY/B+kHL5eBid/kCysFSnFJUfMvm+NhEnmdHz2EPhR0KYF1YJfErG
4OjkeRB5Hn2hROt7Jz0C5E4KK1VmxgbgHG0+jNId9od7v+t4Bzk4za714KZS7GpK6Mf1lBNV
YxDtrUgXRO/to9Do7OFKbsMLaWP8ksSEspkKDLBHAnK6Wu0lR2W24qLzVfzQkndDGzIw7cex
/1q1IuapZ/01Y9fNTcTBqgSQiEFCjCI/Bu23nBBIyiPYi5XrnAp5780+Cidupdz8Uq/lXQh7
jg5/+VlLV2rc3wrXNhN3cUe9vOa6JRCeZeIbL7vMeqmkmqWNXmmi+t4rvCyYtNLFDOtaarw7
6+f8IO/Y5Nu/4Z7+zuDmO4vn3y1q/GndFUXhrRmv86uhcjVoJZOeKaWxemBYGqwvMuquDhj8
2gnpfLB4aX54O2F2OevEGFoEIw4pUrvHiJDvLp7HSVAeaTfJwV2m2sdGEtpXgBgxee/bQmQV
r8u1MeOMbetiyhKOGySccArQ6r3lVdalxovmi+RppiTh6ohCBJTuxIksz1KauX+EAwNdZE8z
GZ4Qp5L3SEGQfdrZzeUGmiBHZ4WiiwW5TqpdZCUmBrYY075/L+JgrSLUmhFxgK77DsBoBBia
YTAygCmMxEgipDEkDj5yNvnTvaj9ZC9eNBb1pnmBDzGLuVtK3kmdhQfL3ku4xZwzMVDb3QEc
nKm/j7FgeHfpkfeHqCEI3bt2AHKkZc2X82aqc/2W3nKEs1hwQnYSqljJwVaIXQy7rAvRBuZh
tq/e97WNzdtlnjMmNARFi9OzM4Zc03eOZT60zWxN17wbw0Rsg+nKGwTmDA2DgRJ6f32OiJXo
sAAFCEOh8PMU6vVCckQRFB7gCE0FfhSu/fnHoP0TVYR/jBDakv0scaE3obtgm+lr+54NRhbn
iPzoKOAlRWhUdsBcTsdrkeDubnI7KRRPeCXWAn7HZXzSNyMX9L4c7ZVgpHbGjRy9B0i6YqVs
P+oPfLzbN9L2ztNIKdHaclXKtcAYe4SLqrXj3R8zubW0oJ+EjXQ/O0zjpCHjTBcy4/IIDVjm
cVAV893wri07jMTPKxQr2yHBKmEwQBMoSsAhQQXRWp9xZgUZ/Ri8H5M/O3/G26xHxOPaJMY0
elEy43Lga00xVU6OjXkryvbheiSEh0hSCXrqbEPbsyt5YNvCcWl9zTrRZ8xNaOWs9Bj3j/pw
4OyxrqsLHGp+ie/DOti53K3p4/vooYR7O0NHBT04WQndKgrbnYwm0wxkCIiivJiboFXOHH7V
gu6O7e77UZhHBUlnTRfoN+6DfT22/5f3wZ4H478O0TR8fmXwecjf/ldufn2Z5KeH5P2feWf1
3S2oPabBQbfT2HmPO8ajrhIRhG2x+LamhXJJnLa1knUw06LRVk4j5UzHC9oeofPSbeD7jN4n
ATdZznDYwZm5G6OvwNSdIM2ljJbs6QhD+7FyzhBaoYQaPtrpXjFbWGfkQ7PYMFVm1XDcdHQf
x4jTM2eF2sa9e6/8cEm3kuGHD/92vuc9aymIMMm7RtvlZV6wrF7wrDGJaaWO87a/7HTtEpsb
tKkTtrd3bTmbLuLGI8OLVzkyjqYwKLxUSKPw9qXSHwH9wPnAd4CKqGnaNa+Zk8hg2iGfjnKe
Iqo3Fbt8j3p8evbyZBmYaIDzi3o6JVkUY0u4jYd50297dCuVwgCuJ5cSy7u39u2ZOStyUtty
K58K4+Tv+coLy8c2VscOQgkqjsa+U66moCiwPxJ1EcGbU8byaDkEadGl9LzFlNEsZH2Xdqtn
48kSuxicnZ0xltKA1ktKTE67zQysxZ2TxqjOCVxziLKTeBOTIW73Ck6p0Vhmbncht+I9y8cr
dDEmMNlJsg81+2r7RlDcJL53I0S5mEFJ5aldI3FW9+1Zsp1644txaeKnCIsZhTwjzI1xWqQO
cMK1zgivnSK30rnSVzSQm70ee+QYig/fGRLz3RH7QPf2/Rawja8RW0hxNvPcJvyix83brCoa
Ryja2fVRqEHg/EwdMGwULGgbv0YM3vbk1q+kYEIu3u0oVqlQALo+2NJZo9JrlpxlflDqh2wv
TuBUOLJtggHr6QA9Drkkn83KWQp1rDaDucjuAcKRgy/Mz4jhZ1u+GN3i1EsumHVXIRe69tn6
Tol6dORu9lH0AOFkZMyYIqRbqUiTJf4aMXhXCdBQ9LRHUIPNHnliOF+SQ1lpXsvn7Jw7e243
2Iqa8tLdXpajnrSHvNT2fUSc5WMweYrbbiQnx4Xrqb0fZwsuHmSc+APM3aZTjia3fvYA55+K
Q0Dlqjz1oXyOE/5QnxniAxH7gLb+PmLo6WKvfL5GbMvQrVSUK0vf50FxzaScVF1ny8ZEQ8ql
qVV1jqVFr603yUxMjG9Ch1rI2cloCo/ReeSorLzdT+Jl4g5DMbq6V4jGOVpbtTYc7hRm0HBI
Oxb+GKAB4rR2LHcHQTJ1b5OiLGiv1/YgEpwBsuvxiHnQNMjVwYuixBHcM27cHMyQilFloV7w
Z80OWOwYOaW+dbi4ZaBHNKToJqSgY0EwJ8OeqHhYIqY9+jTrid2xgllFvNMFpkKwXFiCmGqn
eeXGLQah8NbKDvBJOSiIXwghWpSbvj5kTVVKSNY0TKhZA08mGWowN3p7aYW5HhHg2a1xxf0q
CHaStbspYZWbhh0flcmV4T1wsP6uGBvbIRcxmMpqx8tbvA4K4x7HfHJEJueSJhxnBo59PaB4
6x/4LRLkR/chnMigBSARAtQk5eSGVLq22xSSabfd1A+9sJUH3Y4r+1BcJ4lH7ToOiGuD5g+t
1mQ06XBVOUQnVx6W3a6ZTiItKuKhOMyGfjbYjSMD01BQdN18yUPBDmzyxt3gHxPsA4rm+7vB
9vHidoLGTvwWMw4wdxTSSMO9uSwMudLFrBu0Qkc7Cgq3Xr6VvV0UGtkDarhso2FIGN9I4goj
vHJqwEFQUt8/H1ivLguFJG1wD0QoNmIwHbdhEaFYhd/t8/3K1xiZrxtoALp1AcjGk6+pCzIX
mx01hvC1C9LgVE9x1wrKybyBfXMyx4Q3Tj0g9trFNyTLOSPxWjMdKwRxvEv96nF32o0z0aoC
xUNkUbS0q7OQNAWh1mFZaOWiKFJtJYmgZkShmANmi5NbcwHFRS66R6g2fAITiSwIbHfdKIkh
JFs1mWKYW5wIfywB98cb9LLOC86Ptzx+++3zxSRDf+MGyK+fLx39bI5XQfvbb+n3oz/L3F/T
/+m45zWE3z5fmXhj/OdLCq+/fk5kaJps/cfmfwBo9BCXWD4AAA==
_ATEOF


$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:699: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o 1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz 1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz.b64
else
  \$UNB64_COMMAND <1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz.b64 >1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz
fi
"
echo t_migrate_rosterify.at:699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o 1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz 1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz.b64
else
  $UNB64_COMMAND <1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz.b64 >1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o 1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz 1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz.b64
else
  $UNB64_COMMAND <1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz.b64 >1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:699: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz\" != \"1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz\"; then
    mv 1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz 1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz
  fi
  gunzip 1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz
else
  \$UNGZ_COMMAND <1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz >1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped
fi
"
echo t_migrate_rosterify.at:699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz" != "1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz"; then
    mv 1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz 1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz
  fi
  gunzip 1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz
else
  $UNGZ_COMMAND <1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz >1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz" != "1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz"; then
    mv 1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz 1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz
  fi
  gunzip 1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz
else
  $UNGZ_COMMAND <1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped.gz >1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:699: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db db load < 1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped"
echo t_migrate_rosterify.at:699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db db load < 1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db db load < 1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db db load < 1509fd75019aebef5ac3da3a5edf1312393b70e9.db.dumped ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# verify that the db actually has the claimed schema
$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:699: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db db version"
echo t_migrate_rosterify.at:699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db db version" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db db version ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db db version ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:699: grep 1509fd75019aebef5ac3da3a5edf1312393b70e9 stdout >/dev/null"
echo t_migrate_rosterify.at:699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 1509fd75019aebef5ac3da3a5edf1312393b70e9 stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 1509fd75019aebef5ac3da3a5edf1312393b70e9 stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# now do the actual migration
$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:699: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db db migrate"
echo t_migrate_rosterify.at:699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db db migrate" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db db migrate ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db db migrate ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# and the rosterify
$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:699: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db db rosterify"
echo t_migrate_rosterify.at:699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db db rosterify" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db db rosterify ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db db rosterify ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:699: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db ls keys"
echo t_migrate_rosterify.at:699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:699: mv stdout expout"
echo t_migrate_rosterify.at:699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:699: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys"
echo t_migrate_rosterify.at:699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



REVS=`$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db complete revision ""`
for R in $REVS; do

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:699: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db automate certs \$R"
echo t_migrate_rosterify.at:699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db automate certs $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db automate certs $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db automate certs $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:699: mv stdout expout"
echo t_migrate_rosterify.at:699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:699: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs \$R"
echo t_migrate_rosterify.at:699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:699: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db automate get_revision \$R"
echo t_migrate_rosterify.at:699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db automate get_revision $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db automate get_revision $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db automate get_revision $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:699: mv stdout expout"
echo t_migrate_rosterify.at:699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:699: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision \$R"
echo t_migrate_rosterify.at:699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:699: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db automate get_manifest_of \$R"
echo t_migrate_rosterify.at:699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db automate get_manifest_of $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:699: mv stdout expout"
echo t_migrate_rosterify.at:699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:699: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of \$R"
echo t_migrate_rosterify.at:699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


done


$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:699: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db complete file \"\""
echo t_migrate_rosterify.at:699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db complete file \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db complete file "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db complete file "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:699: mv stdout expout"
echo t_migrate_rosterify.at:699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:699: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file \"\""
echo t_migrate_rosterify.at:699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


FILES=`$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db complete file ""`
for F in $FILES; do

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:699: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db automate get_file \$F"
echo t_migrate_rosterify.at:699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db automate get_file $F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db automate get_file $F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=1509fd75019aebef5ac3da3a5edf1312393b70e9.db automate get_file $F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:699: mv stdout expout"
echo t_migrate_rosterify.at:699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:699: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file \$F"
echo t_migrate_rosterify.at:699 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file $F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file $F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file $F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:699: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


done




cat >bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz.b64 <<'_ATEOF'
H4sICDMjOkMAA2xhdGVzdC5kYi5kdW1wAO16aY+jSLru5/avSM2X7hE1Y/blHI00YMAGDBgM
BnN11QpWY8CsZvGvP+Gqruqqrqw5mX3n6OpK16nM9BIR7xvPuz1vOARpqxgvjs0bR37jKKbx
n6uNLfGO9OLwwl56CTtwiy6/Jk0dXfrVT7+sfrqA/vJyq4eX270sX+63vL0nH14+P/72t5eP
A+r0pUsqkN/yW/aS5kkZ9y990oAODEn8Ei4vf/mPv6x++rT6j1aDa13r/Na/TPlwgcuNeZ/X
t1+jpBv6v4+gvCernz4q9vsCf3jAFaCEuK5eLsn8t+QW1TGUnsern/76h33G4a8j6PrV55m/
fHkGZ8NtfBHx4cvKfVQ3yXOjoGnKPAIDVO7jyxe40pfpN1Alf5z8cToc9FIky5eBHzf03cjf
Bn7a7eehn2D65ZNmHz6K+OuXD/+4szQvk1/jpBzA034/rX7K49c2M3Q1tNRn2z0nvUT1bUhu
A5wWgv4Pqn1rm+fw/u9w4br7Wt7fn0h/fPrN5KdV4jxNX4b6KQOKvkfDS3TvOijtJe2guZ4C
Vz/9ts88/vDxjb9+NJtiHCXbeVEMx/xa1suJ37vS8ZefARcBBsVojgExSFCaDjk6RhkAwpBA
UzSmcZKiOTz6+cPPMcnhXIqTdIwTgMKSENAMx9EsleBsyoEQZZiQZAkAh+7IXuF/e6zXhqub
J01fpgdlKhve7JS6LLTnZ6uf36AiQacczpJoHKUpwHGUJkM8jrkEZUk2xkiCgnoyEfVUMeVi
CmMBmWAEykZhwlIoEcYxm1IMG2J0nJAkypAc9kMV608qiu3CX8i3q4hyUJeIpAkM4CiIMJom
SDKlWIATaZKgJKAjmqQBCeViSZTQKISNS0OOpPE4wSkGozEMZWguBDEGWDRhY/aHKhafVFSb
ndVIv6v4nRd/yj/Qy5our0C3PMPnw1vcNwZfeeBnj4/qqumSvk+gd33ODJ+nfArj5yqvutzv
MP1ZD0L7x1485Hy2oayZkQXr+e4//vGqaX6XFoYJiFM2ISgSZyMuoQiCSBgsAilOsRRGciyB
0klIvybteij4TJxxsZHeKO3Puh6Upl2fexN8Rhv9N0r7s170lOZ8RHLfs+LyjbRvPKgCtzxN
+uFT/fiXpex9Rez7fPpa+fos/nOa/KLOV6ny9VrxcaW6AVC5p58/dYkudZ/cnhrc+6Rb/fR6
7fh6YljW4eonGDANyLvXqsxXqjb3ENazX+HgT2r1eXYDw737owQ4yz7y6+OOx15+HwNB+8v/
eu7kn3n8H1Cx//2XL4n8+e6Hl2c6/6jwh5ff9Pnw+/S/fl+a/4DU5yTw6m7/kAcANOtwSWB8
Q9ygs8E6Dr6s91pZ+w6LBP5JfrfWvzDe93Xu31rq/iDyq0RNoATKMVwUchHK4iTGJiCMGTLh
MJRmQZJQCSCwZ06IyDTEGBABKgIszEscRqMkiuEszjAsy2GAY1kKoN8nK2I/WTiv8JOMioOj
69qtlNRdpMwb4O1zJ00OuxtBxIi1cdpwb9ZNbTCRUUCNV/Q2eJwyO8rVvu6CJU0dbva7e6G1
Errdk/mVv24KbsbOa3GauhPXgzVuUs5xs+7MKwjGVwvWvwELJiaplGMBBkkBjkccoAGKUSCO
Q5hVMQql2BgFTJT8P4vFO4zNxFiCApA+WRJHogSOYwkDJ6MMGmMsldIpSzEpjX+Hhb+/T4Sk
8xmPGpQT8I7+eIib61kyjur2fkeWUVsfIBGrKlq64JwUejbfBoNr+qs7VbserLTe9v5wTw/f
ZZAbg68NK27NudnczFkQEs+s5PkSOjkQLje/GPl0R1z84JQf9bhbpHzbGSuJxHJ9qAxrO3YJ
nuuHuRz1Drm+C6x3IBBTsPAScQLwlIQsDfpNGsawYqFYmBAkiAjI6UKOpb4HS++tj2DJqEo2
B36/JeZr2z6UbdzxrnbClxGlfMIesx1w9zdfnPex4HjjEax04ki2a9fFZ9qZqXySW49Fwgdz
7/RjarX+0opXg+HDUJJDMZHPp9AV7tig4FSlo5pvTTuWR+1oXiXJgqT8f1chf8Sz/kyK/Z56
vZV9/b7GD4z4tfn+ZDD7e2gTUecnaYIOnPD2MekIJTrmNp9pRb6Od8eSW5POvdJ22NbOKuq2
KR7nFr2vbEoxMo7BU2eNJSxz84g6ftCSp5lYnlCuQR9H59HkeClXvLPPkQYjcmEYMgzPjh5b
mLftzkba4rgSxFSYdsO0tuRtSuK729f2+df7/vO++Azc577lz/teK1lkz8c048WGHHEbHdJ0
cYDZeJsLrrhTcW/N88PUViOQNZc6jAi7G82AHefSk7FjlDW5gU+FJRXriJ5Y9ayTVkQliJ0z
u0spUJQ2nHZn7lIEdNh4YKBWwlGiifbg79bsPuXN6HXe/xUX+fdStu99+9Mq8DVkKNANczi7
+45pwY9/5NKQC/2m7stTXtV/57lfbeZ3GyYsGVIMFVMJyeAUSXAE7CJILo4S+EtCc7JJTOIx
tOHt2v+zqcN6/juMHvhah6lD59Ht5thuj0pIiJYk8JbL8+R2z4sb4TJpQmZtKHI8XbuuPddO
enAyr6LV5r5HClOyIwM3j9FK6L2WjkLSq4hbuVTTqVXVZXq+lS6Ze56qdsnt/WG26z7db+84
zvIX6QF0Ug35HdZkGbOZxvEUr9Kd7Ru8L+mZyXKZcC2KJJr3OemuHZoRu/21sA98Xm4ybx8Y
I3tOzC3n84ck85aOuRg8NymCZP3jH390/deAi7iYRXEKTTiSZFAW9vdMmnA0GmEYQYcUxqQx
AduvZ84eYNQk3T+f//5+S4a3Q5ca64jXQZiFtMNUbNFvb43F7E36Ysa3aM2cVks+dvZ2qJrp
qAzl9TJgYZXtLZlgtPx4qHVJdEOsH1JtBnp/zhc2d5baQnRcOskHgrnh3XAzAnS3qk+RFeO9
3W+SzpIv3K0v7cNSlYXlu6WZG7JB26VsRPG1uEetkSDnupN9HJPOE+PfHcr/CrpvIujLuRm4
RRCAbvkYR9BDnwz0O0L/yoHbJ3obXfLytYOjH074jdF+EvTh5eP872ntd9p9sS+0Es3RsIXG
CZwlMQD7QxxPQhymNRRymej5AxMvB0j6j+7y40XfvCJkyzTspWEHzCUkbHlxOgxhH5zGNJkm
KYPhKcNRKUrj1P+IcBRK4ZKYpkk8xGEnzGI0nnIkyxEwSdAANuTPdEGkbxf+5hUhH6RYjmYi
NqQjmo44KoxSNgUxlxIpQ+MMi3Fk9Cwxbxf+Ziz/J4S/ecUPP0OSjEUATfCQjVMSToIMIgIp
QXEpmlI0w5I4jjMU9eMg+79zuPBt5P3/Y4RX+udvLfTFOZIUg0WXgQ6JxizDYIBhaIwEAHIX
LiVRjsbDiIQN5Xuy0YefP32v8ewWtqdHvFWXs0ddgShBUvdaNdreJDbvgIAk7pCJsr9G3Qo4
mK+j16b3sWAwzmDZRcl9GePTPq3IS7iriZJlGVVx+NTu6D1TH7JiZZXGTaLdM/CjGgswZT9e
hNNGTiOhqHYn1Y32XpjF9+MhDSXr/BAc4dD3wj1NMRBsdQW/3CODPTyqVaX1o10WillAbiad
dUdBmrRS9m4rfU9MfwAtlzKAZVmSiXCSoVkighwd5h8CS0iUCRk8pFEYTxHzPmjBfbjU3Rdo
T4u1s8uIsO5hdUJfh7e8SO66QB+PI79QNL1Vt/Kj9h9C75xaYXbTLHJpNWezx2m6OhEyBBFz
DOLtoGnIDXIT85GGahNP5Mp9bP34euSkqSdjxr85S7FW6LajYv8R9bKa36XAUpmz1QtN3a+R
WczbtRpL5Sx4zY1Jz2y90AbFwoaOh5AZpi/E42VxTFwZQvVCovFUvBleAgV0ipMgIZgY9vew
w0/RJ1XkMIaLMYpIsTCMYDv0PnijC7hlSVln8Pm5mi9gg+XhVq5fR/a8DDsaElZDICbvESzU
cB8NRB45hdpVG9G0EB4kV4fxdiKenDh9YDRXuKzr27Zq3Pu6Sq7ILdjMwopxmUt01rsjPTkn
tFDjvYEqabT1lUCMxx3ROSnHJX4oHWWkzrh4t/PqHFMifjki2cngj3dLxKUwXnHNgerrIy5G
4ZUFU1SGx4VijIdXKG9GlgQYHlNpzIUMQ8G0AAsFRkZszMQpSnEkhUaQsbMR9j5k+7pKYKJ6
YoxzQ+AHMIhP5eu4eg0dZPMRK++orUJm3KeqwxAH9oTJSdTajatPxkwQsnqmiDpZNvviiurj
FEh7Nho5buCEnjaLql2dgxHZXeujkJDK/VypdXhGAK6gYL3h18G0JxImj047ebBJp77cXKb2
BkMsUWq6Ms5RZMpDfTpb3HrlKGPp4GFPdDteviy0FzweqItvRJR/M65MRAEupTkA8JBCMYgt
bFljCo85HAtpgnsykBTgxHvI1w9zrfKDXKveGj87YsxA31Tn2Jti5hxwaulFYRYy6XjNKcV6
9KmXXLxDUTRuJQgOchyjlt42l9FvofkN7sBjK+++7VU01bZNwrCbfrqUG9zxVQxzj56jJvTC
k7oz5gKmD2UTK7BBEsWtrTxaJFVNdxxTVhKCPc6sGLK9h16I0XP4uJ+pgGOC23A93h8z+WZo
MZaNYhwwYcqBiGNiAKMSixmMw6kkpGOOoZ9fE7HJ+6D9E7k2NwJHPl2KjGL9mrFZVH8oXky4
ygWpgcwFLCdP+m1DGNfWKWi8LdtrMnZGBYp8v43JHX4J5z5t2xWzvjBrpKpaOxzB49QUWp3E
TrooRwxk9mVPpXXJYY691HjYNc1jT+4zoNfbsUMaK/RpXb6I4zVjVqxX4Ji+Rb2UYCMwsj3j
Roq4SQnr7aUMhQ4bgThG6eepKkWBiE4iknwesQDueURIJAkIOfA+eN+Xaw17PlqWjUr7WPGM
uK8jzZ3T86Jslos3x5TF7TVadWuVno6H3rx4IoVtsyLeqGtx3rt67JqyWTHYKqMSJUdv2rps
joyWoOsbz1lyI1trc58hZVpMc4ucH3vG9ijZPqWAGVjFNo2duLDmEfVbUQymfJRX6nmo3Gry
CZ3tzVY40exhbzJ5D0r9zcgmcQrLGJ3gJGznOZahSUBGkJOTOErgFAEgeQcpmVLv6Ynezb8O
QiBnsGq5W9Csbcp0Y7EQNppX+MoBXaMSkgf3vB7Kjm2ZkHjgy3bbWFkcWA2fX3yedmUF6Wlu
WInnLeociCGtd6MoFBshOCG1RJfm8lifQ2peWvpu4gtGE9sQWcv1LluTcrmVkwURPDXThBNz
nRJyv6rRtBfKi33wlJxeW+drhcXCNTVPN/fN0FIUw5ExkdI4iNEQcBA2FOdSSGcZHHCwG4IV
LUS55H3Q/omcoHIzT1GURTgYcj/1WUOzezUu93loPdbJhGzITg48JzwNDYKzsW5gO7MdS83b
06SaO3u9j3LLrvEVy3jdcNPyXafJjybbIntyc46iTOMF4hR5qQJ035ItSefbqTjJ1ya3RH4Z
mS3F3HJvnxgdjA+62a+ihO+55bLtCL8qse3Nao1h6d2Qo9g3wwtjnk7QiKEg8UoIyMUBwT6v
csSADGH8k2wIGJpKsPfB+76ccL0EAcxyhU6YRW1fxuvCLPxt0DBIBFKZjScw7iRGm30n0Ots
7rzHOZtp8jY2Uh5wiJUczwjqyMiqkEj2MXUmQ9jBbXtXH82mRMnzXdALhDIOZ15C5nRh+/gR
9vv+ICFEoEJutj6o5IzsePZqTYdzfONXuiNuCPdSI/UllrqxlYKNas3OVPX923kCHRIoCqII
+mdIhzA5MGzIpETEpSzBwlYdg/wr/fTV1dt7+z/huPFC2oR01eIuTDWVmCsf9a+Ev8OoTWmZ
8oO/G3Qu+CjjV4EjFOgkY1ukzfdqffZZqTqZA5vSkwRWE+67mR7udKYVz7iikmnl7tNMQXJI
H1QXaW2O7IA59XekKcAhWN8Q+lFl9Ezgh6Stt05NZUZD9CvLDHZoPqdDd8E2JDou991Eel62
PrwdXhRSVQxwMNmyMYXSdBoRHESWChMiwmDTQIQpEeNM/D5435lyxXSY/F6jeXRX5wxTaFfl
DpsIW+GMIg1wdMwoy+XVKGQUAk3sIEDo4xRKFV7fu90YYXdagqnyaq4AKbDWaFbnYavd+00n
+pjmN5s2QJub6t3mjB1PdkHdGpNqL2X+wIzeO0iNwWsneh27tEeIjyyl1NVcEoA/UIjf1ft+
5++5tfwwxFs66tmboY05lA3TNPxYtRLuyWdD6LEwuKk0gkwASzgsJhj6fdB+nROinTpGW/l2
9u1S2QZLiKPZ+aZewsqolU2MBr6Bfn6t5zA1bi/l2bOy8+M8GdWpMByJChyLXAVXdzEqNdcd
fQoqCze2QRlco1mvzoTpnCpdPC/GsdCUDZ99/Rtv2W8Err6RePxdoi7aMCrKMoAeb4hQUAUF
OtlsXNXKhBqYjo4aDwU/QwVMEXZChhg9grzQXneYTcH7KYGX0UQi6q7dElQsdm4QCDukSPTL
zifP3G2bmlnsnQBmpvS9b0uZV4Ou0KerYK7bM6E+4mmFxTPJAHZ/b8U9f2YmVw9l2l6YnXTy
ZSkBamcLMi/yjG5tx3jgEFcJdIsTKXmuxICWJCVk/c1SrZAZ8Q1eKrtUUurstkmczCLAmuDa
t8ciCWAVYaBHpBEO4w6geAI4luMIOkIZgiZoKmYJLI3eczb5w1jUfxCLrs7jwbw8UC3lifOa
UTa7ziGjxzbIhIe1XOVo3240oPlzf59SyQzuu7HotaShKCM4dQDxdw/oL8fVXBfGJb8UmODw
wMY2O1x1Ms1TqU2KnvkzwppEQHjh/r6tPWJZP5blysWmpOppfvSnWGj6znesUV8tznwquinO
5DaaT6JJEf7QcASokLfX54SCiY6IcIBxDI4+T6E+3tNLGIohIxJjmShMYtifvw/aP1FFxHFC
8Jbul50QBzO+idZXA7bv18G8pgWmjB0DgqyMzZsXca59OJUZed7M524XyzZ5k2uJvJMKORur
SYj6UEm2ajQxG/NCT8EIsq6EKTtMek1MN9tmt76LLFbtWP1xUitYYMwtJiQ32PFuD1eldfSo
n6XV7n70ucbPY86fXfoqFAke8dyo7VXrzfDClh3FUhLWDJjtsAhSGAKwFI5TaEwxUQLrM8lB
kPH3wfs++rMJF7K99ph8gE1iyuKuejVdTax11doLSmoua1nxtNOBkkaZZjLc7jxT3/IweRDr
0j+zBvQ6OeSsVewU/G6ctmOtaYI31fXNRWM9rMhtXEebs3Bp+vQ+BTh1vhyRg4pr/rVCLjeG
2Nhmc9VNbIiosnKtVdSqR4E86VF3Jzb37SQtk4rli25I7CsXLr4c2//LCxfPg/FfhmQePn1l
8GnKX/9PrlZ8XuSHh+T9n/nO6psrBjihW+dO1PlFJn3scPbrjecHBb1MF8GojpW7CcUtVncY
dzMKo4m5/YHExsE8ceXKD7o4fkQbYbryuTdeNpfq+lgC2X04uCXfdKE5ZMBp46EeTYPoew4/
hYRz5dYpZ+3Ia0uoYH9PD8kKJXYUyyTamDKaf1snl5aJh/t4Mc0Uf5yJzclWSTK3WqE4ysfj
Vi0FLcvs/Tazrx2n7C7qDGo9OSsrr+wdWxPOruoaUf9oz3NOV2Zn9XY0qOKu3E3S63c2vgf0
HecD3wCK4Zbl1aJuzTJH6FoxH5Qix/bBXG6KLR6I+TEoMmbgkgEtXNG2syuSPh7xOomXVb/u
8bXZKwC9X+dqb0RXvTG8sjgKgt0Lln0F5xyPRHNh1BRB/AvBjf4wrMWlbzzeKko7PVS5zNir
bS/1QOdmzWvVBwE7g3njZtJmP7S1Ici6O3DNPqoJ/nxngmuy1/dxyATe7It0fLUbNrwFIWwr
GNjJOYyMzvvtmUFkLLSDys8GrMeF+7EhtC3ApOxRXzfV43ztR+VsX0V8OOTXeorcZNntUSBj
nsdsLuKqweDeZ5m+j4iIZiOtteOps7h5yaqy9aKcvWihGC3HM6ZcztraoedYHkN/yKw3W+wd
3du3IeCZXyz2oOXFKgqPCsuetC7LXtUFStWP5xRHGgwtjg+NILODg6zTjxZD1z299u4H6tHW
jw3QDq6hYY116s3sTLjjli/cLRBPqTXkd3K9n5j1qSMSZoZ8CrPYRt0YvuGutWSFiUqWPYir
2/THPbGOvCkbLDLwqvWpUpTS8g/3muJxwY7xPWCBuGETbcGWcVesmcwhR7P2pzYcuNWoDejm
JiFD2bMBxQwefxCp4ehmWnXTg1Ys+KXwt8Jm8NR9Lu7u3uNxMLJWKyp92yfUUTlEc6Ce29XO
L0jpZLf3w+KgxUgnWTigwmW2Czy79EsAhNAutYgp9srcx8oxzXZafeSod1jsHdz6W4vhtguZ
km5d5DXHtrdO2Vz5nei1Sj1dg1rpfLVVYHDOHHEYVBt9sPtNwDEil5KriGAwevGv65BM8WUS
mGt1uduyOwvaUE5nIyhl85jAVg3mrTtD6Cw2sL5BjgMyIILeTtVGk3aWEaxynAft6dRqMiWY
4Ho6HIgQmTnlpgVJkvnS+UiaF58wd+W055FeChfdi3jikPiVuvaFtKWQMRlyfEUQZDoy1JYK
xQHxA4Y4c/dp7t0+CR0ePdKLFw3MdD/pvKfO/iYabhAeJuVM/WZJRVGd7tGRAF6wWqzWrO7n
2LvfC8zlDuih5Q9Xpjv4S2VXp80uDDVMaAdRX5eX7B6cGrFmc3tZ1Oawv4BiOeZcOZ+I1TJq
YefxODnZwjqnFlcjGcTnky6/17K13WR1O7SnZnZxd7fGpOJwHiWbjloAMinCLVrJLtjN0Der
cmd5bTf3Qy+nymB46c3TytO8E3GvTiPq1ODFqNe6gmcduVe1xD4rw2OzaWZbZmVV1kptMY2j
ya98BVimiuMjMWWjSmh89sqt0e8d7B2M5tuLd97B9TpJ52dpTaAwiRvnIX/sg6mAKSGQeK4q
GCXEkZ7AgzWyzYKCiJDriDTCdaUTWJxeaOqEYqJqN0CT1DwMjxof1FWp0rQH7pGMpGYK5sM6
LhOcuJF373g/iTVBFzCABmA4LsBWgXLKz+B6JhZ/nyIk7IJ0NDdy8uxE1WxdwLaxrSkTTbsH
1FZ3Q3Pn+EcsDePRd2KQpps8vI13v135M7tXkXRIHIbdbeprTFuSVBuoIrVKWZa5DpNEVHOy
VC4RtybptfUApauU3RjvGzFDqUyRJL47rdTMlLL1PptTVHj4CTk+IuEZ618zJsUQJf/7Wx6/
/vrpYpJpvHID5JdPl45+tMZHQvvrr/m3sz/R3F/y/3be8xrCr5+uTLwy/9MlhY8fPxcydV1x
/nP1X/ane51vOQAA
_ATEOF


$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:832: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz.b64
else
  \$UNB64_COMMAND <bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz.b64 >bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz
fi
"
echo t_migrate_rosterify.at:832 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz.b64
else
  $UNB64_COMMAND <bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz.b64 >bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz.b64
else
  $UNB64_COMMAND <bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz.b64 >bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:832: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:832: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz\" != \"bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz\"; then
    mv bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz
  fi
  gunzip bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz
else
  \$UNGZ_COMMAND <bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz >bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped
fi
"
echo t_migrate_rosterify.at:832 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz" != "bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz"; then
    mv bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz
  fi
  gunzip bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz
else
  $UNGZ_COMMAND <bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz >bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz" != "bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz"; then
    mv bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz
  fi
  gunzip bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz
else
  $UNGZ_COMMAND <bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped.gz >bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:832: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:832: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db db load < bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped"
echo t_migrate_rosterify.at:832 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db db load < bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db db load < bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db db load < bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db.dumped ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:832: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# verify that the db actually has the claimed schema
$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:832: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db db version"
echo t_migrate_rosterify.at:832 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db db version" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db db version ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db db version ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:832: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:832: grep bd86f9a90b5d552f0be1fa9aee847ea0f317778b stdout >/dev/null"
echo t_migrate_rosterify.at:832 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep bd86f9a90b5d552f0be1fa9aee847ea0f317778b stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep bd86f9a90b5d552f0be1fa9aee847ea0f317778b stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:832: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# now do the actual migration
$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:832: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db db migrate"
echo t_migrate_rosterify.at:832 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db db migrate" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db db migrate ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db db migrate ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:832: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# and the rosterify
$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:832: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db db rosterify"
echo t_migrate_rosterify.at:832 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db db rosterify" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db db rosterify ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db db rosterify ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:832: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:832: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db ls keys"
echo t_migrate_rosterify.at:832 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:832: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:832: mv stdout expout"
echo t_migrate_rosterify.at:832 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:832: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:832: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys"
echo t_migrate_rosterify.at:832 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:832: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



REVS=`$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db complete revision ""`
for R in $REVS; do

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:832: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db automate certs \$R"
echo t_migrate_rosterify.at:832 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db automate certs $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db automate certs $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db automate certs $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:832: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:832: mv stdout expout"
echo t_migrate_rosterify.at:832 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:832: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:832: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs \$R"
echo t_migrate_rosterify.at:832 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate certs $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:832: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:832: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db automate get_revision \$R"
echo t_migrate_rosterify.at:832 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db automate get_revision $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db automate get_revision $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db automate get_revision $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:832: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:832: mv stdout expout"
echo t_migrate_rosterify.at:832 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:832: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:832: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision \$R"
echo t_migrate_rosterify.at:832 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_revision $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:832: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:832: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db automate get_manifest_of \$R"
echo t_migrate_rosterify.at:832 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db automate get_manifest_of $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:832: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:832: mv stdout expout"
echo t_migrate_rosterify.at:832 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:832: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:832: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of \$R"
echo t_migrate_rosterify.at:832 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:832: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


done


$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:832: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db complete file \"\""
echo t_migrate_rosterify.at:832 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db complete file \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db complete file "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db complete file "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:832: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:832: mv stdout expout"
echo t_migrate_rosterify.at:832 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:832: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:832: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file \"\""
echo t_migrate_rosterify.at:832 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db complete file "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:832: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


FILES=`$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db complete file ""`
for F in $FILES; do

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:832: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db automate get_file \$F"
echo t_migrate_rosterify.at:832 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db automate get_file $F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db automate get_file $F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=bd86f9a90b5d552f0be1fa9aee847ea0f317778b.db automate get_file $F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:832: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:832: mv stdout expout"
echo t_migrate_rosterify.at:832 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:832: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_migrate_rosterify.at:832: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file \$F"
echo t_migrate_rosterify.at:832 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file $F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file $F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=latest.db automate get_file $F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_migrate_rosterify.at:832: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


done



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  290 ) # 290. t_rosterify_attrs.at:1: rosterify migrates file/dir attrs
    at_setup_line='t_rosterify_attrs.at:1'
    at_desc='rosterify migrates file/dir attrs'
    $at_quiet $ECHO_N "290: rosterify migrates file/dir attrs            $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "290. t_rosterify_attrs.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_rosterify_attrs.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_rosterify_attrs.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_rosterify_attrs.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:2: rm test_keys"
echo t_rosterify_attrs.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:3: echo \$UNB64_COMMAND"
echo t_rosterify_attrs.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test -n "`command -v gunzip`" 2>/dev/null; then
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  UNGZ_COMMAND="gunzip -c"
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:3: echo \$UNGZ_COMMAND"
echo t_rosterify_attrs.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNGZ_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# This is a db containing two revisions.  Both contain the files
# "testfile" and "testdir/otherfile".  The first has a .mt-attrs file
# that contains:
###
#   file "testfile"
#execute "true"
#
#        file "testdir"
#manual_merge "yes"
#
#   file "nonexistent"
#execute "true"
###
# The second is the same, except that "yes" and "true" have been
# swapped in all places.
# (I know it makes no sense to have manual_merge on a directory, but
# we want to test attrs on directories, and manual_merge and execute
# are the only two attrs that get migrated directly...)

cat >test.db.dump.gz.b64 <<'_ATEOF'
H4sICAbXq0MCA3Rlc3QuZGIuZHVtcADtWVmvm8i6fY5/hdUvScvpNvNwjlo6gDE2NmDAxuCr
q4ihCjDzZIx//cF7JzvJHnKTvke6L9fS3rJxfUOtVd+q+sq8KK3VqWgL24O5tsR/TgRD5Pbi
dM/xW3Hq1W7uR59AWfhRM3n3YfIucptomhftNO/SdNrlcdWBj9Mvrz/+mD4MKOC0Bpkb53Ee
TmEM0qCZNqB0a7cFwdQbpr/947fJu0fvb3kbfZ2LOG+mfdxGo7tL3MRF/skHddv8eXHTDkze
PST21cGz1+hhjBAU2TQC1z9A7hfBGD0OJu9+fzbPwPt0cetm8sXyw9O70XqcxlOIj0+eG78o
wX2iblmmse+2Y3IPH6ejpyfz3M3Ac+MH83HQNAHD08CHCb0Y+Xng42y/DH2E6cNjZh8fQvz+
9OXzmcE4BZ8CkLbunb93k3dx8Npk2roYmfrC3d1o6hd5C/J2NPPc5llq33NzH978OTou6m/j
/XlH+uHtd8Z3VoIYwmlb3GOMoTu/nfpdXY/RprAe6boHnLz7PM84+Pjw4PcH2taqKRr76Vrd
a9/Gmlrc9iCaH96TJE35DOl70GVoGmFxzHddJkBQAkUxhoIUjaA4xMH7j+8RHMEIjKGBj9EU
hBTD4gHreTQEkKZIzPcQSHkeSo5DV0Sz5j6/5nP1oCx0hLRk/SCetzcxtQ5CKW9Ngm9OJnGI
WzNB2q0uysvywHUmlzhj1umJd8qJDw4ZWY5/zT4vIzfliEN9IJrIjKWKuWxvh7gZYqQ1GaTo
F7rOpQyBDnZxj/vX5P1r5D6W5Qh+WceZWw/3VfXxZ1gN3G+I+bIQ/CIra9A0YAT9S8F8MXlc
3XcvrzLxlQMAWECiBMlAgiIwSDAAApakWApDSAYjSABoFKM99DmwSFfttYPAbeFyySvi/dnD
nN+ORJK+S420AhwQkICeSwYIQTA4jkOXZaFPugRCuDT+PBJzWZPcmgN5eaF15Su6b0f6u4sF
xRRdrziF60UaT5eDAhJKqHg12Xj6DmPTsBLAtZKcU0qifX805iqvd5HTX1l0UuiJcZl3w95t
ddNwym1vo9K2kE7n5qb1aJAxOwbi4eKGzjhptX5jkWRuHkPQtI/K+UMR/zX5fqkkrwn3l/Bf
BOIpnW9E4nWVfPBUlO6Y3H0p33Pxo6IB+T2DrgH15N3rqvmtoZcW3uTdWBOlG9ev6es3qZad
Nyr5p3HwY1pNHOZu29XPI4xWhsnNzRWHTr+OGUH77b/uM/lXHPxjTOy/f3uSsPvTj9O7kD0k
/HH6OZ+PX81/f7kpPUPqS52/Ottnpe6OtLYRGEt4xG1cxeMO5j75e03QX2ABxn/gK1s/IO+l
wv9HRf5ZyKeCdF10rHYfcVGShC5BQJRCWIpASIJBKZKkfBwwLgzuBUmyTOAzFOFClEFRfNwS
cBgQAGAE67tBEHguA7zAD57Xbo9vOl3idC4Ue7mv6lA/nhvoDIu1XkLGDLQNiWbOIMxmyKXy
hzCcWXVTrRp9KU9W/Uw61yQyz1s+XZAGIe14tX8o0R/U6Fti/ndIfqnvPyvxX328wcU3Avw3
oR3s7dDjwiiLHLLq8oGTOSKdNz7YHpalxZkSji2vG2ZGtU544Om9FpubY0Vk+GU3GQRCQbBu
A2aqSXcsKmFdgF5PUe+gTkLooWnuFkdxCJtQvhrSXL+cjgOR1rS/J2bUNc1X1dzJNF+fHLhE
MZMCXpZ+bPi6fzqn5GFjG4zNzkm9tXC/1os3OftGLf6zovqS+0cv4+dRQ0aa4tG6fqGF49dv
UT6q1ed0p/d4WfOC2W8m88RtABjCI2kyIAFBYySBszjwXIINfDD+EYHHMiAgsDu3+bn5V1l4
xfXPcXWNn5W1FCgcIglmJZlrD1/oIs/pB44jpC23EPio3/ChLpDExTrXdeUUe7jbh8eMkstu
O0s00fBVTDP9Cd8cK8r3iGOG5+mQ9VYly0N/fwSH8OD0WTXExnZ3NYoGbqUOwxguEm+uQsge
t0LLMKSF/nKxgglcGbbK2aISagwb8uckAf51GxOH+Z6iF/X2nBg7Lk6F8Lg9qRfGAZrE2twO
hMehpiOVY/s1L+p//fViGTw1JmMvM5ZGPTwshhHmu9C92Dde6WgeVdSP4vS1k/mbBp+F8zHQ
x+mD/Uv1fJHdE7sjSx6gcIwNXA8wpId447EZgRiL4ShFBcRYwB6KBATL0u9/2ulPe/z4nkC8
8SlDByyDQ9JzoQsJDCMD14ceYD0CowKUHj29Dfj/zXnmexb+/+QCfrDoHhh6Whw+TjIBheMe
zSJuQPss8GnGoymcHQ/WCO15zLil0wH+KytzHPpwiTC+CSTrFkjy4BzJs/ug2C91aV002mU2
u+a97B1gg7hXRSCRqMlXqWF2ihEgTHmcob3UubB3SBWQIeHGEK2PxbVl18Z8EJxDgu4nsTWT
FrnNqRlv6IwQFcvVstDGLDOH6P0T4wltIxw6Mx4nNkcOVckoPa8yszZfX7glKexTJLeLUp8U
s/VpsKrEJ6sd26wvPXLKygFboK7ysiV5A1gMDWgSAQwz9kAYDcmAcV0cooCgUAoQpO8j4H5O
+kVgx83k3iUrZ65XTeSqxMigoPpVWRSoci4G7Q2IUzk8wVBpLxeXn+3XbLjQrtvhZm9Ocqjt
Z2QeSRy0rqvtTsmhqBoHUhsWRyXrsUjm3dPCHginPp+EyWk7NJl+pnBpHpDHDX+QL2e1969s
Mog7lLar7aLbXuYgCW48t9tv+F0auGfNOJSh5ZiO31v+0asu4oTet+CkR1vpdNAMe6FzFedz
CCFaZfHTEI80kiCgEIBASODjuXJsNRk3wDAU8UjMgzg9nj/HtvPXIHa7Nirqu01W3vQVf3Ey
lthm6sXTXwd3F51dC4mJYy1Tm1PC0qmqEMu827D51r4UYCNghqOHcXJdY7zLH1sj79mrzoa6
quznmmNgR+domNsJumqOfBeJ1G2vWbjoGXi2We6w8HLEEA+P9NltmQYiJJb+bF0qTF4FCtFK
+fYGN2ERXWcXlx6sowYn1QGjL8UgFauD0mGVrfhGz8mKJlM/D+5Y+DiK0i6CkMBlMI8ZzxoA
xcamnnU9hKEJyHg+C5lfA9eP3DwEaRGO708Ze3kNT6GDEEsymQS105OSzplFApBCRBJeN7JG
52ORTpwAURM73K2Fquvbxphh1jYSVSyQ1KDjouNA7SdBweSgAqRDE7YMAuwYryKe5ap4v6/5
vKdnF79YWJySdHyyiWUeF4NNHwbysj8bVFvQNaTPvLeJJhi26nkYkw7nWBnjeWfZ13JC3psy
99N4IhQLWWIUUw8A0gWAYoiAYTGE8Gh0PL+5LulTpIsiv7IL/6LQinFCXFXitPO8Ha3eDP5i
+xJGnNWQMWrU2sAcmPPCPccZdW6v69V5ASzSLm7iXDLxqMxbs3AvzIacNLaVnDd60iDpjewS
1C4v7oUvAx2qUpycl/jBMENOQ0Kb9fNF6jEVvpFi5ARoISFEk8XmTn5qDpuJfMo3Io9RWhK2
tIgEC6/UT+dsHuz8nwY2oCmIsiSAPoQjqghGuC5DojiLjI+Y+3PPxaBL/xqwPxZaRA1fh7jI
cO5Mdv3t2AdSTx4jltvncMiAbZRrrJ0zV6sRhG0+tFhSCFnuUKqzi+wuNqt8aKRwRxvQZ/Vi
Eu4wEJkhOWSpVkoMnTtz3tJ0luwrY+yXYowRXfuGR0J4tY0q7q97dSYotBkWKOnvZGqdJTNN
NsMJUvOyMI+OXAVqfXHeg7WrHQZKd2Ln54UWGzcyFiL0iPMIEuVhLk2zOOkFqA9xihoFAvUD
ivk1iH9ZaGuE5bgdyqi0F41VP9dyoZaxuRlh/mzmknV+k9leJVSW6fdhnc+xNOW8TVNow3Hv
bQJkFQ+yYWr9xOKv/Ab36RyjluLgNIeEosPZ3I4aUg76pmsrqbar2Zwvl6e5IhwqdhEY8gGu
Q7NeAPsM8rNXD0k2gTcbtxulU8uFuYC9ue1VGOkZgrjiT4MLMRoDxNjIoeh4ZsAwGvExnEEZ
BKKj7CMsiqOjXvi/KAw/I7R6RwtFXF4DUEVHnZLQC4OK/Cws5EZCodUJ60EK9SotM8W7wVlt
+6pUYlC8pQmrJ4V88zaqddOjyTHEPCHy9h1JMLl9umouUeiBGEtFecRVLRxMge5PsL81st1B
jMSFpW20piJY1DYXbuoyPPJatltMDuy5ErZnwqIorXR2SBknLk4zQCv6V5r9p1P/Dy9o7ufq
Dy24to8dx6PJ7/+bq5gvTt48Yzd/p/f67ioGw3T8QC8U7irR8+aAAIrXtqsbM1wty8vk2rJc
izUkZlciAictbFgTyDxp7JnFTuxdSFWzm8oqN85at+l6KUsWF2I8bYqCLhubJWG61DGi2NN2
tQ/IUW7Jy6mczeTr3BAB515R9FKE5GRnztvYunhsq16wggxzD9jtCU07ajnHhjkxVJhPD1ep
xY9kakRnLCupIoo2xXldlteoZSuiL7GCn3BWv5Gq9bJGKcljswVTs2Zi9qIpJtdiqSpFuS5J
jWtkx0/EZrUUAJWeUVSMfPUa2xFvnDBNRsdTI7lF7XH1bRWrTqg17LibvNpXps7pr/wq8ZKN
X6if738DsbX9sRZHNjjCRjXn6EHnkq7ShjH7mD8tQwRJyI3DXgoUhzp3ns3YWTO/EeNRZDI3
yO52OiKi6WDrNefoRJdVEOhuplpL1+mw3PDSi7rPUTjHuzkLt6mlNSc9da39Mp6pTR3oem+I
k/1eOTJyWW2DFrI9M3BY0ObxMidIXUGWgbKLfeHGpx6tmBlwZLhTqxWgezhKy6rT6BXR9dT5
lgUTAaH6eC9ZRNcxp9hDE44TiuPqKgo45tkr7Rxo7e5S6VxpAz0RbyVfoXG0r62zsJJbUucF
jxIIaTPByQI8If+5MtfqQrRfXkZ8+vR4l6Kpr1xUfHi8J3nLx4NcfvoUf2/9KKIf4v/R7t4t
f3rs7F+xf+ylH76+O9IUZb3/5+TfztiAQYEfAAA=
_ATEOF


$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:96: rm -f test.db"
echo t_rosterify_attrs.at:96 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f test.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f test.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:96: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:98: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o test.db.dump.gz test.db.dump.gz.b64
else
  \$UNB64_COMMAND <test.db.dump.gz.b64 >test.db.dump.gz
fi
"
echo t_rosterify_attrs.at:98 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o test.db.dump.gz test.db.dump.gz.b64
else
  $UNB64_COMMAND <test.db.dump.gz.b64 >test.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o test.db.dump.gz test.db.dump.gz.b64
else
  $UNB64_COMMAND <test.db.dump.gz.b64 >test.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:98: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:98: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"test.db.dump.gz\" != \"test.db.dump.gz\"; then
    mv test.db.dump.gz test.db.dump.gz
  fi
  gunzip test.db.dump.gz
else
  \$UNGZ_COMMAND <test.db.dump.gz >test.db.dump
fi
"
echo t_rosterify_attrs.at:98 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "test.db.dump.gz" != "test.db.dump.gz"; then
    mv test.db.dump.gz test.db.dump.gz
  fi
  gunzip test.db.dump.gz
else
  $UNGZ_COMMAND <test.db.dump.gz >test.db.dump
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "test.db.dump.gz" != "test.db.dump.gz"; then
    mv test.db.dump.gz test.db.dump.gz
  fi
  gunzip test.db.dump.gz
else
  $UNGZ_COMMAND <test.db.dump.gz >test.db.dump
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:98: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:99: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump"
echo t_rosterify_attrs.at:99 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:99: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:100: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db migrate"
echo t_rosterify_attrs.at:100 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:100: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:101: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db rosterify"
echo t_rosterify_attrs.at:101 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:101: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check the first manifest
cat >first_manifest_good <<'_ATEOF'
format_version "1"

dir ""

 dir "testdir"
attr "mtn:manual_merge" "yes"

   file "testdir/otherfile"
content [ee9e51458f4642f48efe956962058245ee7127b1]

   file "testfile"
content [55ca6286e3e4f4fba5d0448333fa99fc5a404a73]
   attr "mtn:execute" "true"
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:118: cp -f first_manifest_good expout"
echo t_rosterify_attrs.at:118 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f first_manifest_good expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f first_manifest_good expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:118: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:119: cat expout"
echo t_rosterify_attrs.at:119 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:119: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:119: mv stdout output1"
echo t_rosterify_attrs.at:119 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:119: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:119:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_rosterify_attrs.at:119 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:119: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:119: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select i: | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate toposort -@- | head -1 | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of -@-"
echo t_rosterify_attrs.at:119 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select i: | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort -@- | head -1 | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of -@-" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select i: | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort -@- | head -1 | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of -@- ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select i: | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort -@- | head -1 | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of -@- ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:119: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:119: mv stdout output2"
echo t_rosterify_attrs.at:119 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:119: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:119:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_rosterify_attrs.at:119 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:119: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:119: cmp output1 output2"
echo t_rosterify_attrs.at:119 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:119: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# check the second manifest
cat >second_manifest_good <<'_ATEOF'
format_version "1"

dir ""

 dir "testdir"
attr "mtn:manual_merge" "true"

   file "testdir/otherfile"
content [ee9e51458f4642f48efe956962058245ee7127b1]

   file "testfile"
content [55ca6286e3e4f4fba5d0448333fa99fc5a404a73]
   attr "mtn:execute" "yes"
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:136: cp -f second_manifest_good expout"
echo t_rosterify_attrs.at:136 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -f second_manifest_good expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -f second_manifest_good expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:136: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:137: cat expout"
echo t_rosterify_attrs.at:137 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:137: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:137: mv stdout output1"
echo t_rosterify_attrs.at:137 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:137: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:137:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_rosterify_attrs.at:137 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:137: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:137: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select i: | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate toposort -@- | tail -n 1 | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of -@-"
echo t_rosterify_attrs.at:137 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select i: | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort -@- | tail -n 1 | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of -@-" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select i: | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort -@- | tail -n 1 | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of -@- ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select i: | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort -@- | tail -n 1 | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of -@- ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:137: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:137: mv stdout output2"
echo t_rosterify_attrs.at:137 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:137: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:137:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_rosterify_attrs.at:137 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:137: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_attrs.at:137: cmp output1 output2"
echo t_rosterify_attrs.at:137 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_attrs.at:137: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  291 ) # 291. t_rosterify_rename.at:1: db rosterify preserves renames
    at_setup_line='t_rosterify_rename.at:1'
    at_desc='db rosterify preserves renames'
    $at_quiet $ECHO_N "291: db rosterify preserves renames               $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "291. t_rosterify_rename.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_rosterify_rename.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_rosterify_rename.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_rename.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_rename.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_rosterify_rename.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_rename.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_rename.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_rosterify_rename.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_rename.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_rename.at:2: rm test_keys"
echo t_rosterify_rename.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_rename.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_rosterify_rename.at:3: echo \$UNB64_COMMAND"
echo t_rosterify_rename.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_rename.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test -n "`command -v gunzip`" 2>/dev/null; then
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  UNGZ_COMMAND="gunzip -c"
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_rosterify_rename.at:3: echo \$UNGZ_COMMAND"
echo t_rosterify_rename.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNGZ_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_rename.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >test.db.dump.gz.b64 <<'_ATEOF'
H4sICKhtq0MAA3Rlc3QuZGIuZHVtcADtWFmTotqWfi5/hXFeqk6Y58g83Bsn4gIiogIigmhH
RwVsNoJMyiDgr7/bzMqsqhyqM8/tiH5pI0xJ2GvY31rr22shyoqqD2VXWtqW6sj/HEhrWdjI
w40gLuWhX3o5iL7CUwGiavDpy+BT5FXRMC/qYd6k6bDJ43MD74aPnz/+GN4vKMJhCTMvzuP8
MAxjmAbVsIInr/RqGAz9fvjbP34bfHrQ/pY2pOtYxHk1bOM6QuoucRUX+VcAy7r68+KlDRx8
unfsu4JnH6QBWQiKbBjB7g+YgyJA1uNg8On3Z/sM/K8Xr6wGj5Jfnq6QNNrGk4m7J80VKE7w
tlHvdEpj4NXIuft/h0jTk3juZfC58L04WjRMYP+08H5DL1Z+W/iw28elDzB9efDs7t7E708P
n+8sjFP4NYBp7d3i92nwKQ5e20xdFihSj7G7CQ1Bkdcwr5GY71XPXPs5Nrfl1Z9IcVH+aO/P
G9L3lz8J36ISxGE4rIubDWS6AfUQNGWJrA3DEoXrZnDw6ds+4+Du/sbvL8N2b/g+LZHxUxln
XtnfUL17z64C7wfHHoEARXYqYVVBZPQxYR5FHqJ703Lviapb8nozVPWN8eDI0BGWtmx9+cxA
L4AeIAL0w5AUCzkWYAFBhQFF0yEMQ4/FGD7EPt99nlGVKnz7jLF6URqqJBgyDblWvt0bfP6l
JUhQBAxIPwwBCEKCxX029L2QpGDAEgHG8TTJ+hQRvmJpeW8puxYH8z2WQjwgAiLkCQryHOMB
jgmDkPVJBvCUj2yThA8hwOkXli7L6whIwiJKtZz6bumnOGZeHoewqh+K+5c88zGGeZnsr3HL
o/nHHH5y54c8fr2Q7zUVJw85d8u2my8gKiqY3zxoKlgOPr1e2D8K+mnhDz6htD15cfkaBfzg
6qnxEdl8RYsf3KriQ+7VTfncApJaW8LYmgn48PsaBNpv/3Xbyb/i4B/Isf/+7anKbnfvhrda
u3f4bvjNn7vv4q8U4DOkHkvx1d0+q0YPhbWOIKoyhBtKNESy3pO+1zjnBRYQ/YHfo/WL4L0k
of+Yh36slGcmv/MAGTC+j9EYy4PAY1Cx+ATDAt/DKYLBPI4madojAI5qhqKghyPG4DwSC9iA
oyDJYQTr4egxA+jQgwwAuB88L6+O1Kz2LKiiIGArAuwyxtxkGePX9slsgsnBkRK+D4sZFGtG
F9hDRLrCjLADrFsNFsw1J+11qElcsp8n26uVbDf1TMaPp9k1qdNqn50Xl0YwluaqoQsYtstW
MMN5qp/2v67jtzj57yTCS5p+L1N/1/FGvL5H6u/C37u61TITTRRkbEPknIDH3Wksnqi8yraM
GMlzuVlyVjp1azd1sPU17FyiXMSJXQ+abM0sC/vQcL6nyBpVRnZed9hmLlTcJFhqi02xomGk
KR4bg22SMuAoyRLNLeuxMcfZETTGQSUy7ICiW6ph49ay975XwhQ7J0dnW9NjrU0EVqLHqsPC
aLWZ8lVat4v69dj9wCz/uwT8MgcetKD/Ed+gcMVIunzBm+jxW6FHzPbN3eHNXla9iPAPm/ke
YwYCmqNZJuQhhY5Ij4cwgDSBipHwPDoMCJ4PAH07lWuUHLD81+3nzxzW6I6mKqEmYIpknRVL
9cmJKYuCaQsCpejCRBJjcyEeTIlZXUfq5WJIk8n5qvPbqTG+GsclW/GBI1mjaz6oxkv+aBLJ
LNS37rQIKQUcMq2hJqFNVXa5vpK82U1Su+xk45KpgL+SE71RgT/dd6y9P/CTbRhkk2xw8bcs
7+9TR4NqEwiq3XoMbFycIYUFHXkgO8/DRqRt1mtNjS/IMufmO3uZQqG40uam9lp1IpiC+CIR
njpt1JwjAMr+Ph0Q0DdafHHKvNKiP3AuiOL0tVbzTYFvNPtg6G54L/+Sa1949xRfFCXSR4WL
6hZSFMvQJOaTPA54QGKeRxE+AUiO4X1Ie89bnbeVvlvj3WciZAku5AgAPC4gMN/3SI7HKJ9k
CR4GuA9Qu0QwHPM24P833c/PUfj/PueVA/7nCH1nFNTvQp9jfA+RCSAJAjXcOEMD4POo6fY9
gBEYy8DwI5l59/lhKkYXgeJcA2Xe77b00RP++mvwKjMdl+qcVfK8SibU1UvYqxQsm6ILAkEj
F6Pzzo511ypaU7EnNi3EubonNs7cmBDpToqkWkiKMS91x3aQxVdKaoHniMepu9tMTbe+JGWZ
2RNv5s3U85IG43PD8NOOC62FMiOmXLw+CWco5eKBiB2lOdW9UymDdn70Q4KOdmFLL2GCjffR
ARNbvje0v15MGW9AiwOPojgcAIZGkHoUhkPWR70UTxIeDTjMZ0LPpyHzMWjRgQJvZH4UWt3C
Oi3Geg03W21SdOjba4e3QF4maYVGt9Tam/y0V4FOtoQTSdApFFtQs3TK7YhpW5wCQ6xU13B1
auZu8lLVt+WWEqb1AR0GvUVwg3PG0jOHPl03+4txznZba+/shHV+GI22K7ETo96ch6u90o0u
ptufJd/ZFkx3acva3ZrS2ZGEkTNrcX5QBrYC9spEDpS9zjhiYZCuNTu654P6bpCJgGc4wOBE
yGAsDdGkylM0wQLCx3GKwmkM5XZIg+BjIHtNHRXlU/46vTlbp4A0Gz9zsNfhlTy3KzuHChc1
A6fhmT3TG1c92ld/bcXj0U7vXC0i1zvs6kpNOZb4Zkkdi17AjMKqEebi1Frr9vI44OhsMd2O
FzW139aqMYe1hG2y5caR2pptLXnWL3bdaqmBiRmDSp52mz0/Xa3FhcVHni7PvIu6mifBfjDu
eivRz+pkvVxcbeVoLLzF9Cpws+Ph3fBiFOowQsLjKDQC+D6DobGZgRSD8WEIA8BSQeAH6MbH
4AWRlx9gWhzQ9T7jL68jKuhqOtpLYA26rh6dsNYnL1W2mhnHQpk2Pm10wVimS2wsHUWmN0Jj
W1I5jU9180i1DBm7tFIIu/FpMD10m/MSOzYrn8dn4hXUUFRUJaENcyYqe4GVY7yy3EsS1yeO
tiq5I4TVzKLG2hqrYyMZH9VunCr6wFKE2liDXFY6TSMWDRlbkbdbqERtvj9h71OSDSmCZTgf
krxPA5YmvYCmOHSHwDAKnbYh+Mhp/GHCdbvWk7FV4Dv4RHek49HnIv163m7TRTYbqTEzcsKL
dxi1/ohekbA8goLPMkk7Kbk1Priw3jbVVMpGg34xPalJEJ6a4zl2bSyJJACRdOOrR12e68Jh
B0T8VEmi1QUjfnQ679w5Wyxac3/BMoLoRoalhtPdAPT+ZNuU+M7ghfLKC5x06SVWoLcm9W5o
eZ/12BDn0czKspgf8DjHcByN8z4TAAQfR3shCVn6Y9D+inA36PsmyE6WEtrWkCJ/ul600Uo1
dludxeWiLJR1rmFVhJ0DLHEiGBM8Jh72rk4mUhRi+liPe8KmaXtPnCpxQF7o+XYus6tuoUt5
ZY5KnKW7/jh3sMWsTOq96aiN3RArg+KaiXkqCH7GZ+eG5md0KeK+a127k2QJA7Yvr2I3hiPH
h7O4jOZTfI7T22PPfwBkRKs0oCGHBn80alL8bbCkcBbiFIeqPKQCH42c3Afz928Qbup41K7b
MBx59cPRugb22CjoxPXollc9nN6Ubg33M7jRFzO2OOyXS1udTsyLQx4uPRn37Mmbu+pKG6zX
6cmSjvtioagjwpg3pTqa1Za9xLDGwmFRTIrKVaR+qbZgEuxm7eaalaO1GpW5eVC2dIon0/G5
pAb9Vdl6xsKljSoN824syqczEZ0Ns3o/vAyBIUBxiA41HM1yCCkeJS4OKcBihE+zAQ0xjsCZ
j8H7PsI1lMslv2ISXmWazbBpPCHNZbbaKc3OCPvqaMKdlF7i9VICOCLKcLciF7xipcerZq6Y
/Mwu1R0djNiBLoMlqDTHihQnjvd7cTJOJ0vSbdjFGiM2I4dfuwSbCATjBpdTD7lArzE8POF7
crfZlrOwa0XXWpmD3UwLS5s6s35bS6p/5CiwCOMrpsPqr5fj/9MU8MtXN7c++0sNu/phAnkQ
+f0/eUnzqOTNnrv6O7PYTy9pSMLcEqWsCd10zGoLrWsKlR3HtdlG/XwvC6c0AXLPjjdFXU/0
DTMPYEpqqR+23YB0RT9SR+eyZswNlrCzrZrxWk6JEzaJlti0JKdtd8xkUuWDmuGwqUuHx8wN
8ZnLnXNe3OxEOenbcnDmUEH1dA5Rp47HXnKyu1nnLEM2rrM8auS+GzuZSy6JJjZ0wK82kpNe
aGJrnTOm7rVdvJEnNZT0wWTTy6WQVcnMMbaCNeHTGTYSVuyedlxD1abzE8qg2BOxBThIwNmd
DlISjSLNEv1ECWmqteo1PKjSIN4K9CRir5RqJ7Ue5t50ddXm0g6MxgobraA/EYxSuL2x/+vt
CvzhbH5/Rf0UHZzQ7V05QdGRx6SxSMTVLo0xdt8nqbVUpaj2xE7pLy4TLGvCzT1iknFeMUqP
F2dQNeW6Ky6kle7B5mBmHd1z5lFtktyJbTBfxPFiy5H2rk7RWHzBTms+P0Nh1uBj2mZ7TdGE
/po6uTCQZ/lsE0+iq1gWo0YdmYWlXSVvZ8hVtpdFQlHdOSygYheCedYaFujBIsDJLaj1zjth
I4JUMaKusMHRGGHs9mJnZzDW5iEfjMp0Nfaya5NMV6ZMrf3Jadr+AOq3IlT1iey+fA/x9evD
axRDf+UdxZeHVyRv6bjnxq9f45+lHxjzS/w/yt0G5a8PQ/0r8g9j9P3jmyJD09TNPwf/BgLY
6UJNHgAA
_ATEOF


$at_traceoff
echo "$at_srcdir/t_rosterify_rename.at:74: rm -f test.db"
echo t_rosterify_rename.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f test.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f test.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_rename.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rosterify_rename.at:76: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o test.db.dump.gz test.db.dump.gz.b64
else
  \$UNB64_COMMAND <test.db.dump.gz.b64 >test.db.dump.gz
fi
"
echo t_rosterify_rename.at:76 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o test.db.dump.gz test.db.dump.gz.b64
else
  $UNB64_COMMAND <test.db.dump.gz.b64 >test.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o test.db.dump.gz test.db.dump.gz.b64
else
  $UNB64_COMMAND <test.db.dump.gz.b64 >test.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_rename.at:76: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_rename.at:76: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"test.db.dump.gz\" != \"test.db.dump.gz\"; then
    mv test.db.dump.gz test.db.dump.gz
  fi
  gunzip test.db.dump.gz
else
  \$UNGZ_COMMAND <test.db.dump.gz >test.db.dump
fi
"
echo t_rosterify_rename.at:76 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "test.db.dump.gz" != "test.db.dump.gz"; then
    mv test.db.dump.gz test.db.dump.gz
  fi
  gunzip test.db.dump.gz
else
  $UNGZ_COMMAND <test.db.dump.gz >test.db.dump
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "test.db.dump.gz" != "test.db.dump.gz"; then
    mv test.db.dump.gz test.db.dump.gz
  fi
  gunzip test.db.dump.gz
else
  $UNGZ_COMMAND <test.db.dump.gz >test.db.dump
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_rename.at:76: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rosterify_rename.at:77: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump"
echo t_rosterify_rename.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_rename.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_rename.at:78: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db migrate"
echo t_rosterify_rename.at:78 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_rename.at:78: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_rename.at:79: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db rosterify"
echo t_rosterify_rename.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_rename.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check the second revision
cat >expout <<'_ATEOF'
format_version "1"

new_manifest [0ee54a587bc4465f17eaf5de2807fbd7d9f46c75]

old_revision [3ee4662e91afd842e0eb0e6681db790bf8c3e627]

rename "testdir_start"
    to "testdir_end"

rename "testfile_start"
    to "testfile_end"
_ATEOF



$at_traceoff
echo "$at_srcdir/t_rosterify_rename.at:95: cat expout"
echo t_rosterify_rename.at:95 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_rename.at:95: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_rename.at:95: mv stdout output1"
echo t_rosterify_rename.at:95 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_rename.at:95: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_rename.at:95:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_rosterify_rename.at:95 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_rename.at:95: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_rename.at:95: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select i: | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate toposort -@- | tail -n 1 | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision -@-"
echo t_rosterify_rename.at:95 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select i: | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort -@- | tail -n 1 | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision -@-" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select i: | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort -@- | tail -n 1 | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision -@- ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select i: | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort -@- | tail -n 1 | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision -@- ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_rename.at:95: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_rename.at:95: mv stdout output2"
echo t_rosterify_rename.at:95 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_rename.at:95: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_rename.at:95:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_rosterify_rename.at:95 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_rename.at:95: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_rename.at:95: cmp output1 output2"
echo t_rosterify_rename.at:95 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_rename.at:95: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  292 ) # 292. t_mixed_case_pwd.at:1: restrictions when pwd is mixed case
    at_setup_line='t_mixed_case_pwd.at:1'
    at_desc='restrictions when pwd is mixed case'
    $at_quiet $ECHO_N "292: restrictions when pwd is mixed case          $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "292. t_mixed_case_pwd.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_mixed_case_pwd.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_mixed_case_pwd.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mixed_case_pwd.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_mixed_case_pwd.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_mixed_case_pwd.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mixed_case_pwd.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_mixed_case_pwd.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_mixed_case_pwd.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mixed_case_pwd.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_mixed_case_pwd.at:2: rm test_keys"
echo t_mixed_case_pwd.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mixed_case_pwd.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This is trivial on case-sensitive filesystems, but a little trickier
# on case-preserving ones.

$at_traceoff
echo "$at_srcdir/t_mixed_case_pwd.at:7: mkdir FooBar"
echo t_mixed_case_pwd.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir FooBar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir FooBar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mixed_case_pwd.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >FooBar/testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_mixed_case_pwd.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add FooBar/testfile"
echo t_mixed_case_pwd.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add FooBar/testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add FooBar/testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add FooBar/testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mixed_case_pwd.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_mixed_case_pwd.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_mixed_case_pwd.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mixed_case_pwd.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >FooBar/testfile <<'_ATEOF'
stuff stuff
_ATEOF



$at_traceoff
echo "$at_srcdir/t_mixed_case_pwd.at:15: cd FooBar && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit . -mfoo"
echo t_mixed_case_pwd.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd FooBar && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit . -mfoo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd FooBar && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit . -mfoo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd FooBar && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit . -mfoo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mixed_case_pwd.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_mixed_case_pwd.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff"
echo t_mixed_case_pwd.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mixed_case_pwd.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_mixed_case_pwd.at:18: grep \"no changes\" stdout >/dev/null"
echo t_mixed_case_pwd.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "no changes" stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "no changes" stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_mixed_case_pwd.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  293 ) # 293. t_read_privkey.at:1: read and convert old privkey packet
    at_setup_line='t_read_privkey.at:1'
    at_desc='read and convert old privkey packet'
    $at_quiet $ECHO_N "293: read and convert old privkey packet          $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "293. t_read_privkey.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_read_privkey.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_read_privkey.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_read_privkey.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_read_privkey.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_read_privkey.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_read_privkey.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_read_privkey.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_read_privkey.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_read_privkey.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_read_privkey.at:2: rm test_keys"
echo t_read_privkey.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_read_privkey.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# this is an old privkey generated with 0.23

cat >pkt <<'_ATEOF'
[privkey foo@bar.com]
LKWvWrFPIkgZbnvBr/ZUFYHUE33psk0itcGSVbVK8BFGJz+M34Ys/OxizUNtkHRey6ttZg65
/sCeKWjfJ8eV5zcyNC+V6KwZiG5EooOu+7fRN8ksIeiMvvgCM4RFPokmPrT9P4REEZ0CfVKr
m4CUlyDF94uq/gBEuhXuuzAJVchzfw+j6dt3krB4btgDdHAu6Wo9vKbJnJrd6hGqJPWs/Emb
6n/5ObzL8EiqOMRlfjUYw8rWmQoRPtTCKtj4hvfnsnvOhX3E/TWdm7keSpK/mfHNx8ldWdII
/dZgBHXWfUreALln2ZCm4/dPPfFEnZHEIjY/NcCmoVLzh4vZol/6e6VLCyQAS155VlDN2/vY
R3MFDBv6qX45+sAMX8KPebiVrxBT+eyt3uXGQQLnarTBQQ6/4QSe/MCaIXTc/IP4f6kxriLo
e0r66zpKFFQmP9jBWQaIcD/QW26L5Xr2DI1ANKE8ynulzHMSBdbEASFA5ZHFQgwJvqKgOZ1T
UG6cSKzRPSqCYGwKhoRjwwYWvC57E3bsgXDnSdrLhBr7Fxt318UeDr7qOmcrzIHQyC6sw3AQ
FKPvBENrfkDI5nbEW3Nd//wCFm374sozh4eleg5KLQbmgD0EJ1TqEaPb9jB/iBKq/tXcSTBJ
cEKrXluN07CjYLhmr0gSVMtA60O8lnvxtgQNLOWrVziA+mqa9sq88zaIC7nXYOsiE5IdHAbh
GPY/hCVVdq/jZOX1dCmh923NWZfTHOXK3lNzcYkUZjx9CUHoiUh4eUpq3XMJBy63BRQ7z5Ry
vvQ+v3hYrpSnBocemFP1/aDAKUYlvvuzh5ojgvHXVKeEbgaXf/E9IQ==
[end]
_ATEOF


$at_traceoff
echo "$at_srcdir/t_read_privkey.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read pkt"
echo t_read_privkey.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read pkt" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read pkt ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read pkt ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_read_privkey.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_read_privkey.at:23: grep  >/dev/null \"read 1 packet\" stderr"
echo t_read_privkey.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep  >/dev/null "read 1 packet" stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep  >/dev/null "read 1 packet" stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_read_privkey.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_read_privkey.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls keys"
echo t_read_privkey.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_read_privkey.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_read_privkey.at:25: grep  >/dev/null \"foo@bar.com\" stdout"
echo t_read_privkey.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep  >/dev/null "foo@bar.com" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep  >/dev/null "foo@bar.com" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_read_privkey.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo <<'_ATEOF'
foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_read_privkey.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_read_privkey.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_read_privkey.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# check that we can use the key we just read
# if it imported wrong, it'll fail by not accepting the passphrase

$at_traceoff
echo "$at_srcdir/t_read_privkey.at:33: (echo foo@bar.com; echo foo@bar.com) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ci -b foo -m bar"
echo t_read_privkey.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo foo@bar.com; echo foo@bar.com) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci -b foo -m bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo foo@bar.com; echo foo@bar.com) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci -b foo -m bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo foo@bar.com; echo foo@bar.com) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ci -b foo -m bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_read_privkey.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  294 ) # 294. t_restricted_commands_consistent.at:1: restricted commands are consistent
    at_setup_line='t_restricted_commands_consistent.at:1'
    at_desc='restricted commands are consistent'
    $at_quiet $ECHO_N "294: restricted commands are consistent           $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "294. t_restricted_commands_consistent.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_restricted_commands_consistent.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_restricted_commands_consistent.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_restricted_commands_consistent.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:2: rm test_keys"
echo t_restricted_commands_consistent.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# the following commands accept file arguments and --exclude and --depth
# options used to define a restriction on the files that will be processed:
#
# ls unknown
# ls ignored
# ls missing
# ls known
# status
# diff
# commit
# revert
#

# this test ensures that these commands operate on the same set of files given
# the same restriction specification.  maintaining consistency across these
# commands allows for destructive commands (commit and revert) to be "tested"
# first with non-destructive commands (ls unknown/ignored/missing/known, status,
# diff)

# macros for running and verifying tests



# $1 the monotone command and associated arguments to run


# $1 0 or 1 to indicate whether grep should find find words in the output or not
# $2 list of words to grep output for


# $1 stdout or stderr to be copied to output for grep
# $2 list of words that must exist in output
# $3 list of words that must not exist in output


# $1 the monotone command and arguments to run
# $2 stderr or stdout to grep against
# $3 list of words that must exist in output
# $4 list of words that must not exist in output


# test restrictions and associated lists of included/excluded files

ROOT_ARGS="."
ROOT_INCLUDED="file1 file2 foo/foo1 foo/foo2 foo/bar/bar1 foo/bar/bar2"
ROOT_EXCLUDED=""

INCLUDE_ARGS="file1 foo/foo1 foo/bar/bar1"
INCLUDE_INCLUDED="file1 foo/foo1 foo/bar/bar1"
INCLUDE_EXCLUDED="file2 foo/foo2 foo/bar/bar2"

EXCLUDE_ARGS=". --exclude file1 --exclude foo/foo1 --exclude foo/bar/bar1"
EXCLUDE_INCLUDED="file2 foo/foo2 foo/bar/bar2"
EXCLUDE_EXCLUDED="file1 foo/foo1 foo/bar/bar1"

BOTH_ARGS="foo --exclude foo/foo1 --exclude foo/bar/bar1"
BOTH_INCLUDED="foo/foo2 foo/bar/bar2"
BOTH_EXCLUDED="file1 file2 foo/foo1 foo/bar/bar1"

DEPTH_ARGS=". --depth 1"
DEPTH_INCLUDED="file1 file2 foo/foo1 foo/foo2"
DEPTH_EXCLUDED="foo/bar/bar1 foo/bar/bar2"

# setup workspace

$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:96: mkdir foo"
echo t_restricted_commands_consistent.at:96 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:96: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:97: mkdir foo/bar"
echo t_restricted_commands_consistent.at:97 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir foo/bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir foo/bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:97: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >file1 <<'_ATEOF'
file1 initial addition of files
_ATEOF

cat >file2 <<'_ATEOF'
file2 initial addition of files
_ATEOF

cat >foo/foo1 <<'_ATEOF'
foo1 initial addition of files
_ATEOF

cat >foo/foo2 <<'_ATEOF'
foo2 initial addition of files
_ATEOF

cat >foo/bar/bar1 <<'_ATEOF'
bar1 initial addition of files
_ATEOF

cat >foo/bar/bar2 <<'_ATEOF'
bar2 initial addition of files
_ATEOF


$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:100: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file1 file2 foo"
echo t_restricted_commands_consistent.at:100 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 file2 foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 file2 foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 file2 foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:100: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:101: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_restricted_commands_consistent.at:101 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:101: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# check that ls unknown/ignored/missing/known, status, diff, revert and commit
# all agree on what is included/excluded by various restrictions

# ls unknown

# dropped files are valid for restriction but are unknown in the post-state
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:109: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop file1 file2 foo/foo1 foo/foo2 foo/bar/bar1 foo/bar/bar2"
echo t_restricted_commands_consistent.at:109 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop file1 file2 foo/foo1 foo/foo2 foo/bar/bar1 foo/bar/bar2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop file1 file2 foo/foo1 foo/foo2 foo/bar/bar1 foo/bar/bar2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop file1 file2 foo/foo1 foo/foo2 foo/bar/bar1 foo/bar/bar2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:109: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:110: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls unknown \$ROOT_ARGS"
echo t_restricted_commands_consistent.at:110 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown $ROOT_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown $ROOT_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown $ROOT_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:110: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:110: cp stdout output"
echo t_restricted_commands_consistent.at:110 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:110: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $ROOT_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:110: grep \$i output"
echo t_restricted_commands_consistent.at:110 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:110: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $ROOT_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:110: grep \$i output"
echo t_restricted_commands_consistent.at:110 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:110: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:111: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls unknown \$INCLUDE_ARGS"
echo t_restricted_commands_consistent.at:111 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown $INCLUDE_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown $INCLUDE_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown $INCLUDE_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:111: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:111: cp stdout output"
echo t_restricted_commands_consistent.at:111 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:111: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $INCLUDE_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:111: grep \$i output"
echo t_restricted_commands_consistent.at:111 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:111: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $INCLUDE_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:111: grep \$i output"
echo t_restricted_commands_consistent.at:111 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:111: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:112: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls unknown \$EXCLUDE_ARGS"
echo t_restricted_commands_consistent.at:112 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown $EXCLUDE_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown $EXCLUDE_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown $EXCLUDE_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:112: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:112: cp stdout output"
echo t_restricted_commands_consistent.at:112 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:112: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $EXCLUDE_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:112: grep \$i output"
echo t_restricted_commands_consistent.at:112 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:112: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $EXCLUDE_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:112: grep \$i output"
echo t_restricted_commands_consistent.at:112 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:112: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:113: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls unknown \$BOTH_ARGS"
echo t_restricted_commands_consistent.at:113 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown $BOTH_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown $BOTH_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown $BOTH_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:113: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:113: cp stdout output"
echo t_restricted_commands_consistent.at:113 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:113: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $BOTH_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:113: grep \$i output"
echo t_restricted_commands_consistent.at:113 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:113: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $BOTH_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:113: grep \$i output"
echo t_restricted_commands_consistent.at:113 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:113: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:114: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls unknown \$DEPTH_ARGS"
echo t_restricted_commands_consistent.at:114 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown $DEPTH_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown $DEPTH_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown $DEPTH_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:114: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:114: cp stdout output"
echo t_restricted_commands_consistent.at:114 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:114: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $DEPTH_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:114: grep \$i output"
echo t_restricted_commands_consistent.at:114 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:114: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $DEPTH_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:114: grep \$i output"
echo t_restricted_commands_consistent.at:114 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:114: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:115: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert ."
echo t_restricted_commands_consistent.at:115 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:115: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# ls ignored

cat >ignore.lua <<'_ATEOF'

function ignore_file(name)
   if (string.find(name, "1$")) then return true end
   if (string.find(name, "2$")) then return true end
   return false
end
_ATEOF


# only unknown files are considered by ls ignored
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:128: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop file1 file2 foo/foo1 foo/foo2 foo/bar/bar1 foo/bar/bar2"
echo t_restricted_commands_consistent.at:128 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop file1 file2 foo/foo1 foo/foo2 foo/bar/bar1 foo/bar/bar2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop file1 file2 foo/foo1 foo/foo2 foo/bar/bar1 foo/bar/bar2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop file1 file2 foo/foo1 foo/foo2 foo/bar/bar1 foo/bar/bar2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:128: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:129: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile ignore.lua \$ROOT_ARGS"
echo t_restricted_commands_consistent.at:129 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile ignore.lua $ROOT_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile ignore.lua $ROOT_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile ignore.lua $ROOT_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:129: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:129: cp stdout output"
echo t_restricted_commands_consistent.at:129 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:129: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $ROOT_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:129: grep \$i output"
echo t_restricted_commands_consistent.at:129 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:129: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $ROOT_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:129: grep \$i output"
echo t_restricted_commands_consistent.at:129 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:129: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:130: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile ignore.lua \$INCLUDE_ARGS"
echo t_restricted_commands_consistent.at:130 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile ignore.lua $INCLUDE_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile ignore.lua $INCLUDE_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile ignore.lua $INCLUDE_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:130: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:130: cp stdout output"
echo t_restricted_commands_consistent.at:130 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:130: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $INCLUDE_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:130: grep \$i output"
echo t_restricted_commands_consistent.at:130 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:130: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $INCLUDE_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:130: grep \$i output"
echo t_restricted_commands_consistent.at:130 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:130: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:131: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile ignore.lua \$EXCLUDE_ARGS"
echo t_restricted_commands_consistent.at:131 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile ignore.lua $EXCLUDE_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile ignore.lua $EXCLUDE_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile ignore.lua $EXCLUDE_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:131: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:131: cp stdout output"
echo t_restricted_commands_consistent.at:131 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:131: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $EXCLUDE_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:131: grep \$i output"
echo t_restricted_commands_consistent.at:131 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:131: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $EXCLUDE_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:131: grep \$i output"
echo t_restricted_commands_consistent.at:131 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:131: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:132: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile ignore.lua \$BOTH_ARGS"
echo t_restricted_commands_consistent.at:132 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile ignore.lua $BOTH_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile ignore.lua $BOTH_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile ignore.lua $BOTH_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:132: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:132: cp stdout output"
echo t_restricted_commands_consistent.at:132 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:132: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $BOTH_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:132: grep \$i output"
echo t_restricted_commands_consistent.at:132 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:132: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $BOTH_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:132: grep \$i output"
echo t_restricted_commands_consistent.at:132 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:132: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:133: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile ignore.lua \$DEPTH_ARGS"
echo t_restricted_commands_consistent.at:133 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile ignore.lua $DEPTH_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile ignore.lua $DEPTH_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls ignored --rcfile ignore.lua $DEPTH_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:133: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:133: cp stdout output"
echo t_restricted_commands_consistent.at:133 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:133: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $DEPTH_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:133: grep \$i output"
echo t_restricted_commands_consistent.at:133 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:133: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $DEPTH_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:133: grep \$i output"
echo t_restricted_commands_consistent.at:133 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:133: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:134: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert ."
echo t_restricted_commands_consistent.at:134 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:134: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# ls missing

$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:138: rm file1 file2 foo/foo1 foo/foo2 foo/bar/bar1 foo/bar/bar2"
echo t_restricted_commands_consistent.at:138 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm file1 file2 foo/foo1 foo/foo2 foo/bar/bar1 foo/bar/bar2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm file1 file2 foo/foo1 foo/foo2 foo/bar/bar1 foo/bar/bar2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:138: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:139: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls missing \$ROOT_ARGS"
echo t_restricted_commands_consistent.at:139 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing $ROOT_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing $ROOT_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing $ROOT_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:139: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:139: cp stdout output"
echo t_restricted_commands_consistent.at:139 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:139: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $ROOT_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:139: grep \$i output"
echo t_restricted_commands_consistent.at:139 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:139: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $ROOT_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:139: grep \$i output"
echo t_restricted_commands_consistent.at:139 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:139: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:140: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls missing \$INCLUDE_ARGS"
echo t_restricted_commands_consistent.at:140 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing $INCLUDE_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing $INCLUDE_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing $INCLUDE_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:140: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:140: cp stdout output"
echo t_restricted_commands_consistent.at:140 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:140: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $INCLUDE_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:140: grep \$i output"
echo t_restricted_commands_consistent.at:140 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:140: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $INCLUDE_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:140: grep \$i output"
echo t_restricted_commands_consistent.at:140 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:140: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:141: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls missing \$EXCLUDE_ARGS"
echo t_restricted_commands_consistent.at:141 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing $EXCLUDE_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing $EXCLUDE_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing $EXCLUDE_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:141: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:141: cp stdout output"
echo t_restricted_commands_consistent.at:141 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:141: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $EXCLUDE_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:141: grep \$i output"
echo t_restricted_commands_consistent.at:141 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:141: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $EXCLUDE_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:141: grep \$i output"
echo t_restricted_commands_consistent.at:141 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:141: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:142: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls missing \$BOTH_ARGS"
echo t_restricted_commands_consistent.at:142 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing $BOTH_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing $BOTH_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing $BOTH_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:142: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:142: cp stdout output"
echo t_restricted_commands_consistent.at:142 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:142: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $BOTH_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:142: grep \$i output"
echo t_restricted_commands_consistent.at:142 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:142: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $BOTH_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:142: grep \$i output"
echo t_restricted_commands_consistent.at:142 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:142: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:143: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls missing \$DEPTH_ARGS"
echo t_restricted_commands_consistent.at:143 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing $DEPTH_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing $DEPTH_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing $DEPTH_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:143: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:143: cp stdout output"
echo t_restricted_commands_consistent.at:143 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:143: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $DEPTH_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:143: grep \$i output"
echo t_restricted_commands_consistent.at:143 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:143: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $DEPTH_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:143: grep \$i output"
echo t_restricted_commands_consistent.at:143 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:143: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:144: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert ."
echo t_restricted_commands_consistent.at:144 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:144: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >file1 <<'_ATEOF'
file1 changes for testing ls known
_ATEOF

cat >file2 <<'_ATEOF'
file2 changes for testing ls known
_ATEOF

cat >foo/foo1 <<'_ATEOF'
foo1 changes for testing ls known
_ATEOF

cat >foo/foo2 <<'_ATEOF'
foo2 changes for testing ls known
_ATEOF

cat >foo/bar/bar1 <<'_ATEOF'
bar1 changes for testing ls known
_ATEOF

cat >foo/bar/bar2 <<'_ATEOF'
bar2 changes for testing ls known
_ATEOF



# ls known



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:150: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls known \$ROOT_ARGS"
echo t_restricted_commands_consistent.at:150 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known $ROOT_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known $ROOT_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known $ROOT_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:150: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:150: cp stdout output"
echo t_restricted_commands_consistent.at:150 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:150: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $ROOT_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:150: grep \$i output"
echo t_restricted_commands_consistent.at:150 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:150: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $ROOT_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:150: grep \$i output"
echo t_restricted_commands_consistent.at:150 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:150: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:151: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls known \$INCLUDE_ARGS"
echo t_restricted_commands_consistent.at:151 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known $INCLUDE_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known $INCLUDE_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known $INCLUDE_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:151: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:151: cp stdout output"
echo t_restricted_commands_consistent.at:151 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:151: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $INCLUDE_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:151: grep \$i output"
echo t_restricted_commands_consistent.at:151 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:151: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $INCLUDE_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:151: grep \$i output"
echo t_restricted_commands_consistent.at:151 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:151: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:152: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls known \$EXCLUDE_ARGS"
echo t_restricted_commands_consistent.at:152 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known $EXCLUDE_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known $EXCLUDE_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known $EXCLUDE_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:152: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:152: cp stdout output"
echo t_restricted_commands_consistent.at:152 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:152: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $EXCLUDE_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:152: grep \$i output"
echo t_restricted_commands_consistent.at:152 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:152: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $EXCLUDE_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:152: grep \$i output"
echo t_restricted_commands_consistent.at:152 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:152: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:153: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls known \$BOTH_ARGS"
echo t_restricted_commands_consistent.at:153 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known $BOTH_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known $BOTH_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known $BOTH_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:153: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:153: cp stdout output"
echo t_restricted_commands_consistent.at:153 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:153: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $BOTH_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:153: grep \$i output"
echo t_restricted_commands_consistent.at:153 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:153: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $BOTH_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:153: grep \$i output"
echo t_restricted_commands_consistent.at:153 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:153: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:154: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls known \$DEPTH_ARGS"
echo t_restricted_commands_consistent.at:154 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known $DEPTH_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known $DEPTH_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known $DEPTH_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:154: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:154: cp stdout output"
echo t_restricted_commands_consistent.at:154 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:154: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $DEPTH_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:154: grep \$i output"
echo t_restricted_commands_consistent.at:154 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:154: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $DEPTH_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:154: grep \$i output"
echo t_restricted_commands_consistent.at:154 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:154: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done




# status



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:158: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status \$ROOT_ARGS"
echo t_restricted_commands_consistent.at:158 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status $ROOT_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status $ROOT_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status $ROOT_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:158: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:158: cp stdout output"
echo t_restricted_commands_consistent.at:158 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:158: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $ROOT_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:158: grep \$i output"
echo t_restricted_commands_consistent.at:158 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:158: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $ROOT_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:158: grep \$i output"
echo t_restricted_commands_consistent.at:158 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:158: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:159: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status \$INCLUDE_ARGS"
echo t_restricted_commands_consistent.at:159 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status $INCLUDE_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status $INCLUDE_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status $INCLUDE_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:159: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:159: cp stdout output"
echo t_restricted_commands_consistent.at:159 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:159: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $INCLUDE_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:159: grep \$i output"
echo t_restricted_commands_consistent.at:159 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:159: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $INCLUDE_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:159: grep \$i output"
echo t_restricted_commands_consistent.at:159 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:159: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:160: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status \$EXCLUDE_ARGS"
echo t_restricted_commands_consistent.at:160 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status $EXCLUDE_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status $EXCLUDE_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status $EXCLUDE_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:160: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:160: cp stdout output"
echo t_restricted_commands_consistent.at:160 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:160: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $EXCLUDE_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:160: grep \$i output"
echo t_restricted_commands_consistent.at:160 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:160: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $EXCLUDE_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:160: grep \$i output"
echo t_restricted_commands_consistent.at:160 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:160: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:161: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status \$BOTH_ARGS"
echo t_restricted_commands_consistent.at:161 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status $BOTH_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status $BOTH_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status $BOTH_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:161: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:161: cp stdout output"
echo t_restricted_commands_consistent.at:161 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:161: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $BOTH_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:161: grep \$i output"
echo t_restricted_commands_consistent.at:161 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:161: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $BOTH_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:161: grep \$i output"
echo t_restricted_commands_consistent.at:161 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:161: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:162: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status \$DEPTH_ARGS"
echo t_restricted_commands_consistent.at:162 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status $DEPTH_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status $DEPTH_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status $DEPTH_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:162: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:162: cp stdout output"
echo t_restricted_commands_consistent.at:162 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:162: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $DEPTH_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:162: grep \$i output"
echo t_restricted_commands_consistent.at:162 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:162: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $DEPTH_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:162: grep \$i output"
echo t_restricted_commands_consistent.at:162 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:162: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done




# diff



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:166: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff \$ROOT_ARGS"
echo t_restricted_commands_consistent.at:166 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff $ROOT_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff $ROOT_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff $ROOT_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:166: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:166: cp stdout output"
echo t_restricted_commands_consistent.at:166 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:166: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $ROOT_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:166: grep \$i output"
echo t_restricted_commands_consistent.at:166 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:166: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $ROOT_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:166: grep \$i output"
echo t_restricted_commands_consistent.at:166 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:166: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:167: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff \$INCLUDE_ARGS"
echo t_restricted_commands_consistent.at:167 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff $INCLUDE_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff $INCLUDE_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff $INCLUDE_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:167: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:167: cp stdout output"
echo t_restricted_commands_consistent.at:167 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:167: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $INCLUDE_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:167: grep \$i output"
echo t_restricted_commands_consistent.at:167 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:167: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $INCLUDE_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:167: grep \$i output"
echo t_restricted_commands_consistent.at:167 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:167: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:168: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff \$EXCLUDE_ARGS"
echo t_restricted_commands_consistent.at:168 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff $EXCLUDE_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff $EXCLUDE_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff $EXCLUDE_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:168: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:168: cp stdout output"
echo t_restricted_commands_consistent.at:168 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:168: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $EXCLUDE_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:168: grep \$i output"
echo t_restricted_commands_consistent.at:168 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:168: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $EXCLUDE_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:168: grep \$i output"
echo t_restricted_commands_consistent.at:168 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:168: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:169: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff \$BOTH_ARGS"
echo t_restricted_commands_consistent.at:169 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff $BOTH_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff $BOTH_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff $BOTH_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:169: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:169: cp stdout output"
echo t_restricted_commands_consistent.at:169 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:169: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $BOTH_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:169: grep \$i output"
echo t_restricted_commands_consistent.at:169 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:169: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $BOTH_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:169: grep \$i output"
echo t_restricted_commands_consistent.at:169 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:169: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:170: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff \$DEPTH_ARGS"
echo t_restricted_commands_consistent.at:170 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff $DEPTH_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff $DEPTH_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff $DEPTH_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:170: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:170: cp stdout output"
echo t_restricted_commands_consistent.at:170 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:170: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $DEPTH_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:170: grep \$i output"
echo t_restricted_commands_consistent.at:170 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:170: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $DEPTH_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:170: grep \$i output"
echo t_restricted_commands_consistent.at:170 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:170: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done




# revert


cat >file1 <<'_ATEOF'
file1 revert root
_ATEOF

cat >file2 <<'_ATEOF'
file2 revert root
_ATEOF

cat >foo/foo1 <<'_ATEOF'
foo1 revert root
_ATEOF

cat >foo/foo2 <<'_ATEOF'
foo2 revert root
_ATEOF

cat >foo/bar/bar1 <<'_ATEOF'
bar1 revert root
_ATEOF

cat >foo/bar/bar2 <<'_ATEOF'
bar2 revert root
_ATEOF




$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:175: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert \$ROOT_ARGS"
echo t_restricted_commands_consistent.at:175 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert $ROOT_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert $ROOT_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert $ROOT_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:175: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:175: cp stderr output"
echo t_restricted_commands_consistent.at:175 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stderr output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stderr output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:175: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $ROOT_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:175: grep \$i output"
echo t_restricted_commands_consistent.at:175 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:175: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $ROOT_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:175: grep \$i output"
echo t_restricted_commands_consistent.at:175 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:175: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





cat >file1 <<'_ATEOF'
file1 revert include
_ATEOF

cat >file2 <<'_ATEOF'
file2 revert include
_ATEOF

cat >foo/foo1 <<'_ATEOF'
foo1 revert include
_ATEOF

cat >foo/foo2 <<'_ATEOF'
foo2 revert include
_ATEOF

cat >foo/bar/bar1 <<'_ATEOF'
bar1 revert include
_ATEOF

cat >foo/bar/bar2 <<'_ATEOF'
bar2 revert include
_ATEOF




$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:178: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert \$INCLUDE_ARGS"
echo t_restricted_commands_consistent.at:178 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert $INCLUDE_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert $INCLUDE_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert $INCLUDE_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:178: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:178: cp stderr output"
echo t_restricted_commands_consistent.at:178 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stderr output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stderr output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:178: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $INCLUDE_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:178: grep \$i output"
echo t_restricted_commands_consistent.at:178 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:178: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $INCLUDE_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:178: grep \$i output"
echo t_restricted_commands_consistent.at:178 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:178: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





cat >file1 <<'_ATEOF'
file1 revert exclude
_ATEOF

cat >file2 <<'_ATEOF'
file2 revert exclude
_ATEOF

cat >foo/foo1 <<'_ATEOF'
foo1 revert exclude
_ATEOF

cat >foo/foo2 <<'_ATEOF'
foo2 revert exclude
_ATEOF

cat >foo/bar/bar1 <<'_ATEOF'
bar1 revert exclude
_ATEOF

cat >foo/bar/bar2 <<'_ATEOF'
bar2 revert exclude
_ATEOF




$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:181: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert \$EXCLUDE_ARGS"
echo t_restricted_commands_consistent.at:181 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert $EXCLUDE_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert $EXCLUDE_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert $EXCLUDE_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:181: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:181: cp stderr output"
echo t_restricted_commands_consistent.at:181 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stderr output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stderr output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:181: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $EXCLUDE_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:181: grep \$i output"
echo t_restricted_commands_consistent.at:181 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:181: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $EXCLUDE_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:181: grep \$i output"
echo t_restricted_commands_consistent.at:181 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:181: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





cat >file1 <<'_ATEOF'
file1 revert both
_ATEOF

cat >file2 <<'_ATEOF'
file2 revert both
_ATEOF

cat >foo/foo1 <<'_ATEOF'
foo1 revert both
_ATEOF

cat >foo/foo2 <<'_ATEOF'
foo2 revert both
_ATEOF

cat >foo/bar/bar1 <<'_ATEOF'
bar1 revert both
_ATEOF

cat >foo/bar/bar2 <<'_ATEOF'
bar2 revert both
_ATEOF




$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:184: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert \$BOTH_ARGS"
echo t_restricted_commands_consistent.at:184 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert $BOTH_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert $BOTH_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert $BOTH_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:184: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:184: cp stderr output"
echo t_restricted_commands_consistent.at:184 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stderr output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stderr output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:184: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $BOTH_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:184: grep \$i output"
echo t_restricted_commands_consistent.at:184 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:184: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $BOTH_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:184: grep \$i output"
echo t_restricted_commands_consistent.at:184 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:184: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done





cat >file1 <<'_ATEOF'
file1 revert depth
_ATEOF

cat >file2 <<'_ATEOF'
file2 revert depth
_ATEOF

cat >foo/foo1 <<'_ATEOF'
foo1 revert depth
_ATEOF

cat >foo/foo2 <<'_ATEOF'
foo2 revert depth
_ATEOF

cat >foo/bar/bar1 <<'_ATEOF'
bar1 revert depth
_ATEOF

cat >foo/bar/bar2 <<'_ATEOF'
bar2 revert depth
_ATEOF




$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:187: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert \$DEPTH_ARGS"
echo t_restricted_commands_consistent.at:187 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert $DEPTH_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert $DEPTH_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert $DEPTH_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:187: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:187: cp stderr output"
echo t_restricted_commands_consistent.at:187 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stderr output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stderr output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:187: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $DEPTH_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:187: grep \$i output"
echo t_restricted_commands_consistent.at:187 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:187: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $DEPTH_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:187: grep \$i output"
echo t_restricted_commands_consistent.at:187 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:187: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done




# commit

OLD=`cat _MTN/revision`

cat >file1 <<'_ATEOF'
file1 commit root
_ATEOF

cat >file2 <<'_ATEOF'
file2 commit root
_ATEOF

cat >foo/foo1 <<'_ATEOF'
foo1 commit root
_ATEOF

cat >foo/foo2 <<'_ATEOF'
foo2 commit root
_ATEOF

cat >foo/bar/bar1 <<'_ATEOF'
bar1 commit root
_ATEOF

cat >foo/bar/bar2 <<'_ATEOF'
bar2 commit root
_ATEOF



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:193: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit -m root \$ROOT_ARGS"
echo t_restricted_commands_consistent.at:193 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m root $ROOT_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m root $ROOT_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m root $ROOT_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:193: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


NEW=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:196: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_restricted_commands_consistent.at:196 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:196: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:197: cp stdout output"
echo t_restricted_commands_consistent.at:197 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:197: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $ROOT_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:197: grep \$i output"
echo t_restricted_commands_consistent.at:197 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:197: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $ROOT_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:197: grep \$i output"
echo t_restricted_commands_consistent.at:197 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:197: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:198: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff -r \$OLD -r \$NEW"
echo t_restricted_commands_consistent.at:198 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r $OLD -r $NEW" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r $OLD -r $NEW ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r $OLD -r $NEW ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:198: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:199: cp stdout output"
echo t_restricted_commands_consistent.at:199 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:199: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $ROOT_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:199: grep \$i output"
echo t_restricted_commands_consistent.at:199 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:199: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $ROOT_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:199: grep \$i output"
echo t_restricted_commands_consistent.at:199 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:199: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done



OLD=`cat _MTN/revision`

cat >file1 <<'_ATEOF'
file1 commit includes
_ATEOF

cat >file2 <<'_ATEOF'
file2 commit includes
_ATEOF

cat >foo/foo1 <<'_ATEOF'
foo1 commit includes
_ATEOF

cat >foo/foo2 <<'_ATEOF'
foo2 commit includes
_ATEOF

cat >foo/bar/bar1 <<'_ATEOF'
bar1 commit includes
_ATEOF

cat >foo/bar/bar2 <<'_ATEOF'
bar2 commit includes
_ATEOF



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:203: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit -m includes \$INCLUDE_ARGS"
echo t_restricted_commands_consistent.at:203 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m includes $INCLUDE_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m includes $INCLUDE_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m includes $INCLUDE_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:203: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


NEW=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:206: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff -r \$OLD -r \$NEW"
echo t_restricted_commands_consistent.at:206 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r $OLD -r $NEW" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r $OLD -r $NEW ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r $OLD -r $NEW ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:206: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:207: cp stdout output"
echo t_restricted_commands_consistent.at:207 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:207: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $INCLUDE_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:207: grep \$i output"
echo t_restricted_commands_consistent.at:207 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:207: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $INCLUDE_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:207: grep \$i output"
echo t_restricted_commands_consistent.at:207 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:207: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:208: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff -r \$OLD -r \$NEW"
echo t_restricted_commands_consistent.at:208 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r $OLD -r $NEW" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r $OLD -r $NEW ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r $OLD -r $NEW ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:208: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:209: cp stdout output"
echo t_restricted_commands_consistent.at:209 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:209: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $INCLUDE_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:209: grep \$i output"
echo t_restricted_commands_consistent.at:209 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:209: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $INCLUDE_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:209: grep \$i output"
echo t_restricted_commands_consistent.at:209 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:209: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done



OLD=`cat _MTN/revision`

cat >file1 <<'_ATEOF'
file1 commit excludes
_ATEOF

cat >file2 <<'_ATEOF'
file2 commit excludes
_ATEOF

cat >foo/foo1 <<'_ATEOF'
foo1 commit excludes
_ATEOF

cat >foo/foo2 <<'_ATEOF'
foo2 commit excludes
_ATEOF

cat >foo/bar/bar1 <<'_ATEOF'
bar1 commit excludes
_ATEOF

cat >foo/bar/bar2 <<'_ATEOF'
bar2 commit excludes
_ATEOF



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:213: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit -m excludes \$EXCLUDE_ARGS"
echo t_restricted_commands_consistent.at:213 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m excludes $EXCLUDE_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m excludes $EXCLUDE_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m excludes $EXCLUDE_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:213: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


NEW=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:216: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_restricted_commands_consistent.at:216 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:216: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:217: cp stdout output"
echo t_restricted_commands_consistent.at:217 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:217: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $EXCLUDE_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:217: grep \$i output"
echo t_restricted_commands_consistent.at:217 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:217: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $EXCLUDE_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:217: grep \$i output"
echo t_restricted_commands_consistent.at:217 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:217: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:218: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff -r \$OLD -r \$NEW"
echo t_restricted_commands_consistent.at:218 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r $OLD -r $NEW" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r $OLD -r $NEW ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r $OLD -r $NEW ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:218: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:219: cp stdout output"
echo t_restricted_commands_consistent.at:219 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:219: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $EXCLUDE_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:219: grep \$i output"
echo t_restricted_commands_consistent.at:219 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:219: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $EXCLUDE_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:219: grep \$i output"
echo t_restricted_commands_consistent.at:219 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:219: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done



OLD=`cat _MTN/revision`

cat >file1 <<'_ATEOF'
file1 commit both
_ATEOF

cat >file2 <<'_ATEOF'
file2 commit both
_ATEOF

cat >foo/foo1 <<'_ATEOF'
foo1 commit both
_ATEOF

cat >foo/foo2 <<'_ATEOF'
foo2 commit both
_ATEOF

cat >foo/bar/bar1 <<'_ATEOF'
bar1 commit both
_ATEOF

cat >foo/bar/bar2 <<'_ATEOF'
bar2 commit both
_ATEOF



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:223: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit -m both \$BOTH_ARGS"
echo t_restricted_commands_consistent.at:223 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m both $BOTH_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m both $BOTH_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m both $BOTH_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:223: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


NEW=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:226: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_restricted_commands_consistent.at:226 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:226: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:227: cp stdout output"
echo t_restricted_commands_consistent.at:227 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:227: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $BOTH_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:227: grep \$i output"
echo t_restricted_commands_consistent.at:227 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:227: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $BOTH_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:227: grep \$i output"
echo t_restricted_commands_consistent.at:227 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:227: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:228: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff -r \$OLD -r \$NEW"
echo t_restricted_commands_consistent.at:228 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r $OLD -r $NEW" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r $OLD -r $NEW ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r $OLD -r $NEW ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:228: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:229: cp stdout output"
echo t_restricted_commands_consistent.at:229 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:229: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $BOTH_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:229: grep \$i output"
echo t_restricted_commands_consistent.at:229 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:229: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $BOTH_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:229: grep \$i output"
echo t_restricted_commands_consistent.at:229 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:229: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done



OLD=`cat _MTN/revision`

cat >file1 <<'_ATEOF'
file1 commit depth
_ATEOF

cat >file2 <<'_ATEOF'
file2 commit depth
_ATEOF

cat >foo/foo1 <<'_ATEOF'
foo1 commit depth
_ATEOF

cat >foo/foo2 <<'_ATEOF'
foo2 commit depth
_ATEOF

cat >foo/bar/bar1 <<'_ATEOF'
bar1 commit depth
_ATEOF

cat >foo/bar/bar2 <<'_ATEOF'
bar2 commit depth
_ATEOF



$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:233: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit -m depth \$DEPTH_ARGS"
echo t_restricted_commands_consistent.at:233 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m depth $DEPTH_ARGS" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m depth $DEPTH_ARGS ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m depth $DEPTH_ARGS ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:233: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


NEW=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:236: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_restricted_commands_consistent.at:236 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:236: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:237: cp stdout output"
echo t_restricted_commands_consistent.at:237 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:237: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $DEPTH_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:237: grep \$i output"
echo t_restricted_commands_consistent.at:237 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:237: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $DEPTH_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:237: grep \$i output"
echo t_restricted_commands_consistent.at:237 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:237: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:238: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net diff -r \$OLD -r \$NEW"
echo t_restricted_commands_consistent.at:238 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r $OLD -r $NEW" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r $OLD -r $NEW ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net diff -r $OLD -r $NEW ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:238: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:239: cp stdout output"
echo t_restricted_commands_consistent.at:239 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:239: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


for i in $DEPTH_INCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:239: grep \$i output"
echo t_restricted_commands_consistent.at:239 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:239: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done


for i in $DEPTH_EXCLUDED
do
$at_traceoff
echo "$at_srcdir/t_restricted_commands_consistent.at:239: grep \$i output"
echo t_restricted_commands_consistent.at:239 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $i output" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $i output ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $i output ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restricted_commands_consistent.at:239: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

done



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  295 ) # 295. t_rosterify_drop_attrs.at:1: rosterify --drop-attr
    at_setup_line='t_rosterify_drop_attrs.at:1'
    at_desc='rosterify --drop-attr'
    $at_quiet $ECHO_N "295: rosterify --drop-attr                        $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "295. t_rosterify_drop_attrs.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_rosterify_drop_attrs.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_rosterify_drop_attrs.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_drop_attrs.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_drop_attrs.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_rosterify_drop_attrs.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_drop_attrs.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_drop_attrs.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_rosterify_drop_attrs.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_drop_attrs.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_drop_attrs.at:2: rm test_keys"
echo t_rosterify_drop_attrs.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_drop_attrs.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_rosterify_drop_attrs.at:3: echo \$UNB64_COMMAND"
echo t_rosterify_drop_attrs.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_drop_attrs.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test -n "`command -v gunzip`" 2>/dev/null; then
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  UNGZ_COMMAND="gunzip -c"
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_rosterify_drop_attrs.at:3: echo \$UNGZ_COMMAND"
echo t_rosterify_drop_attrs.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNGZ_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_drop_attrs.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# This is a db containing two revisions.  The first revision contains the
# file "testfile", and has a .mt-attrs file that contains:
###
#   file "testfile"
#    foo "bar"
#execute "yes"
###
# The second revision is identical, except it also contains the file
# "otherfile".  The existence of the second revision is purely to work
# around a current bug in rosterify, in which it breaks for revisions
# which have no parents and no children.  (It hits an invariant;
# without the invariant, it would silently throw such revisions away.)

cat >test.db.dump.gz.b64 <<'_ATEOF'
H4sICHgkwkMAA3Rlc3QuZGIuZHVtcADtWFmP4siWfi5+BeqXrhbZjfflXrV0bWPA4AVjwMto
VArbYWzAC17Bv/4GZGVWVS49lX1HmpexBLIhzhLfOefzOSHKM0Ufyo6kbi1lJ/9zIK1lYSMP
N4KoykO/BFkQf4FFHsTV4NPnwacYVPEwy+th1pxOwyZLzg18GD5dv/8+vC/Io2EJU5BkSbYf
Rgk8hdWwggUoQQ3DoX8d/vKPXwafHrW/pw3pOuRJVg27pI6Rujapkjz7EsCyrv5owamBg093
x74peHEhDchCmKfDGF5+h1mQh8h6Eg4+/fZin6H/pQVlNXiS/Px8h6TRNp5NPDxrroK8gLeN
gqI4JQGokXP3xyHS9CyegRS+FL6Lo0XDI7w+L7xv6NXKrwsfd/u09BGmz4+ePdxN/Pb858ud
RckJfgnhqQa3+H0afErCtzZTlzmK1FPsbkLDIM9qmNVIzAfVC9d+jM1tefUHUpyX39v744b0
/fYH4VtUwiSKhnV+s4FMN0E9DJqyRNaGUYnCdTM4+PR1n0n4cP/ht9dhuxu+pyUyXpRJCsrr
DdWHn9lVCL5z7AmIIE+LElYVREafEuZJ5DG6Ny13TxTdkteboaJvjEdHhjtB3crW519DGsMA
gwW0T2E8FgUAEBTAAKAggwcQBAzhwzDg2F8ffp1TlSJ8vca4bm7lg9rLp91WKhaqRYmVZ1FT
RdirGz4yrWNRbZPFkt0mup9i4jLZa+XOTcxKGBxsu4IWd9Pz5+DXv3QvolkiJHkmApAnMIYh
OBanIp8IIIZFLAF5KiIImoteusfVSh9kC7pTBGUiMPre/RlrVOCHGIXRJAmIiCKjgGF4PGRZ
MqRxLAgBi0UUTjDgpTWsXVpBvxf2Qq1Va1M078Yerf2QBCnIkghW9SMz/CVJfYyeXlfKW8T0
ZP6pAJ7d+a4I3maBu6a8AMi5W6refAnivILZzYOmguXg09us8L2gf8r9wSeU8wVIyrf44ztX
i8ZHTPUFLX50q0r2Gaib8qUFJLW2hLE1F/DhtzUItF/+67aTfyXhP5Bj//3Lc4nefn0Y3gr1
7vDD8Ks/D9/E36jeF0g91fGbu31RygCFtY4hKlGEG0o2xNDgWd9bhPUKC4i+4Ldo/UXwXjPY
f0xi31fLC5PPdUNGJAY4ImAx/F5CZBSxDKBIAieICIIQwwMO56hblQKKCkgaEU3ARxSBhSxF
3qiG5ABaghiMwCif4BjyZYl1jqitl4IidHK3oB1a0BiRXub12lkZwoLQi3J8YGtdX8JYEIim
harM2lYhTtNs4Hk8tiQxY0WCNe+mUxmOHLXK3LXcMoK392bURboZeb9e3yPuvxPw11z+s3T+
Tcc7cfkWkb8L84VUr1020YROwOZNygmKXiUXlT8k11W5MbfHhFtR9mg01oxc6O0pN5P16fYo
7rbLQRl754PUBnGxvkatN+FZttkTHS2vNvZ0oYNZa1RqveR2vejsgbUslzuO740mUsnDVWJz
31mcN8I6HcynSjHFc6GYiZpVmaOqMEN+zDhzgrMXjeS/HavvGON/l1hfx/xRC3pGPILCkyDp
8hUfor/fCzVirK/uDm/20upVRL/bzLdXNeQon2bpkIYUS9AUyZPQBxQfBhB9qNDnORhSRIhi
mh2qfxW5n1/+QFmFnjVlFmoCNpOs88xSfHJiyqJgbgWBmqnCRBLjbinuTYmm2t2hLM9uvolW
m72dMouiUUdHQ14HOmFYwUCs7DMT+JSdktnpmna782Jx7W4/Rdf91u3S8zVZq6vLOq8iddYQ
BCfEcg80auELc7zY71mpa9tdOIjma0cXHFnbGxy/Fw/HIwwuakJtxxuGnZTq4bheCclJ2tuq
p7ecC40Z7wgruLevJRvrAt8pomz++eerNHhuvlG/jkqivN6TAcF8I7tX7443uvZHJg3i5PRW
9/muwFfyfDT0MLzLv2bQV949RxdFyY9oHsMZnuBCJqBRpH0GlTGNo3aHBwTwI54ENM8HL5uY
95X+tMaHXwOSJTGGhiHtYxyDYxGO0SHLQYjxHEaQIOBhGJJ++D7g/zc9zY9R+P/u5Y3X9o8R
ek4OnPBxPwQMz+MMzlMcwGnUaDN8wPtkgEMYRQxB4j73kcxES++DMroJZ7s+nC2urk0fwL0b
fs1LYX82rivNVBeLibI6jrbecgN6W897c6ph3GrsHWnR0TZKvwxmyK62PDoZbllh5aZNuVl6
WtJnp2wzsPu27hnFtLbjwKUzlhDAaESd0nmYZOcwIg5selInB1eninPsmWMV2VUKROt8i8tW
002ro+pNrdHAmV6MIo+0mKGtBbm3zN2qnbmtzi6Pr6eHd4CNSJ7laQLjCIphOZJGFxHSIUEi
4EiMRyTuI7ww/GPAopcJvFH5Qej0BOs0C+uMndkZk/yi9+izfxviUmwlym1dY3087tVTxbp9
UlmzWPLyBNd414MmNgpr+zpSNrM4dMn6eLqoxxkby4a7z1JSxfTt2qkG+zW7jaNZfxz3m2u9
m4lplSsTU1hY54nYlXIclDPaANFusjBxyr401Wg0Z6xrdFzi+dnir0yzN8dzd+DjZyWmXYM4
Hpoo2mUrRhdFlugUt/ppiCGG3nRBBFkyIAOawNH8GqEJLWBwzkdDKwWjgI5YP/wYxKCp47y8
yaRFb87F1k15Sk311jffBlcVm4MQO9nWnzQlK82VNbm2Kk2Y1z4zA6SejhwrTxwLS08Vw+wo
N/aBg9t8xHUTB8MdrYwdAlTtYKmRV72uqaSJK2p7YkgNuqdRGx522DXLONZYo85XUnJlEasq
uVOii0SR09wbe7VPuCx+Tmo5AONkIJ2Bk9cHm16G3GiVbhpV2O732/WV7X4aXMCgKyICnI4i
xAh+dB+6MZTREQlJwEU4i7pLjvkYuEEMsj085Xt076aXGMwWlWvv38Q1U00H9pOAqWgwCYmT
JE3wfV5cGyWhd+O2bxNiS22rE2C2OO4drguNODAe2drkDghGa2fBmDWNrTzQS6pYWat+HESH
RNY2iW8QLOT6o5ETcmrHuGrFrRQ7Tp0mY6bahytvSgkMJgdy6i16iWGsgqWvowEMtyfZ3o5o
PmZgKRHptS9Noj1yDfXTuKL3Kc5FYeRjkApYFmUwicOIYn00IpEYSyCMeR4Rx0fexh8kXHEW
rvmYHpWTA9cEiXUtE2+pXiBkZ1I4GV9wzMHJ4KhuzFMP9XXkja0Lz5XKKodyQhJcB3IuBOd8
gFO67gocEIQ4yAypEi7Zcd6uz5tTe52V2tY6V8tZWmNk3ti6sjnKF9vU+eVF6kjRobxgdnaj
K0ZRg2MErLgqyWJ0SMep1Vib+ahtNbE3uZ8GlqBCEAEK432O4iEdYdSNBXwQ8jxL+CRGkSgR
Q/9Dbc5fES6u9XmnvQNxEhw0ab7u2Ll7EZUQXKdzy5kfpQKKaT5a9VVk0Je1tvc9M501Kdbn
a5NvTZmHRXxK8ULguuoibsXBbgSckXuGUrYHhCgrwrptsNVVPduj+kzgExruuRGe6XxYiwKG
45cDXdkUQ3LwNKmMgyJ1DZWyojMoloZHt9d+useYmeYpF8Zch8GqWE7Mn4YYiwgfY7DIZ2kq
4mmciFiSpgLAUAhlCjEGBujAZ+HHIP4w4ZpAwSFtz0uwGtWLYsctwCQyPXIcWVC8srpVEexk
PMOpq3sAGzBHA6/F9Z1GkFxmdHWVA+bcHSxxUNn+ytfrsyrPl8plx8sMucLnk0OvxumOZ6ho
FHjuVmy0APPXa63ft9fIn3rOtg7aDPqeMzpY481GGPCMwMsFTmF+f4Sc5jobvOM2o+ms2/40
uDjB8jhCBoMBc+sY0CODWjOG5onIpwIEM0Yhzog+Bu5HCFfbM/VOOVvGKJNNtnKZ0Kt3y9wM
wxEL0tmFwPnRCbuUhiMc6/IkbUI6E6TQFmxmLjN13k1kQ+k2xSASr6OJVPWFd5iNrtBebDku
pyim29K7Oa2g0RKcbENkXYmTDjCjg26+bM4bOvJ8tRWsCVhqeJDzs0FzmDjb5JzzDjvFvfH6
SvpWdWhhWilvHKw+TwF/eVBz67M/1/BSP04gjyK//SdHMk9K3u25q78zi/140k6sevM80URJ
Zkliic1b1YuNzUjqkiqlifNOwsEsjlq+mIwJqu+4YK5x6WFGHMFgp3vJ7BwYS2k6rxYsO5Ep
XGwVQwXK0vOlwF+pYL5ne92BKqmEeCpFm3o5Hsk2JtBhXwTirl8p49NgvdxWzHjKquuGKtBU
v4VzdUKEWBqEoUt1RUWcruJWEBsj5/GlqMULRrjKTadqpgi5NHDbxo6izXignrHEOwXzBTiu
zUrYlmEAbVPA8noNZdBgmdNJubERqAsmvnli/xrYD5TEj8Dauk2VE024TMcstsQujntsL8Dq
YvGUdAAstHjikfWGccfd+BJO6ktftzN+NT/5A9+/GKt+tnaFPMXybg+k2fFo6fYpLvClsDlv
JyujR2ztuOzFOY3Ltk0Lm8hjeu/tKma93VYjZ1ltjQEWJ5SN6UYZZNwowqbYRuxE6xgfM1MH
U/cqY4pcaTKgYrvxptDcrUN/zq0ivtVGh5qngxGjbthsPDB5xhjDNCOcrO15fDW/jqaxFu9j
yaVrJjnlS9ddq0c57xLPGweTFXaMLaH7BvLXelL0iey8PlL48uXxRMTQ3zhu+Px42vGejjvZ
ffmS/Cj9SIGfk/9R7jbzfnmcz9+Qf5yI73/fFBmapmz+Ofg3mUznfCseAAA=
_ATEOF


$at_traceoff
echo "$at_srcdir/t_rosterify_drop_attrs.at:86: rm -f test.db"
echo t_rosterify_drop_attrs.at:86 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f test.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f test.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_drop_attrs.at:86: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rosterify_drop_attrs.at:88: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o test.db.dump.gz test.db.dump.gz.b64
else
  \$UNB64_COMMAND <test.db.dump.gz.b64 >test.db.dump.gz
fi
"
echo t_rosterify_drop_attrs.at:88 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o test.db.dump.gz test.db.dump.gz.b64
else
  $UNB64_COMMAND <test.db.dump.gz.b64 >test.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o test.db.dump.gz test.db.dump.gz.b64
else
  $UNB64_COMMAND <test.db.dump.gz.b64 >test.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_drop_attrs.at:88: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_drop_attrs.at:88: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"test.db.dump.gz\" != \"test.db.dump.gz\"; then
    mv test.db.dump.gz test.db.dump.gz
  fi
  gunzip test.db.dump.gz
else
  \$UNGZ_COMMAND <test.db.dump.gz >test.db.dump
fi
"
echo t_rosterify_drop_attrs.at:88 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "test.db.dump.gz" != "test.db.dump.gz"; then
    mv test.db.dump.gz test.db.dump.gz
  fi
  gunzip test.db.dump.gz
else
  $UNGZ_COMMAND <test.db.dump.gz >test.db.dump
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "test.db.dump.gz" != "test.db.dump.gz"; then
    mv test.db.dump.gz test.db.dump.gz
  fi
  gunzip test.db.dump.gz
else
  $UNGZ_COMMAND <test.db.dump.gz >test.db.dump
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_drop_attrs.at:88: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rosterify_drop_attrs.at:89: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump"
echo t_rosterify_drop_attrs.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_drop_attrs.at:89: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_drop_attrs.at:90: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db migrate"
echo t_rosterify_drop_attrs.at:90 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_drop_attrs.at:90: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rosterify_drop_attrs.at:92: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db rosterify"
echo t_rosterify_drop_attrs.at:92 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_rosterify_drop_attrs.at:92: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_drop_attrs.at:93: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db rosterify --drop-attr foo"
echo t_rosterify_drop_attrs.at:93 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify --drop-attr foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify --drop-attr foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify --drop-attr foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_drop_attrs.at:93: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >manifest_good <<'_ATEOF'
format_version "1"

dir ""

   file "testfile"
content [f572d396fae9206628714fb2ce00f72e94f2258f]
   attr "mtn:execute" "yes"
_ATEOF


$at_traceoff
echo "$at_srcdir/t_rosterify_drop_attrs.at:103: cat manifest_good"
echo t_rosterify_drop_attrs.at:103 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat manifest_good ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat manifest_good ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_drop_attrs.at:103: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_drop_attrs.at:103: mv stdout output1"
echo t_rosterify_drop_attrs.at:103 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_drop_attrs.at:103: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_drop_attrs.at:103:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_rosterify_drop_attrs.at:103 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_drop_attrs.at:103: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_drop_attrs.at:103: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select i: | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate toposort -@- | head -1 | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of -@-"
echo t_rosterify_drop_attrs.at:103 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select i: | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort -@- | head -1 | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of -@-" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select i: | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort -@- | head -1 | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of -@- ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select i: | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate toposort -@- | head -1 | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of -@- ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_drop_attrs.at:103: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_drop_attrs.at:103: mv stdout output2"
echo t_rosterify_drop_attrs.at:103 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_drop_attrs.at:103: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_drop_attrs.at:103:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_rosterify_drop_attrs.at:103 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_drop_attrs.at:103: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_drop_attrs.at:103: cmp output1 output2"
echo t_rosterify_drop_attrs.at:103 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_drop_attrs.at:103: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  296 ) # 296. t_rosterify_one_rev.at:1: rosterify on a db with 1 rev
    at_setup_line='t_rosterify_one_rev.at:1'
    at_desc='rosterify on a db with 1 rev'
    $at_quiet $ECHO_N "296: rosterify on a db with 1 rev                 $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "296. t_rosterify_one_rev.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_rosterify_one_rev.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_rosterify_one_rev.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_one_rev.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_one_rev.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_rosterify_one_rev.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_one_rev.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_one_rev.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_rosterify_one_rev.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_one_rev.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_one_rev.at:2: rm test_keys"
echo t_rosterify_one_rev.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_one_rev.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_rosterify_one_rev.at:3: echo \$UNB64_COMMAND"
echo t_rosterify_one_rev.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_one_rev.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test -n "`command -v gunzip`" 2>/dev/null; then
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  UNGZ_COMMAND="gunzip -c"
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_rosterify_one_rev.at:3: echo \$UNGZ_COMMAND"
echo t_rosterify_one_rev.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNGZ_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_one_rev.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# This is a db containing only one revision.  The revision contains
# two files; "testfile" and "testdir/otherfile".

cat >test.db.dump.gz.b64 <<'_ATEOF'
H4sICFkQw0MCA3Rlc3QuZGIuZHVtcADtWFmPm0oWfm5+BcpLEnUnZl/uVaSLbYwXwAsY7B6N
WgUUi81mFhv710/ZTjvdbXcmmbnSvAxSWwXUWb9zvjp0W1YGOi4vOurcGFjyn1hnJkumjJtS
W5VxpwCpGz7BPHPDErv7hN2FoAzxNKvwtI5jvE6jTQ0f8Ofryxf8tCHz8QImIEqjNMD9CMZe
iZcwBwWooIc7e/zDHx+wu7P297QhXassSkt8F1UhUreNyihLn1xYVOXXLYhriN2dHPuh4M2F
NCALXpbgIWy+wNTNPGQ98rC7z2/i9JynLShK7Fny02WFpFEYFxMPF82lm+XwGCjI8zhyQYWc
O93iSNNFPAUJfCt8Ekeb8DXcXzaeArra+X3jOdrnrec0fTp79nAy8fny8m1kfhTDJw/GFTji
d4fdRd6tYKoiQ0g9Y3cUwt0srWBaITEHlG9ce43NcXv5FSnOipf2vh4zfVq+Ej6i4kW+j1fZ
0QYyXbsV7tZFgazhfoHgOhrE7r7HGXkPpwefr2E7GT6VJTKeF1ECiv0xqw+/EpUHXjj2nAg3
S/ICliVERp8L5lnkjO5Ry8mTgW7IMxMf6Ob47AhuSepcNj59BKwHSYdjfZZxSIrwWVHgCEoA
Pu0LNEdTPuNyLMMTHx8+9plyIH2/WkKlzbmVppLWwCwbcyTnutmTs70blGQsZwciKOfLcKLK
G70t1Amr+EnuVQdpKilY7aw76knNt2/Yx5+65xLQ93mCIThAAwg9BrAEJHieQi8g6QsiKXqi
KAhv3dtXY9NgR6rVH5gGUZvrZmLBaUfSHaLDz6fHPSfLryBKQBr5sKzOfftTCvk98riu41u0
8Wz+uTwv7rwo0ds9etKU5QA5dyykoy9umJUwPXpQl7DA7m737EtBJ84c7A5VZA6i4lZ3v3A1
rx3EI09o89mtMgpSUNXFWwtIamZILaMvkfiPPShpH/5xjOSvyPsDOfbPD5cGOj59wI9tdHL4
Af/uz8MP8Ru99SZTz112M9o3jQYQrFUIUQOhvKHCQ/wJLvpu0clVLiD6gT/Q+gl41/zy91LM
pYDeoZn/JAHXzPOr5PNDx5sOv7h56XKKdwiWYjmSd0WRF2mXYR0e8D5JsxzPuYRIohUleFdd
vlB307SrSbse0a/TvQQsZ57YTdwv1SbLej11axJD3i/208gZFfmkDUcbmxlZtoo5SqzbBAFH
VZNTDbgHDZ8KvA7HE51hDvIgeaSWei+T1oQ2IPu1KBkLPSJEumy1xHha6/TjeOTsEI1cWOwV
Fi865O8lkmtMz1rQPeoblP4ISRdX/Y9evwcl6tDv7uJHe0l5hdiLYC6YeVBgHJZnPRYyPMUy
tEhDBzCi50L0x3iOKCC6po6YpavyrzxzsuYrqhp0rw0UT5MIpWNsFGPg0N2p3Jamc0liFFXq
dtrhbtQOph2W2VqrotgsM9OfmIGdcMO8Vu/XY3nm6tTYcLF2aW8412HshE7jfbKzNsPhfnd8
5O+D+XKXbPbRTJ00s6z0VaWmKEEK5QPQmKEj9ck8CPjObru1PMzvzxa6tJC1YCyIQXu1XkO3
USNm3jI5vluoq/VsIkVxJ7DVR30rLOFYERfSBAb2vuBDXRJ3g7Y8/fbtqgwuoyCaHlHJF/tT
MaA0H5v7iitvzJBn5nDDKL41C70r8J0szoYe8JP85ytcr7y7oItQ4gl07vKQ5CjeoxGmgKAc
SDO+wDMU5FgadSfp0p77fsz/m2P0dSL+f2DCn+B+QugCOqR80SM5wXNpyPOcwAlApNCP60KW
IwiadXlR8Ennd4rj4eP5ywktPMU6eMpwv7TZFTiR5jU19Dpdeqs4PbE1U8KWlQUpUSyjZMms
iUXRYZ0hMLpMm6vDyWOZzfR+bNybjukAH7CaPIVBArTehspprLNYrzgdEuXB9RSl1801fsFO
qUPPm06GU8vvGCuOpjthc+hxCe2aOhu7luwsmllYBtQ6MWF931V4FuttAOEVTi81KBI0/UUa
9pWeNqUG7en18PpOYnkAKRKiEZalIWQhxfEsBQQeja6ewNMcOvd43/dJ4fcSi/gcHtl0Je3Q
ybTTDKLRetOdZmaHsZk1+vR2ioOot8yI2lvONc8U5J4xnNBkvIn5UbKeOQtb6jzOi741WU/E
x3pGE3nPHLXXIlLu0EOumzA7xwioLYvZ1c4X1DG6EbskI1EBedgFfC0oe71ReLslNiTqE30h
xSrrzLdGp++Ml46fZ9HGopVEVzt6EsLZHiuYCctVI6aeEMsmOUh6ZW9JNeKXjfbLKXZdmkYf
AozDiALJiKLPQtrxCZYnPQ66ANIU7UKPcH8vxaCuwqw4FnGSH6b99naZiIya6FvnneTq4miv
C9peCEc+2B92UVHmotgd9Hf3hcCMWNAacIWYdO5HjKcBd2+Mq8laU0yxzuf1vblNZmJPsow2
Zo8itRMf5rKLTpdkqtkF1RUUsIvCuiGjIDiYrtMIW4HSbclnnPHIKO1lt91ZW3G61FuTUZuu
bWfVYIpNzxZ9Lq0Wy5LaDSjUE/lCbq9sffnLyeUYDkLCY6DnMT7NcALLAlHkAMWKQBAolHI0
vtGs93vJdUOQBjDOArReJk0IlGG5tIObeV3pOWuIE0WLi+XUHeg8uRq2mOTezae0Ncp6sndv
unXv0QxoS2ND07YkN7KkyhuXeqDMutm+tdcnfQPb+8Vyud+KdnA/H5QBJ5Nx2ETTjafyU7/V
aRjCcg3epvuut9ho+2DlkfKcrNzNJvDH93m5WY7Dthl4WD+e7riKGR02610tbInHWo2kelfS
dnZjHLwcSj8dzY+0/6mCTXU+EM8in/+bIfxZybtHwAuS+nXkXg3hFKU5dtHV2m251Srng9DP
uGRMEnGiaXaVx7vA2ByiaLvgvHkUVPemf3hMI94fsTRG59vRkl09ElMn03rZZmxNqCFsK6aS
iTM0wJcryjRo+zFPuYLbyz7v9TkHHaV16350CCaLOtnwkZNomCxa1HZiNTEcD9Vta9FvrcYZ
2fitjIAtn58julH0g77qOVXPkvaOBzrL+c5Y2CqR9HnanHcGSlDbE0xU7SIYBUZ7sCptMFVm
oRS4tRtY8ZiqIXCJ1VCULK2ilGUlTV//F2Ggd+XF9VD19HQe38b6jYHr03k0e0/HqQ+fnqLX
0ufuRJ+C/07uOB08nSeZG/Ln2eH0+qhorGkD80/sX04nDmdmFQAA
_ATEOF


$at_traceoff
echo "$at_srcdir/t_rosterify_one_rev.at:55: rm -f test.db"
echo t_rosterify_one_rev.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f test.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f test.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_one_rev.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rosterify_one_rev.at:57: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o test.db.dump.gz test.db.dump.gz.b64
else
  \$UNB64_COMMAND <test.db.dump.gz.b64 >test.db.dump.gz
fi
"
echo t_rosterify_one_rev.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o test.db.dump.gz test.db.dump.gz.b64
else
  $UNB64_COMMAND <test.db.dump.gz.b64 >test.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o test.db.dump.gz test.db.dump.gz.b64
else
  $UNB64_COMMAND <test.db.dump.gz.b64 >test.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_one_rev.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_one_rev.at:57: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"test.db.dump.gz\" != \"test.db.dump.gz\"; then
    mv test.db.dump.gz test.db.dump.gz
  fi
  gunzip test.db.dump.gz
else
  \$UNGZ_COMMAND <test.db.dump.gz >test.db.dump
fi
"
echo t_rosterify_one_rev.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "test.db.dump.gz" != "test.db.dump.gz"; then
    mv test.db.dump.gz test.db.dump.gz
  fi
  gunzip test.db.dump.gz
else
  $UNGZ_COMMAND <test.db.dump.gz >test.db.dump
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "test.db.dump.gz" != "test.db.dump.gz"; then
    mv test.db.dump.gz test.db.dump.gz
  fi
  gunzip test.db.dump.gz
else
  $UNGZ_COMMAND <test.db.dump.gz >test.db.dump
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_one_rev.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rosterify_one_rev.at:58: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump"
echo t_rosterify_one_rev.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_one_rev.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_one_rev.at:59: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db migrate"
echo t_rosterify_one_rev.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_one_rev.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rosterify_one_rev.at:61: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db rosterify"
echo t_rosterify_one_rev.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_one_rev.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >manifest_good <<'_ATEOF'
format_version "1"

dir ""

dir "testdir"

   file "testdir/otherfile"
content [a5de1b65f54b120f5986028af3f83632f4c65470]

   file "testfile"
content [c0eff70406a3aeed4a50e0772c0ee1f8919d9988]
_ATEOF


$at_traceoff
echo "$at_srcdir/t_rosterify_one_rev.at:75: cat manifest_good"
echo t_rosterify_one_rev.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat manifest_good ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat manifest_good ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_one_rev.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_one_rev.at:75: mv stdout output1"
echo t_rosterify_one_rev.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_one_rev.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_one_rev.at:75:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_rosterify_one_rev.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_one_rev.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_one_rev.at:75: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select i: | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of -@-"
echo t_rosterify_one_rev.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select i: | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of -@-" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select i: | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of -@- ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select i: | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of -@- ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_one_rev.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_one_rev.at:75: mv stdout output2"
echo t_rosterify_one_rev.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_one_rev.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_one_rev.at:75:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_rosterify_one_rev.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_one_rev.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_one_rev.at:75: cmp output1 output2"
echo t_rosterify_one_rev.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_one_rev.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  297 ) # 297. t_selectors_b_h.at:1: b: and h: selectors
    at_setup_line='t_selectors_b_h.at:1'
    at_desc='b: and h: selectors'
    $at_quiet $ECHO_N "297: b: and h: selectors                          $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "297. t_selectors_b_h.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_selectors_b_h.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_selectors_b_h.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_selectors_b_h.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:2: rm test_keys"
echo t_selectors_b_h.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_selectors_b_h.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_selectors_b_h.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV1=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
stuff stuff
_ATEOF



$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_selectors_b_h.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV2=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
chew chew
_ATEOF



$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah"
echo t_selectors_b_h.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV3=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:19: (echo \$REV1 && echo \$REV2) | sort"
echo t_selectors_b_h.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo $REV1 && echo $REV2) | sort" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo $REV1 && echo $REV2) | sort ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo $REV1 && echo $REV2) | sort ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:19: mv stdout output1"
echo t_selectors_b_h.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:19:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selectors_b_h.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select b:testbranch"
echo t_selectors_b_h.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:19: mv stdout output2"
echo t_selectors_b_h.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:19:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selectors_b_h.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:19: cmp output1 output2"
echo t_selectors_b_h.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:20: echo \$REV3"
echo t_selectors_b_h.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:20: mv stdout output1"
echo t_selectors_b_h.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:20:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selectors_b_h.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select b:otherbranch"
echo t_selectors_b_h.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:otherbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:otherbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:otherbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:20: mv stdout output2"
echo t_selectors_b_h.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:20:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selectors_b_h.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:20: cmp output1 output2"
echo t_selectors_b_h.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:21: echo \$REV3"
echo t_selectors_b_h.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:21: mv stdout output1"
echo t_selectors_b_h.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:21:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selectors_b_h.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select b:"
echo t_selectors_b_h.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b: ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b: ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:21: mv stdout output2"
echo t_selectors_b_h.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:21:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selectors_b_h.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:21: cmp output1 output2"
echo t_selectors_b_h.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:22: echo \$REV2"
echo t_selectors_b_h.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:22: mv stdout output1"
echo t_selectors_b_h.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:22:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selectors_b_h.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select h:testbranch"
echo t_selectors_b_h.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select h:testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select h:testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select h:testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:22: mv stdout output2"
echo t_selectors_b_h.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:22:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selectors_b_h.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:22: cmp output1 output2"
echo t_selectors_b_h.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:23: echo \$REV3"
echo t_selectors_b_h.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:23: mv stdout output1"
echo t_selectors_b_h.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:23:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selectors_b_h.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select h:otherbranch"
echo t_selectors_b_h.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select h:otherbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select h:otherbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select h:otherbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:23: mv stdout output2"
echo t_selectors_b_h.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:23:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selectors_b_h.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:23: cmp output1 output2"
echo t_selectors_b_h.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:24: echo \$REV3"
echo t_selectors_b_h.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:24: mv stdout output1"
echo t_selectors_b_h.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:24:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_selectors_b_h.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select h:"
echo t_selectors_b_h.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select h:" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select h: ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select h: ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:24: mv stdout output2"
echo t_selectors_b_h.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:24:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_selectors_b_h.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_selectors_b_h.at:24: cmp output1 output2"
echo t_selectors_b_h.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_selectors_b_h.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  298 ) # 298. t_revert_ignored.at:1: revert ignored files
    at_setup_line='t_revert_ignored.at:1'
    at_desc='revert ignored files'
    $at_quiet $ECHO_N "298: revert ignored files                         $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "298. t_revert_ignored.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_revert_ignored.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_revert_ignored.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_ignored.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_ignored.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_revert_ignored.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_ignored.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_ignored.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_revert_ignored.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_ignored.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_ignored.at:2: rm test_keys"
echo t_revert_ignored.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_ignored.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# revert, with only ignored files listed on the command line, should not
# revert anything


cat >foo <<'_ATEOF'
foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_revert_ignored.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_revert_ignored.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_ignored.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >bar <<'_ATEOF'
bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_revert_ignored.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add bar"
echo t_revert_ignored.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_ignored.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >baz <<'_ATEOF'
baz
_ATEOF

$at_traceoff
echo "$at_srcdir/t_revert_ignored.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add baz"
echo t_revert_ignored.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add baz" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add baz ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add baz ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_ignored.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo.ignored <<'_ATEOF'
foo.ignored
_ATEOF

cat >bar.ignored <<'_ATEOF'
bar.ignored
_ATEOF

cat >baz.ignored <<'_ATEOF'
baz.ignored
_ATEOF



cat >ignore.lua <<'_ATEOF'

function ignore_file(name)
   if (string.find(name, "%.ignored$")) then return true end
   return false
end
_ATEOF



$at_traceoff
echo "$at_srcdir/t_revert_ignored.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_revert_ignored.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_ignored.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo <<'_ATEOF'
foofoo
_ATEOF

cat >bar <<'_ATEOF'
barbar
_ATEOF

cat >baz <<'_ATEOF'
bazbaz
_ATEOF


$at_traceoff
echo "$at_srcdir/t_revert_ignored.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status --rcfile ignore.lua"
echo t_revert_ignored.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --rcfile ignore.lua" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --rcfile ignore.lua ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --rcfile ignore.lua ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_ignored.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_ignored.at:39: grep foo stdout"
echo t_revert_ignored.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foo stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foo stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_ignored.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_ignored.at:40: grep bar stdout"
echo t_revert_ignored.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep bar stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep bar stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_ignored.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_ignored.at:41: grep baz stdout"
echo t_revert_ignored.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep baz stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep baz stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_ignored.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_revert_ignored.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status --rcfile ignore.lua *.ignored"
echo t_revert_ignored.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --rcfile ignore.lua *.ignored" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --rcfile ignore.lua *.ignored ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --rcfile ignore.lua *.ignored ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_ignored.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_ignored.at:44: grep foo stdout"
echo t_revert_ignored.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foo stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foo stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_revert_ignored.at:44: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_ignored.at:45: grep bar stdout"
echo t_revert_ignored.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep bar stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep bar stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_revert_ignored.at:45: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_ignored.at:46: grep baz stdout"
echo t_revert_ignored.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep baz stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep baz stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_revert_ignored.at:46: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# revert with nothing but excluded files should do nothing

$at_traceoff
echo "$at_srcdir/t_revert_ignored.at:50: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert --rcfile ignore.lua *.ignored"
echo t_revert_ignored.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert --rcfile ignore.lua *.ignored" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert --rcfile ignore.lua *.ignored ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert --rcfile ignore.lua *.ignored ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_ignored.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_revert_ignored.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status --rcfile ignore.lua"
echo t_revert_ignored.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --rcfile ignore.lua" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --rcfile ignore.lua ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --rcfile ignore.lua ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_ignored.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_ignored.at:53: grep foo stdout"
echo t_revert_ignored.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep foo stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep foo stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_ignored.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_ignored.at:54: grep bar stdout"
echo t_revert_ignored.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep bar stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep bar stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_ignored.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_ignored.at:55: grep baz stdout"
echo t_revert_ignored.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep baz stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep baz stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_ignored.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  299 ) # 299. t_no_persist_phrase.at:3: disallowing persistence of passphrase
    at_setup_line='t_no_persist_phrase.at:3'
    at_desc='disallowing persistence of passphrase'
    $at_quiet $ECHO_N "299: disallowing persistence of passphrase        $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "299. t_no_persist_phrase.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_no_persist_phrase.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_no_persist_phrase.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_persist_phrase.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_persist_phrase.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_no_persist_phrase.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_persist_phrase.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_persist_phrase.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_no_persist_phrase.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_persist_phrase.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_persist_phrase.at:5: rm test_keys"
echo t_no_persist_phrase.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_persist_phrase.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >persist.lua <<'_ATEOF'

function persist_phrase_ok()
	return false
end

get_passphrase = nil
_ATEOF


cat >input.txt <<'_ATEOF'
version 0 of the file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_no_persist_phrase.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add input.txt"
echo t_no_persist_phrase.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_persist_phrase.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >input.txt <<'_ATEOF'
version 1 of the file
_ATEOF


cat >passphrase <<'_ATEOF'
tester@test.net
tester@test.net
tester@test.net
tester@test.net
_ATEOF


$at_traceoff
echo "$at_srcdir/t_no_persist_phrase.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=persist.lua commit --message=blah-blah <passphrase"
echo t_no_persist_phrase.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=persist.lua commit --message=blah-blah <passphrase" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=persist.lua commit --message=blah-blah <passphrase ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --rcfile=persist.lua commit --message=blah-blah <passphrase ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_persist_phrase.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


TSHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_no_persist_phrase.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls certs \$TSHA"
echo t_no_persist_phrase.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $TSHA" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $TSHA ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs $TSHA ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_persist_phrase.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_persist_phrase.at:33: mv stdout certs"
echo t_no_persist_phrase.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_persist_phrase.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_persist_phrase.at:34: grep branch certs"
echo t_no_persist_phrase.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep branch certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep branch certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_persist_phrase.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_persist_phrase.at:35: grep author certs"
echo t_no_persist_phrase.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep author certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep author certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_persist_phrase.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_persist_phrase.at:36: grep date certs"
echo t_no_persist_phrase.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep date certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep date certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_persist_phrase.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_persist_phrase.at:37: grep changelog certs"
echo t_no_persist_phrase.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep changelog certs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep changelog certs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_persist_phrase.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  300 ) # 300. t_check_db_format.at:1: db data format checking
    at_setup_line='t_check_db_format.at:1'
    at_desc='db data format checking'
    $at_quiet $ECHO_N "300: db data format checking                      $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "300. t_check_db_format.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_check_db_format.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_check_db_format.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_db_format.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_check_db_format.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_check_db_format.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_db_format.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_check_db_format.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_check_db_format.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_db_format.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_check_db_format.at:2: rm test_keys"
echo t_check_db_format.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_db_format.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_check_db_format.at:3: echo \$UNB64_COMMAND"
echo t_check_db_format.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_db_format.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test -n "`command -v gunzip`" 2>/dev/null; then
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  UNGZ_COMMAND="gunzip -c"
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_check_db_format.at:3: echo \$UNGZ_COMMAND"
echo t_check_db_format.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNGZ_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_db_format.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# A few times in our history we've had to do data migration beyond
# what the "db migrate" command can handle -- i.e., "db changesetify"
# and "db rosterify".  We would like for it to be the case, that all
# other commands give a nice error message if these commands need to
# be run.  This test makes sure that monotone exits with an error if
# given a db that appears to be very old.

cat >changesetify.db.dump.gz.b64 <<'_ATEOF'
H4sICA9Nz0MCA2NoYW5nZXNldGlmeS5kYi5kdW1wAO1WW2/aShB+xr9ilZcQlaZcDIRWkWrA
IlAMCZdcenRkrb3rSwK2YxuI+fWdtcE4tuG0PdV5OpZAsN6Z+Wa++Wa3Lfb6IyQ+dobzaf9e
/MJ1JqIwE9FMaA9FpLjYUg2ZOrZqeFyhyBUM7BnIsn1krRYLtLLM1xUtof3z8SMKN9gacukS
m5Zp6Ugz6YJ4yKMOdrFPCVICdPb5jCtE3o95A1/Ptml5aGP6Brhbm55pW7JKXd+7XOPFinKF
ENjBQeoBDxCB2Etk0LeP1FJtAtFNwhUuUnkSRV5j1+P2lsX4F1hDGnGIUuzZU22HskSx4yxM
FfsALvyLwFNsbuElTRuH5rAJvdAg3hgmlNm52xhlu98alakYISuFIS7il+nMNHNBZUIXPmb8
FbiCSfKS8V0bmNpzx4yQals+tXwwU7CXgvaeG7bduwTHtpuMd8kqHf58Z8xYIaamId9mMSD0
SvWRunJdiIY0F+hiAbnCLk+TlMKFiyxtYeCwLSG445pL7AasqqWfyYrgBLB9IVR76bjU8ygE
3TfM3iRil3kJkfRHU3EyQ/3RbBwBQffCcC5Oi+eVVrVFWxpfVxrNZlOtVUi50cQtrVap8bhe
I0q93KB8Uz0vnd/wXl/YPZ8C/3Y7ffsWULUjDKQ1f3t3w9a583TeS2yZGvX8SAwndflrisw2
R54W9+H3nMdwErznN37oyXYwgGPsMCyqYXvUYghWHnW5Qr4QkobKwla4AtDsYNPNk0wCqrNS
QJwybI5geaZuYX/lpiOA1WQqfJreCBV02ANFO/uLZfLVJJ8B2N9ncVey1RJivRkCLqEdntLB
PKdhU5Xat25utqnuxUCrb1DoSqgbNBsMJRz7y9NophYUvuiBrRPkZUX7Z3UbN9AR7f5OAbJy
/llFH3ykVB3DjJVdbl5R2sDVKgibb/AVTKo1TeNJs6o1sUrUuqpqBN6mlb0dl0fDgeTPN1tp
Xg6krVqbbZ+qs664kcofyrOuVB11vw9G3fvxdNavSKJXkeath7n4/I2bqltd0Du8W9vcDTfM
3fV1diRY9M2XXdvzqStbkKRsrZYK6KnIsX/JAicFZS0C+IpqGrCK+obpIR8rC+hougb7dJyE
oP7s3Mm2QOSFITYJADTB2s2MC3h9jHkQ9A4uYvGWXobgRDIxxYRe8Uq9WSd1GNHVOl9r1aiC
+RZRKXx4orSuKOGrBCi2nr2vjq3Yb5fQZPBf6veIJJR7nelrb9pXat07sS3czQWB7w2Fbqdt
bL619btOnV/fP7vu65M9025n+sOyMXBWww8vY3Gijqrjqcq1vYfXhqrwD8saMLTc3L8OBsGG
LWmBPn/aLF8DczK8fZvYnjbsrarVK8EQt1jiB4pwU3F0vdnZrNf3hNNuJo8j4VGU9PFVS28/
v7xQ9W1o8vNPs0az6w6fXya3grno6A/D76P11RMd91qPwi3VHwK3aYyE1qbfFu+urzPtFl/H
4AYHCnGDsBmgzGwWZEZrzj0uGjSqYS7y7iNHDXazJQpUQqF9zoB5f1v8zw/I95j/PwrpKYqi
oQWDClbkvEFwora7gZdg5cTBF23eX1p2podT7xjA04cUK1PRh+EbNVBkcvFvjqO9k5ySJSFD
wU40Y+rsZOfmrs65F4XfLFnuPeEXrgqZm0J+xrtcj50Qx3PNJeHneEh4OYDqj7riY3b2yXI0
x8aj7DtUjGbUMR/hgJJZByetw1UEhfknO6Y9OZoTOfaRMsPXzNFYkvqzL9wPFiVsSfMPAAA=
_ATEOF



$at_traceoff
echo "$at_srcdir/t_check_db_format.at:39: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o changesetify.db.dump.gz changesetify.db.dump.gz.b64
else
  \$UNB64_COMMAND <changesetify.db.dump.gz.b64 >changesetify.db.dump.gz
fi
"
echo t_check_db_format.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o changesetify.db.dump.gz changesetify.db.dump.gz.b64
else
  $UNB64_COMMAND <changesetify.db.dump.gz.b64 >changesetify.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o changesetify.db.dump.gz changesetify.db.dump.gz.b64
else
  $UNB64_COMMAND <changesetify.db.dump.gz.b64 >changesetify.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_db_format.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_check_db_format.at:39: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"changesetify.db.dump.gz\" != \"changesetify.db.dump.gz\"; then
    mv changesetify.db.dump.gz changesetify.db.dump.gz
  fi
  gunzip changesetify.db.dump.gz
else
  \$UNGZ_COMMAND <changesetify.db.dump.gz >changesetify.db.dump
fi
"
echo t_check_db_format.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "changesetify.db.dump.gz" != "changesetify.db.dump.gz"; then
    mv changesetify.db.dump.gz changesetify.db.dump.gz
  fi
  gunzip changesetify.db.dump.gz
else
  $UNGZ_COMMAND <changesetify.db.dump.gz >changesetify.db.dump
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "changesetify.db.dump.gz" != "changesetify.db.dump.gz"; then
    mv changesetify.db.dump.gz changesetify.db.dump.gz
  fi
  gunzip changesetify.db.dump.gz
else
  $UNGZ_COMMAND <changesetify.db.dump.gz >changesetify.db.dump
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_db_format.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_check_db_format.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net -d cs-modern.db db load < changesetify.db.dump"
echo t_check_db_format.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d cs-modern.db db load < changesetify.db.dump" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d cs-modern.db db load < changesetify.db.dump ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d cs-modern.db db load < changesetify.db.dump ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_db_format.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_check_db_format.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net -d cs-modern.db db migrate"
echo t_check_db_format.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d cs-modern.db db migrate" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d cs-modern.db db migrate ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d cs-modern.db db migrate ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_db_format.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_check_db_format.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net -d cs-modern.db ls keys"
echo t_check_db_format.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d cs-modern.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d cs-modern.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d cs-modern.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_check_db_format.at:43: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_check_db_format.at:44: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net -d cs-modern.db serve --bind=127.0.0.1:63219 '*'"
echo t_check_db_format.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d cs-modern.db serve --bind=127.0.0.1:63219 '*'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d cs-modern.db serve --bind=127.0.0.1:63219 '*' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d cs-modern.db serve --bind=127.0.0.1:63219 '*' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_check_db_format.at:44: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >rosterify.db.dump.gz.b64 <<'_ATEOF'
H4sICFVTz0MCA3Jvc3RlcmlmeS5kYi5kdW1wAO1XW4+i2BZ+Ln4F6ZeujjUtcmcmnQwqKoqo
4P3kpLKBza3kIqCAv342WmVVq1Wna84k5+WYaFD3un3rW2uv1ZS6sopLy5Yy0+W59AfW0iRx
KuFTsalIuJGA0HQfYRyZbord3WN3LkhdPIwyPNxtNvgu9LY7+IC/vH77DT8eiGw8gQHwQi90
cNuDGyvFUxiDBGTQwo0S//L7F+zupP09bUiXH3lhiude5iJ1ey/1ovDRhEmWft+DzQ5id0fH
XhVcvJAGZMGKAtyFxW8wNCMLWfcs7O7bRZyW8bgHSYq9SN6fn5A0CuNs4uGsOTWjGFaBgjje
eCbIkHPHrzjSdBYPQQAvhY/i6BD+BMvzwWNAVyefD56ifTl6gun+5NnD0cS385+XkdneBj5a
cJOBKn932J1n3QomSyKUqZfcVUK4GYUZDDMkZoD0wrWfc1MdT78jxVHy1t73Cunj40/CVVYs
z7bxLKpsINM7M8PNXZIga7idoHRVBrG75zg96+H4w7frtB0NH2mJjMeJF4CkrFB9+JWoLPDG
sRcgzCiIE5imEBl9IcyLyCm7lZajJ7KqS9oUl9Xp6OQIPheVmaTff7UIQrBMmzQIElKWZUNA
GITNA8ogKZYWLNYmLZ4x7K8PX3t0KovPr3q5H+utQkPvwRz4Q6Uxl0uzPtQbtqy3GoMMmi1R
NpY0WK2r89jXSzwCEHo2TLNTkXxYr5+r1GvS3KrRF/MvXDi784YPtwviqCmKAXKuylrli+lG
KQwrD3YpTLC72wXyVtDYRAZ2h9IfAy+5VUpvXI13BiraR3T45FbqOSHIdsmlBSSl6WJd74kN
/PUMAu3Lv6pI/vSs35Fj//5yZmv16wNecfbo8AP+7M/Dq/gNIl8g9ULpm9FesBqgtGYuRGxF
uCESomYFzvpu1e4VFhB9wNdsfZC862L+Z+v5TKB3avrvAHBd5r9a6a86Lqr97Oa54lmGogyh
gYqaYzjGBGSD51lU9dAELAsMkmUNyyAI/rLiibQYKs2hPqMPui/nuj8f6bONMp1q8vDJO+ht
bTT0ZXLIdYbDWXrQEymfzuLpTPIHmG4eHNFp7mY7t1DySt2PH9ctIYRF9phEaQaTxxAF+Rju
AgPV0z1WfXsL8NuCCjcl+jhhWlaIZq6X4hkwNojRcI/kL+28Kah/tu9cU+CkpfLYs5CDHpJO
rtoF+vu9zKOCfnYXr+wF6VWC3wTz2tQhTxsouRYDaY5kaEqgoAFQNzchetOWIfDQokkLpTj0
0z/jyIiK74hk6PtQ7lpDkei29G1Xlw2qPZGa4mQminRXEdutppsPms6kxdD7uZ8k21U0tcdT
ZxGw/Xin1J5Gkmaq5Eg3sWa62LKmQS8CCmUoyOfbfr/Mq5/s0pmt8mBbepoyLrQotZXujiR5
0ZUOYEj3DbHXiB2Ha+X7/dzC7J62VMWlNHRGvOA0/acnaBaKR8/qU5ZrJ4r/pI1Fb9NyFspa
3fMrOOoKS3EMnUWZcK4qCrnclCY/flzR7TymockOVUhSHsmAYK56wVVrvTHfnRqN6XqbW3PK
uwLPveVk6AE/yn+7yuuVd+fsoizRNEkTLEHbAuBggyZNsgFI20a1S3G2wFA0qmkGsvT7Mf9v
bt2fgfj//Qo/yPsxQ+ekG4JhC9CieIohITRtBgKTtDiW4VEDt1iG5G3epjnzM+R4+HraatCD
1Z0frG6/XC0YHxyb83VrkAt73Ql6B9NhddtqtKgkow3A2PpYWK2TpdshA9dauPkT16ahPLbG
hlqnhca8yXO7JICiRxDBfLxgsB7JEtqCtFe1wZoI+u6cag5BnuZa3QC+P17U0p4w0tlDa9R2
eHfeMEfzp522oAaqZaR52yy38aKZHhKM9nszYkOa5bA2VOzlRM8WUs+a9Maac7pefgFYHuGD
/OEom4KcbQkES9M8QfEC5HmKNxnSBpYNSP5zwKJ+Dqtu6ou56hH5UCeK0XySj9pRqR6icvQO
xIvayp0GRad0s3SR9caTpVTbTNKYpUPXVZJVLDadJVs6Ctcm2QY3FoeukGdLfbCy2mOLZkRT
dbXNvsAEpb1N2ju3JNV6OF1Q8kSk1sqgw8Zj9lDrcPvBHvY5tk+NHAGwoOj3UmK+aUpMH93a
glSUB2G19TIJO+wEUlpMgj659opaS6vZuejrG08nxV+HGDIWATiBsxkDsCQNCM4ybIIhCIsS
GJskANo9OFr4HMRgl7lRUpE4iA+TXnO/CgRaCdS9MbkNrjpvgdWuH/W3UkSvDwHjDOuLJi+0
nJJqD0DOWaOwxhO7QU1eT4raYL+GCGhitI8JtdxFgj9hh72xmmOZERN5Rxab4JCuZoDqFLXa
gRN5KpM60xk7DRJT0lYG2+ZHnKek/tLvpo0IpGGet9KVmNb8SJ5FsxG21+ptdzsxZ5OWMo1F
qdw1evlm4409+pfBNQ1ANQjKJAmeEHgAOMpiGxQAps1ztmk2YIMyCUTsz4FruiB04CZy0PM6
EPa38Bz3onWyNhxxHgqzhdIvOEBqlDA4FKYrqLCxKDRD6ZJJw4i4lau2IpEr5nJHVJd2s1tw
szxf91Y1FWLqeFlraKlmCTEpNyyzEXDrmI6Ntit4shK4u6VtJHUmqDMyT/ebqrdRdYca7+Q9
mAl1wqIFg1/PHBWL143BfjXqmc3IWpfjKKOFZf0p4lk1vzFungE9jZxozES/PN4a4z64xJ7H
1TfX3wdry+nwy8r5LPq6s7zn4McrRnUf3WdodD7d1CeRb//NMvGi5N276ZV9n6DUz8vEYjSb
bNvDptipU6NBoY2luBP6i5n2pDL7jtPfequtYC9KX+g1fbhvkfU4XpDR/onGVmbbGdtW1lbL
juJppbEq5E049LTuoFcOlUWRdVe71CMYNjXjBZ37nXqtLRAtb1aAjZOrymFCFf4hxqbj0Xgy
hqzt5+KolQ5XAbHXtYax4UiZSbKtuu6HTL2ntdjttMaAEeMQXbHJ7FPnvQ3mp5QiQn0wFV1s
htVW+MzDm2vw36TUzS34E4vw1R58O+LnWN/bf96P9SZJf42nb7S8OiWrbWl5PTs/Pp6m9JF6
Y66+P03g7+k4ttvHqsLfSp+aMALmP8lVQ+DjaWC9IX8aEY9/V4pGw6E8/QP7C+EOIsPpFgAA
_ATEOF



$at_traceoff
echo "$at_srcdir/t_check_db_format.at:92: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o rosterify.db.dump.gz rosterify.db.dump.gz.b64
else
  \$UNB64_COMMAND <rosterify.db.dump.gz.b64 >rosterify.db.dump.gz
fi
"
echo t_check_db_format.at:92 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o rosterify.db.dump.gz rosterify.db.dump.gz.b64
else
  $UNB64_COMMAND <rosterify.db.dump.gz.b64 >rosterify.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o rosterify.db.dump.gz rosterify.db.dump.gz.b64
else
  $UNB64_COMMAND <rosterify.db.dump.gz.b64 >rosterify.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_db_format.at:92: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_check_db_format.at:92: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"rosterify.db.dump.gz\" != \"rosterify.db.dump.gz\"; then
    mv rosterify.db.dump.gz rosterify.db.dump.gz
  fi
  gunzip rosterify.db.dump.gz
else
  \$UNGZ_COMMAND <rosterify.db.dump.gz >rosterify.db.dump
fi
"
echo t_check_db_format.at:92 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "rosterify.db.dump.gz" != "rosterify.db.dump.gz"; then
    mv rosterify.db.dump.gz rosterify.db.dump.gz
  fi
  gunzip rosterify.db.dump.gz
else
  $UNGZ_COMMAND <rosterify.db.dump.gz >rosterify.db.dump
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "rosterify.db.dump.gz" != "rosterify.db.dump.gz"; then
    mv rosterify.db.dump.gz rosterify.db.dump.gz
  fi
  gunzip rosterify.db.dump.gz
else
  $UNGZ_COMMAND <rosterify.db.dump.gz >rosterify.db.dump
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_db_format.at:92: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_check_db_format.at:93: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net -d ro-modern.db db load < rosterify.db.dump"
echo t_check_db_format.at:93 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d ro-modern.db db load < rosterify.db.dump" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d ro-modern.db db load < rosterify.db.dump ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d ro-modern.db db load < rosterify.db.dump ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_db_format.at:93: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_check_db_format.at:94: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net -d ro-modern.db db migrate"
echo t_check_db_format.at:94 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d ro-modern.db db migrate" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d ro-modern.db db migrate ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d ro-modern.db db migrate ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_check_db_format.at:94: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_check_db_format.at:96: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net -d ro-modern.db ls keys"
echo t_check_db_format.at:96 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d ro-modern.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d ro-modern.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d ro-modern.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_check_db_format.at:96: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_check_db_format.at:97: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net -d ro-modern.db serve --bind=127.0.0.1:63219 '*'"
echo t_check_db_format.at:97 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d ro-modern.db serve --bind=127.0.0.1:63219 '*'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d ro-modern.db serve --bind=127.0.0.1:63219 '*' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d ro-modern.db serve --bind=127.0.0.1:63219 '*' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_check_db_format.at:97: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  301 ) # 301. t_rename_destdir.at:3: rename files into a directory
    at_setup_line='t_rename_destdir.at:3'
    at_desc='rename files into a directory'
    $at_quiet $ECHO_N "301: rename files into a directory                $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "301. t_rename_destdir.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_rename_destdir.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_rename_destdir.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_rename_destdir.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:5: rm test_keys"
echo t_rename_destdir.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >gnat <<'_ATEOF'
gnat
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add gnat"
echo t_rename_destdir.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add gnat" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add gnat ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add gnat ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >mosquito <<'_ATEOF'
mosquito
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add mosquito"
echo t_rename_destdir.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add mosquito" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add mosquito ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add mosquito ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >termite <<'_ATEOF'
termite
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add termite"
echo t_rename_destdir.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add termite" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add termite ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add termite ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >ant <<'_ATEOF'
ant
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add ant"
echo t_rename_destdir.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add ant" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add ant ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add ant ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# will force foo/, bar/ and foo/gnat/ to be created
$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:17: mkdir foo bar foo/gnat"
echo t_rename_destdir.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir foo bar foo/gnat ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir foo bar foo/gnat ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >foo/dummy <<'_ATEOF'
... ... ...
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo/dummy"
echo t_rename_destdir.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/dummy" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/dummy ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/dummy ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >bar/dummy <<'_ATEOF'
a b c
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add bar/dummy"
echo t_rename_destdir.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar/dummy" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar/dummy ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar/dummy ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo/gnat/dummmy <<'_ATEOF'
la la la
_ATEOF

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo/gnat/dummmy"
echo t_rename_destdir.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/gnat/dummmy" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/gnat/dummmy ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/gnat/dummmy ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_rename_destdir.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# checkout in a clean dir and cd there



$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:33: rm -fr \$_ROOT_DIR/checkout"
echo t_rename_destdir.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "rm -fr $_ROOT_DIR/checkout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -fr $_ROOT_DIR/checkout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -fr $_ROOT_DIR/checkout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch \$_ROOT_DIR/checkout"
echo t_rename_destdir.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch $_ROOT_DIR/checkout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch $_ROOT_DIR/checkout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch $_ROOT_DIR/checkout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# basics
$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:36: cd checkout && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename ant foo"
echo t_rename_destdir.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename ant foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename ant foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename ant foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:37: cd checkout && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename mosquito termite foo"
echo t_rename_destdir.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename mosquito termite foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename mosquito termite foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename mosquito termite foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:39: rm -fr \$_ROOT_DIR/checkout"
echo t_rename_destdir.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "rm -fr $_ROOT_DIR/checkout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -fr $_ROOT_DIR/checkout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -fr $_ROOT_DIR/checkout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:39: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch \$_ROOT_DIR/checkout"
echo t_rename_destdir.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch $_ROOT_DIR/checkout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch $_ROOT_DIR/checkout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch $_ROOT_DIR/checkout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# with --execute
$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:42: cd checkout && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --execute rename ant foo"
echo t_rename_destdir.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --execute rename ant foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --execute rename ant foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --execute rename ant foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:43: cd checkout && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --execute rename mosquito termite foo"
echo t_rename_destdir.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --execute rename mosquito termite foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --execute rename mosquito termite foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --execute rename mosquito termite foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:44: cd checkout && test -e foo/ant -a -e foo/mosquito -a -e foo/termite"
echo t_rename_destdir.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd checkout && test -e foo/ant -a -e foo/mosquito -a -e foo/termite ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd checkout && test -e foo/ant -a -e foo/mosquito -a -e foo/termite ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:45: cd checkout && test ! -e ant -a ! -e mosquito -a ! -e termite"
echo t_rename_destdir.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd checkout && test ! -e ant -a ! -e mosquito -a ! -e termite ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd checkout && test ! -e ant -a ! -e mosquito -a ! -e termite ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# to root
$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:48: cd checkout && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --execute rename foo/ant ."
echo t_rename_destdir.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --execute rename foo/ant ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --execute rename foo/ant . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --execute rename foo/ant . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:49: cd checkout && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename foo/termite ."
echo t_rename_destdir.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo/termite ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo/termite . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename foo/termite . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:50: cd checkout && test -e ant -a -e foo/termite -a ! -e foo/ant -a ! -e termite"
echo t_rename_destdir.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd checkout && test -e ant -a -e foo/termite -a ! -e foo/ant -a ! -e termite ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd checkout && test -e ant -a -e foo/termite -a ! -e foo/ant -a ! -e termite ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:52: rm -fr \$_ROOT_DIR/checkout"
echo t_rename_destdir.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "rm -fr $_ROOT_DIR/checkout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -fr $_ROOT_DIR/checkout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -fr $_ROOT_DIR/checkout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:52: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch \$_ROOT_DIR/checkout"
echo t_rename_destdir.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch $_ROOT_DIR/checkout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch $_ROOT_DIR/checkout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch $_ROOT_DIR/checkout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# conflicts
$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:55: cd checkout && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename gnat foo"
echo t_rename_destdir.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename gnat foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename gnat foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename gnat foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:55: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:56: cd checkout && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename gnat termite foo"
echo t_rename_destdir.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename gnat termite foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename gnat termite foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename gnat termite foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:56: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:57: cd checkout && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename termite foo"
echo t_rename_destdir.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename termite foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename termite foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename termite foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:59: cd checkout && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename mosquito foo/ant"
echo t_rename_destdir.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename mosquito foo/ant" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename mosquito foo/ant ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename mosquito foo/ant ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:60: cd checkout && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename ant foo"
echo t_rename_destdir.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename ant foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename ant foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename ant foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:60: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:62: rm -fr \$_ROOT_DIR/checkout"
echo t_rename_destdir.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "rm -fr $_ROOT_DIR/checkout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -fr $_ROOT_DIR/checkout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -fr $_ROOT_DIR/checkout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:62: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch \$_ROOT_DIR/checkout"
echo t_rename_destdir.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch $_ROOT_DIR/checkout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch $_ROOT_DIR/checkout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch $_ROOT_DIR/checkout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:64: cd checkout && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --execute rename gnat foo"
echo t_rename_destdir.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --execute rename gnat foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --execute rename gnat foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --execute rename gnat foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:64: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:65: cd checkout && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --execute rename gnat termite foo"
echo t_rename_destdir.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --execute rename gnat termite foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --execute rename gnat termite foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --execute rename gnat termite foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:65: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:66: cd checkout && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --execute rename termite foo"
echo t_rename_destdir.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --execute rename termite foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --execute rename termite foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd checkout && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --execute rename termite foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:66: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:67: cd checkout && test -e foo/termite -a ! -e termite -a -e gnat -a -d foo/gnat -a ! -e foo/gnat/gnat"
echo t_rename_destdir.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd checkout && test -e foo/termite -a ! -e termite -a -e gnat -a -d foo/gnat -a ! -e foo/gnat/gnat ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd checkout && test -e foo/termite -a ! -e termite -a -e gnat -a -d foo/gnat -a ! -e foo/gnat/gnat ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:67: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:69: rm -fr \$_ROOT_DIR/checkout"
echo t_rename_destdir.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "rm -fr $_ROOT_DIR/checkout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -fr $_ROOT_DIR/checkout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -fr $_ROOT_DIR/checkout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rename_destdir.at:69: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch \$_ROOT_DIR/checkout"
echo t_rename_destdir.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch $_ROOT_DIR/checkout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch $_ROOT_DIR/checkout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout -b testbranch $_ROOT_DIR/checkout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rename_destdir.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



## todo:
# issues with missing files, should usually be allowed?
# rename to self
# rename root node

# rename to non-existing dir path: "foo->blweorih/o4thoihs" (this isn't a destdir case, but needs testing somewhere).

# file0->bar, file0 doesn't exist

# file0->bar, file0 exists, -e

# file0->bar, file0 doesn't exist, -e

# check that nothing happens if any would fail
# file0->bar file1->bar, file0 exists, file1 doesn't

# file0->bar file1->bar, file0 exists, file1 doesn't, -e

# file0->bar, bar/file0 exists in working, file0 doesn't -e

# file0->bar


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  302 ) # 302. t_ls_changed.at:3: listing changed files
    at_setup_line='t_ls_changed.at:3'
    at_desc='listing changed files'
    $at_quiet $ECHO_N "302: listing changed files                        $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "302. t_ls_changed.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_ls_changed.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_ls_changed.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_changed.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_ls_changed.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_changed.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_ls_changed.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_changed.at:5: rm test_keys"
echo t_ls_changed.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo <<'_ATEOF'
the foo file
_ATEOF

cat >bar <<'_ATEOF'
the bar file
_ATEOF

cat >baz <<'_ATEOF'
the baz file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_ls_changed.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo bar baz"
echo t_ls_changed.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo bar baz" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo bar baz ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo bar baz ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_changed.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='First commit'"
echo t_ls_changed.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='First commit'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='First commit' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='First commit' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_changed.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls changed"
echo t_ls_changed.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_changed.at:17: cmp stdout /dev/null"
echo t_ls_changed.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout /dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout /dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_changed.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net drop foo"
echo t_ls_changed.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net drop foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_changed.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename --execute bar bartender"
echo t_ls_changed.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename --execute bar bartender" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename --execute bar bartender ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename --execute bar bartender ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_changed.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls changed"
echo t_ls_changed.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_changed.at:22:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_ls_changed.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >ls_foobar <<'_ATEOF'
bar
foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_ls_changed.at:26: cmp stdout ls_foobar"
echo t_ls_changed.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout ls_foobar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout ls_foobar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_changed.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='Second commit'"
echo t_ls_changed.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='Second commit'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='Second commit' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='Second commit' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_changed.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls changed"
echo t_ls_changed.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_changed.at:30: cmp stdout /dev/null"
echo t_ls_changed.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout /dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout /dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >baz <<'_ATEOF'
the baz file, modified
_ATEOF

$at_traceoff
echo "$at_srcdir/t_ls_changed.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls changed"
echo t_ls_changed.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_changed.at:35:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_ls_changed.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >ls_baz <<'_ATEOF'
baz
_ATEOF

$at_traceoff
echo "$at_srcdir/t_ls_changed.at:38: cmp stdout ls_baz"
echo t_ls_changed.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout ls_baz ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout ls_baz ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_changed.at:39: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='Third commit'"
echo t_ls_changed.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='Third commit'" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='Third commit' ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message='Third commit' ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_changed.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls changed"
echo t_ls_changed.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_changed.at:42: cmp stdout /dev/null"
echo t_ls_changed.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout /dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout /dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >piano <<'_ATEOF'
earplugs
_ATEOF

$at_traceoff
echo "$at_srcdir/t_ls_changed.at:45: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add piano"
echo t_ls_changed.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add piano" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add piano ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add piano ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_changed.at:46: mkdir guitar"
echo t_ls_changed.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir guitar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir guitar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_changed.at:47: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add guitar"
echo t_ls_changed.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add guitar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add guitar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add guitar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_changed.at:48: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls changed"
echo t_ls_changed.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_changed.at:49:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_ls_changed.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >ls_baz <<'_ATEOF'
guitar
piano
_ATEOF

$at_traceoff
echo "$at_srcdir/t_ls_changed.at:53: cmp stdout ls_baz"
echo t_ls_changed.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout ls_baz ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout ls_baz ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_ls_changed.at:55: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_ls_changed.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_changed.at:56: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls changed"
echo t_ls_changed.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_changed.at:57: cmp stdout /dev/null"
echo t_ls_changed.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout /dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout /dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_changed.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  303 ) # 303. t_revert_new_project.at:3: revert file in new project
    at_setup_line='t_revert_new_project.at:3'
    at_desc='revert file in new project'
    $at_quiet $ECHO_N "303: revert file in new project                   $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "303. t_revert_new_project.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_revert_new_project.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_revert_new_project.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_new_project.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_new_project.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_revert_new_project.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_new_project.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_new_project.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_revert_new_project.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_new_project.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_new_project.at:5: rm test_keys"
echo t_revert_new_project.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_new_project.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# reverting one of one files
cat >testfile0 <<'_ATEOF'
version 0 of first test file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_revert_new_project.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile0"
echo t_revert_new_project.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_new_project.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_new_project.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert testfile0"
echo t_revert_new_project.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert testfile0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert testfile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert testfile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_new_project.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_new_project.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert_new_project.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_new_project.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_new_project.at:15: grep testfile0 stdout"
echo t_revert_new_project.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile0 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile0 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_revert_new_project.at:15: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# reverting one of two files
cat >testfile0 <<'_ATEOF'
version 0 of first test file
_ATEOF

cat >testfile1 <<'_ATEOF'
version 0 of second test file
_ATEOF


$at_traceoff
echo "$at_srcdir/t_revert_new_project.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile0 testfile1"
echo t_revert_new_project.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile0 testfile1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile0 testfile1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile0 testfile1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_new_project.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_new_project.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert testfile0"
echo t_revert_new_project.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert testfile0" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert testfile0 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert testfile0 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_new_project.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_new_project.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_revert_new_project.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_new_project.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_new_project.at:27: grep testfile0 stdout"
echo t_revert_new_project.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile0 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile0 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_revert_new_project.at:27: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  304 ) # 304. t_db_kill_rev_locally_2.at:1: db kill_rev_locally command 2
    at_setup_line='t_db_kill_rev_locally_2.at:1'
    at_desc='db kill_rev_locally command 2'
    $at_quiet $ECHO_N "304: db kill_rev_locally command 2                $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "304. t_db_kill_rev_locally_2.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally_2.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_db_kill_rev_locally_2.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally_2.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally_2.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_db_kill_rev_locally_2.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally_2.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally_2.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_db_kill_rev_locally_2.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally_2.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally_2.at:2: rm test_keys"
echo t_db_kill_rev_locally_2.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally_2.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# start off with three revisions

cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally_2.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_db_kill_rev_locally_2.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally_2.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally_2.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_db_kill_rev_locally_2.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally_2.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


ANCESTOR=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
stuff stuff
_ATEOF



$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally_2.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_db_kill_rev_locally_2.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally_2.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


CHILD1=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
blahdy blah blay
_ATEOF



$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally_2.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_db_kill_rev_locally_2.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally_2.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


CHILD2=`cat _MTN/revision`

# kill head revision
$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally_2.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision \$CHILD2"
echo t_db_kill_rev_locally_2.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $CHILD2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $CHILD2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $CHILD2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally_2.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally_2.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db kill_rev_locally \$CHILD2"
echo t_db_kill_rev_locally_2.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db kill_rev_locally $CHILD2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db kill_rev_locally $CHILD2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db kill_rev_locally $CHILD2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally_2.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally_2.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision \$CHILD2"
echo t_db_kill_rev_locally_2.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $CHILD2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $CHILD2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $CHILD2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally_2.at:23: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally_2.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db check"
echo t_db_kill_rev_locally_2.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally_2.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# head is an older revision now, let's kill that too
$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally_2.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision \$CHILD1"
echo t_db_kill_rev_locally_2.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $CHILD1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $CHILD1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $CHILD1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally_2.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally_2.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db kill_rev_locally \$CHILD1"
echo t_db_kill_rev_locally_2.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db kill_rev_locally $CHILD1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db kill_rev_locally $CHILD1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db kill_rev_locally $CHILD1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally_2.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally_2.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision \$CHILD1"
echo t_db_kill_rev_locally_2.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $CHILD1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $CHILD1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $CHILD1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally_2.at:29: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_kill_rev_locally_2.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db check"
echo t_db_kill_rev_locally_2.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db check ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_kill_rev_locally_2.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  305 ) # 305. t_log_nofiles_nomerges.at:1: log --no-files and --merges
    at_setup_line='t_log_nofiles_nomerges.at:1'
    at_desc='log --no-files and --merges'
    $at_quiet $ECHO_N "305: log --no-files and --merges                  $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "305. t_log_nofiles_nomerges.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_log_nofiles_nomerges.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_log_nofiles_nomerges.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nofiles_nomerges.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_nofiles_nomerges.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_log_nofiles_nomerges.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nofiles_nomerges.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_nofiles_nomerges.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_log_nofiles_nomerges.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nofiles_nomerges.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_nofiles_nomerges.at:2: rm test_keys"
echo t_log_nofiles_nomerges.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nofiles_nomerges.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_log_nofiles_nomerges.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_log_nofiles_nomerges.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nofiles_nomerges.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_log_nofiles_nomerges.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_log_nofiles_nomerges.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nofiles_nomerges.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


R1=`cat _MTN/revision`

# check that changed (added) file is listed in the log output
$at_traceoff
echo "$at_srcdir/t_log_nofiles_nomerges.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log"
echo t_log_nofiles_nomerges.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nofiles_nomerges.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_nofiles_nomerges.at:11: grep testfile stdout"
echo t_log_nofiles_nomerges.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nofiles_nomerges.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# and that it has been excluded by --no-files
$at_traceoff
echo "$at_srcdir/t_log_nofiles_nomerges.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log --no-files"
echo t_log_nofiles_nomerges.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --no-files" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --no-files ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --no-files ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nofiles_nomerges.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_nofiles_nomerges.at:15: grep testfile stdout"
echo t_log_nofiles_nomerges.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testfile stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testfile stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_log_nofiles_nomerges.at:15: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# add create some divergence...

cat >testfile <<'_ATEOF'
stuff stuff
_ATEOF



$at_traceoff
echo "$at_srcdir/t_log_nofiles_nomerges.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_log_nofiles_nomerges.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nofiles_nomerges.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_log_nofiles_nomerges.at:22: rm -rf _MTN.old"
echo t_log_nofiles_nomerges.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nofiles_nomerges.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_nofiles_nomerges.at:22: mv  _MTN _MTN.old"
echo t_log_nofiles_nomerges.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nofiles_nomerges.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_nofiles_nomerges.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$R1 ."
echo t_log_nofiles_nomerges.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$R1 ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$R1 . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$R1 . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nofiles_nomerges.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_log_nofiles_nomerges.at:22: test \$PROBE_R_SHA = \$R1"
echo t_log_nofiles_nomerges.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $R1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $R1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $R1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nofiles_nomerges.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >nufile <<'_ATEOF'
moo moo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_log_nofiles_nomerges.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add nufile"
echo t_log_nofiles_nomerges.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add nufile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add nufile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add nufile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nofiles_nomerges.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_log_nofiles_nomerges.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_log_nofiles_nomerges.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nofiles_nomerges.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# ...and now merge it cleanly
$at_traceoff
echo "$at_srcdir/t_log_nofiles_nomerges.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge"
echo t_log_nofiles_nomerges.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nofiles_nomerges.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_nofiles_nomerges.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_log_nofiles_nomerges.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nofiles_nomerges.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

R2=`cat _MTN/revision`

# check that merge is included by default
$at_traceoff
echo "$at_srcdir/t_log_nofiles_nomerges.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log"
echo t_log_nofiles_nomerges.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nofiles_nomerges.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_nofiles_nomerges.at:35: grep '^Revision' stdout | grep \$R2"
echo t_log_nofiles_nomerges.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^Revision' stdout | grep $R2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^Revision' stdout | grep $R2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^Revision' stdout | grep $R2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nofiles_nomerges.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# and that it is excluded by --no-merges
$at_traceoff
echo "$at_srcdir/t_log_nofiles_nomerges.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log --no-merges"
echo t_log_nofiles_nomerges.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --no-merges" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --no-merges ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --no-merges ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_nofiles_nomerges.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_nofiles_nomerges.at:39: grep '^Revision' stdout | grep \$R2"
echo t_log_nofiles_nomerges.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep '^Revision' stdout | grep $R2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^Revision' stdout | grep $R2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^Revision' stdout | grep $R2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_log_nofiles_nomerges.at:39: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  306 ) # 306. t_cvsimport_branch.at:3: importing CVS branches with correct ancestory
    at_setup_line='t_cvsimport_branch.at:3'
    at_desc='importing CVS branches with correct ancestory'
    $at_quiet $ECHO_N "306: importing CVS branches with correct ancestory$ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "306. t_cvsimport_branch.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_cvsimport_branch.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_cvsimport_branch.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_cvsimport_branch.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:5: rm test_keys"
echo t_cvsimport_branch.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





cat >file1.0 <<'_ATEOF'
version 0 of test file1
_ATEOF


cat >file1.1 <<'_ATEOF'
version 1 of test file1
_ATEOF


cat >file1.2 <<'_ATEOF'
version 2 of test file1
_ATEOF


cat >file2.0 <<'_ATEOF'
version 0 of test file2
_ATEOF


cat >file2.1 <<'_ATEOF'
version 1 of test file2
_ATEOF


cat >changelog.0 <<'_ATEOF'
first changelog entry
_ATEOF


cat >changelog.1 <<'_ATEOF'
second changelog

first changelog entry
_ATEOF


cat >changelog.2 <<'_ATEOF'
third changelog -not on branch-

second changelog

first changelog entry
_ATEOF


cat >changelog.3 <<'_ATEOF'
third changelog -on branch-

second changelog

first changelog entry
_ATEOF


cat >branchlist <<'_ATEOF'
test
test.branched
_ATEOF


F1SHA0=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify file1.0`
F1SHA1=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify file1.1`
F1SHA2=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify file1.2`
F2SHA0=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify file2.0`
T2SHA1=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify file2.1`
CSHA0=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify changelog.0`
CSHA1=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify changelog.1`
CSHA2=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify changelog.2`
CSHA3=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify changelog.3`

# build the cvs repository

CVSROOT=`pwd`/cvs-repository
$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:63: cvs -q -d \$CVSROOT init"
echo t_cvsimport_branch.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -q -d $CVSROOT init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -q -d $CVSROOT init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -q -d $CVSROOT init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:64: test -e \$CVSROOT"
echo t_cvsimport_branch.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test -e $CVSROOT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e $CVSROOT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e $CVSROOT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:64: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:65: test -e \$CVSROOT/CVSROOT"
echo t_cvsimport_branch.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test -e $CVSROOT/CVSROOT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e $CVSROOT/CVSROOT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e $CVSROOT/CVSROOT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:66: test -e \$CVSROOT/CVSROOT/modules"
echo t_cvsimport_branch.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test -e $CVSROOT/CVSROOT/modules" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -e $CVSROOT/CVSROOT/modules ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -e $CVSROOT/CVSROOT/modules ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:66: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# checkout the empty repository and commit some files

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:70: cvs -d \$CVSROOT co ."
echo t_cvsimport_branch.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT co ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT co . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT co . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:71: mkdir testdir"
echo t_cvsimport_branch.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir testdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir testdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:72: cp file1.0 testdir/file1"
echo t_cvsimport_branch.at:72 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp file1.0 testdir/file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp file1.0 testdir/file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:72: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:73: cp file2.0 testdir/file2"
echo t_cvsimport_branch.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp file2.0 testdir/file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp file2.0 testdir/file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:73: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:74: cp changelog.0 testdir/changelog"
echo t_cvsimport_branch.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp changelog.0 testdir/changelog ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp changelog.0 testdir/changelog ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:75: cvs -d \$CVSROOT add testdir"
echo t_cvsimport_branch.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT add testdir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT add testdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT add testdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:76: cvs -d \$CVSROOT add testdir/file1"
echo t_cvsimport_branch.at:76 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT add testdir/file1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT add testdir/file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT add testdir/file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:76: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:77: cvs -d \$CVSROOT add testdir/file2"
echo t_cvsimport_branch.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT add testdir/file2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT add testdir/file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT add testdir/file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:78: cvs -d \$CVSROOT add testdir/changelog"
echo t_cvsimport_branch.at:78 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT add testdir/changelog" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT add testdir/changelog ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT add testdir/changelog ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:78: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:79: cvs -d \$CVSROOT commit -m 'initial import' testdir/file1 testdir/file2 testdir/changelog"
echo t_cvsimport_branch.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT commit -m 'initial import' testdir/file1 testdir/file2 testdir/changelog" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT commit -m 'initial import' testdir/file1 testdir/file2 testdir/changelog ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT commit -m 'initial import' testdir/file1 testdir/file2 testdir/changelog ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# commit first changes
$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:82: cp file1.1 testdir/file1"
echo t_cvsimport_branch.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp file1.1 testdir/file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp file1.1 testdir/file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:83: cp changelog.1 testdir/changelog"
echo t_cvsimport_branch.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp changelog.1 testdir/changelog ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp changelog.1 testdir/changelog ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:84: cvs -d \$CVSROOT commit -m 'first commit' testdir/file1 testdir/changelog"
echo t_cvsimport_branch.at:84 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT commit -m 'first commit' testdir/file1 testdir/changelog" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT commit -m 'first commit' testdir/file1 testdir/changelog ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT commit -m 'first commit' testdir/file1 testdir/changelog ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:84: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# now we create a branch
$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:87: cd testdir; cvs -d \$CVSROOT tag -b branched"
echo t_cvsimport_branch.at:87 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd testdir; cvs -d $CVSROOT tag -b branched" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd testdir; cvs -d $CVSROOT tag -b branched ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd testdir; cvs -d $CVSROOT tag -b branched ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:87: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:88: cd testdir; cvs -d \$CVSROOT up -r branched"
echo t_cvsimport_branch.at:88 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd testdir; cvs -d $CVSROOT up -r branched" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd testdir; cvs -d $CVSROOT up -r branched ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd testdir; cvs -d $CVSROOT up -r branched ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:88: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# alter the files on the branch
$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:91: cp file2.1 testdir/file2"
echo t_cvsimport_branch.at:91 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp file2.1 testdir/file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp file2.1 testdir/file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:91: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:92: cp changelog.3 testdir/changelog"
echo t_cvsimport_branch.at:92 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp changelog.3 testdir/changelog ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp changelog.3 testdir/changelog ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:92: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:93: cvs -d \$CVSROOT commit -m 'commit on branch' testdir/file2 testdir/changelog"
echo t_cvsimport_branch.at:93 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT commit -m 'commit on branch' testdir/file2 testdir/changelog" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT commit -m 'commit on branch' testdir/file2 testdir/changelog ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT commit -m 'commit on branch' testdir/file2 testdir/changelog ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:93: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# and create some mainline changes after the branch
$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:96: cvs -d \$CVSROOT up -A"
echo t_cvsimport_branch.at:96 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT up -A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT up -A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT up -A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:96: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:97: cp file1.2 testdir/file1"
echo t_cvsimport_branch.at:97 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp file1.2 testdir/file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp file1.2 testdir/file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:97: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:98: cp changelog.2 testdir/changelog"
echo t_cvsimport_branch.at:98 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp changelog.2 testdir/changelog ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp changelog.2 testdir/changelog ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:98: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:99: cvs -d \$CVSROOT commit -m 'commit on mainline after branch' testdir/file1 testdir/changelog"
echo t_cvsimport_branch.at:99 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cvs -d $CVSROOT commit -m 'commit on mainline after branch' testdir/file1 testdir/changelog" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cvs -d $CVSROOT commit -m 'commit on mainline after branch' testdir/file1 testdir/changelog ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cvs -d $CVSROOT commit -m 'commit on mainline after branch' testdir/file1 testdir/changelog ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:99: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# import into monotone and check presence of files
$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:102: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=test cvs_import \$CVSROOT/testdir"
echo t_cvsimport_branch.at:102 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=test cvs_import $CVSROOT/testdir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=test cvs_import $CVSROOT/testdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=test cvs_import $CVSROOT/testdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:102: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check if all branches were imported
$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:105: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net list branches"
echo t_cvsimport_branch.at:105 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list branches" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list branches ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list branches ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:105: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:106: cmp stdout branchlist"
echo t_cvsimport_branch.at:106 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp stdout branchlist ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp stdout branchlist ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:106: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# checkout the imported repository into maindir and branchdir
$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:109: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --branch=test maindir"
echo t_cvsimport_branch.at:109 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=test maindir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=test maindir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=test maindir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:109: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:110: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --branch=test.branched branchdir"
echo t_cvsimport_branch.at:110 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=test.branched branchdir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=test.branched branchdir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --branch=test.branched branchdir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:110: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check for correctness of the files in the main tree
$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:113: cmp file1.2 maindir/file1"
echo t_cvsimport_branch.at:113 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp file1.2 maindir/file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp file1.2 maindir/file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:113: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:114: cmp file2.0 maindir/file2"
echo t_cvsimport_branch.at:114 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp file2.0 maindir/file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp file2.0 maindir/file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:114: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:115: cmp changelog.2 maindir/changelog"
echo t_cvsimport_branch.at:115 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp changelog.2 maindir/changelog ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp changelog.2 maindir/changelog ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:115: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check for correctness of the files in the branch
$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:118: cmp file1.1 branchdir/file1"
echo t_cvsimport_branch.at:118 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp file1.1 branchdir/file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp file1.1 branchdir/file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:118: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:119: cmp file2.1 branchdir/file2"
echo t_cvsimport_branch.at:119 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp file2.1 branchdir/file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp file2.1 branchdir/file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:119: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:120: cmp changelog.3 branchdir/changelog"
echo t_cvsimport_branch.at:120 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp changelog.3 branchdir/changelog ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp changelog.3 branchdir/changelog ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:120: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# get the log of the branch to check for correct branchpoint
$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:123: cd branchdir; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log"
echo t_cvsimport_branch.at:123 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd branchdir; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd branchdir; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd branchdir; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:123: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:124: grep \"commit on branch\" stdout"
echo t_cvsimport_branch.at:124 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "commit on branch" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "commit on branch" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:124: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_cvsimport_branch.at:125: grep \"initial import\" stdout"
echo t_cvsimport_branch.at:125 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "initial import" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "initial import" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_cvsimport_branch.at:125: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  307 ) # 307. t_log_to_file.at:3: check --log
    at_setup_line='t_log_to_file.at:3'
    at_desc='check --log'
    $at_quiet $ECHO_N "307: check --log                                  $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "307. t_log_to_file.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_log_to_file.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_log_to_file.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_to_file.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_to_file.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_log_to_file.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_to_file.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_to_file.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_log_to_file.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_to_file.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_to_file.at:5: rm test_keys"
echo t_log_to_file.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_to_file.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >input.txt <<'_ATEOF'
random content
_ATEOF


$at_traceoff
echo "$at_srcdir/t_log_to_file.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add input.txt"
echo t_log_to_file.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_to_file.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_to_file.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --log=log.log commit -m \"test\""
echo t_log_to_file.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --log=log.log commit -m \"test\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --log=log.log commit -m "test" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --log=log.log commit -m "test" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_to_file.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_to_file.at:14: grep '^mtn:' stdout >/dev/null"
echo t_log_to_file.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^mtn:' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^mtn:' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_log_to_file.at:14: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_to_file.at:15: grep '^mtn:' log.log >/dev/null"
echo t_log_to_file.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep '^mtn:' log.log >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep '^mtn:' log.log >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_to_file.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  308 ) # 308. t_log_selectors.at:1: log and selectors returning multiple rids
    at_setup_line='t_log_selectors.at:1'
    at_desc='log and selectors returning multiple rids'
    $at_quiet $ECHO_N "308: log and selectors returning multiple rids    $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "308. t_log_selectors.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_log_selectors.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_log_selectors.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_selectors.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_selectors.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_log_selectors.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_selectors.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_selectors.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_log_selectors.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_selectors.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_selectors.at:2: rm test_keys"
echo t_log_selectors.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_selectors.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# testcase for bug #15877


cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_log_selectors.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_log_selectors.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_selectors.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_selectors.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit -b testbranch --date \"2005-08-16T03:16:00\" -m foo"
echo t_log_selectors.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -b testbranch --date \"2005-08-16T03:16:00\" -m foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -b testbranch --date "2005-08-16T03:16:00" -m foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -b testbranch --date "2005-08-16T03:16:00" -m foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_selectors.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

R0=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
stuff stuff
_ATEOF


$at_traceoff
echo "$at_srcdir/t_log_selectors.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit -b testbranch --date \"2005-08-16T03:16:00\" -m foo"
echo t_log_selectors.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -b testbranch --date \"2005-08-16T03:16:00\" -m foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -b testbranch --date "2005-08-16T03:16:00" -m foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -b testbranch --date "2005-08-16T03:16:00" -m foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_selectors.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

R1=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
other other
_ATEOF


$at_traceoff
echo "$at_srcdir/t_log_selectors.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit -b otherbranch --date \"2005-08-16T03:16:05\" -m foo"
echo t_log_selectors.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -b otherbranch --date \"2005-08-16T03:16:05\" -m foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -b otherbranch --date "2005-08-16T03:16:05" -m foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -b otherbranch --date "2005-08-16T03:16:05" -m foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_selectors.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

R2=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_log_selectors.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --db=\$_ROOT_DIR/test.db --root=\$_ROOT_DIR log --brief --revision d:2005-08-16"
echo t_log_selectors.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --db=$_ROOT_DIR/test.db --root=$_ROOT_DIR log --brief --revision d:2005-08-16" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --db=$_ROOT_DIR/test.db --root=$_ROOT_DIR log --brief --revision d:2005-08-16 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --db=$_ROOT_DIR/test.db --root=$_ROOT_DIR log --brief --revision d:2005-08-16 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_selectors.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_selectors.at:22: grep \$R0 stdout"
echo t_log_selectors.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $R0 stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $R0 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $R0 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_selectors.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_selectors.at:23: grep \$R1 stdout"
echo t_log_selectors.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $R1 stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $R1 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $R1 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_selectors.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_selectors.at:24: grep \$R2 stdout"
echo t_log_selectors.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $R2 stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $R2 stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $R2 stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_selectors.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  309 ) # 309. t_pivot_root.at:1: pivot_root
    at_setup_line='t_pivot_root.at:1'
    at_desc='pivot_root'
    $at_quiet $ECHO_N "309: pivot_root                                   $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "309. t_pivot_root.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_pivot_root.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_pivot_root.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_pivot_root.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_pivot_root.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root.at:2: rm test_keys"
echo t_pivot_root.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# possible problems:
#   -- the new root doesn't exist
#   -- the new root is not a dir
#   -- the new root has an _MTN in it
#   -- the directory the old root is supposed to end up in doesn't exist
#   -- the directory the old root is supposed to end up in is not a directory
#   -- the directory the old root is supposed to end up in already
#      contains something with the given name
# then make sure --execute puts things in the right place...

$at_traceoff
echo "$at_srcdir/t_pivot_root.at:14: mkdir workspace"
echo t_pivot_root.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir workspace ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir workspace ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root.at:15: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup . -b testbranch"
echo t_pivot_root.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup . -b testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup . -b testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup . -b testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_pivot_root.at:17: mkdir workspace/dir1"
echo t_pivot_root.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir workspace/dir1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir workspace/dir1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root.at:18: mkdir workspace/dir1/dir2"
echo t_pivot_root.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir workspace/dir1/dir2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir workspace/dir1/dir2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >workspace/dir1/file1 <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_pivot_root.at:21: mkdir workspace/dir3"
echo t_pivot_root.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir workspace/dir3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir workspace/dir3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root.at:22: mkdir workspace/dir3/_MTN"
echo t_pivot_root.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir workspace/dir3/_MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir workspace/dir3/_MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root.at:23: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add ."
echo t_pivot_root.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_pivot_root.at:25: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit -m foo"
echo t_pivot_root.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_pivot_root.at:27: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net pivot_root nosuchdir foo"
echo t_pivot_root.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root nosuchdir foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root nosuchdir foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root nosuchdir foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_pivot_root.at:27: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root.at:28: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net pivot_root dir1/file1 foo"
echo t_pivot_root.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root dir1/file1 foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root dir1/file1 foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root dir1/file1 foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_pivot_root.at:28: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root.at:29: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net pivot_root dir3 old_root"
echo t_pivot_root.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root dir3 old_root" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root dir3 old_root ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root dir3 old_root ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_pivot_root.at:29: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root.at:30: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net pivot_root dir1 nosuchdir/old_root"
echo t_pivot_root.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root dir1 nosuchdir/old_root" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root dir1 nosuchdir/old_root ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root dir1 nosuchdir/old_root ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_pivot_root.at:30: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root.at:31: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net pivot_root dir1 file1/old_root"
echo t_pivot_root.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root dir1 file1/old_root" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root dir1 file1/old_root ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root dir1 file1/old_root ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_pivot_root.at:31: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root.at:32: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net pivot_root dir1 dir2"
echo t_pivot_root.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root dir1 dir2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root dir1 dir2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root dir1 dir2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_pivot_root.at:32: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_pivot_root.at:34: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls changed"
echo t_pivot_root.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root.at:35: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls missing"
echo t_pivot_root.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root.at:36: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls unknown"
echo t_pivot_root.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_pivot_root.at:38: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net pivot_root --execute dir1 old_root"
echo t_pivot_root.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root --execute dir1 old_root" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root --execute dir1 old_root ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root --execute dir1 old_root ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_pivot_root.at:40: test -d workspace/_MTN"
echo t_pivot_root.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -d workspace/_MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -d workspace/_MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root.at:41: test -d workspace/dir2"
echo t_pivot_root.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -d workspace/dir2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -d workspace/dir2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root.at:42: test -f workspace/file1"
echo t_pivot_root.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f workspace/file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f workspace/file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root.at:43: test -d workspace/old_root"
echo t_pivot_root.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -d workspace/old_root ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -d workspace/old_root ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root.at:44: test -d workspace/old_root/dir3"
echo t_pivot_root.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -d workspace/old_root/dir3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -d workspace/old_root/dir3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root.at:45: test -d workspace/old_root/dir3/_MTN"
echo t_pivot_root.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -d workspace/old_root/dir3/_MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -d workspace/old_root/dir3/_MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_pivot_root.at:47: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls missing"
echo t_pivot_root.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root.at:48: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls unknown"
echo t_pivot_root.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_pivot_root.at:50: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit -m foo"
echo t_pivot_root.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  310 ) # 310. t_pivot_root_revert.at:1: reverting a pivot_root
    at_setup_line='t_pivot_root_revert.at:1'
    at_desc='reverting a pivot_root'
    $at_quiet $ECHO_N "310: reverting a pivot_root                       $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "310. t_pivot_root_revert.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_pivot_root_revert.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_pivot_root_revert.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_pivot_root_revert.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:2: rm test_keys"
echo t_pivot_root_revert.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# This test is a bug report
# I think the problem is just generally that revert does not do a good
# job cleaning up after renames?


$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:9: mkdir workspace"
echo t_pivot_root_revert.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir workspace ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir workspace ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:10: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup . -b testbranch"
echo t_pivot_root_revert.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup . -b testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup . -b testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup . -b testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:12: mkdir workspace/dir1"
echo t_pivot_root_revert.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir workspace/dir1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir workspace/dir1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:13: mkdir workspace/dir1/dir2"
echo t_pivot_root_revert.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir workspace/dir1/dir2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir workspace/dir1/dir2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >workspace/dir1/file1 <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:16: mkdir workspace/dir3"
echo t_pivot_root_revert.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir workspace/dir3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir workspace/dir3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:17: mkdir workspace/dir3/_MTN"
echo t_pivot_root_revert.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir workspace/dir3/_MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir workspace/dir3/_MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:18: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add ."
echo t_pivot_root_revert.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:20: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit -m foo"
echo t_pivot_root_revert.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:22: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net pivot_root --execute dir1 old_root"
echo t_pivot_root_revert.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root --execute dir1 old_root" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root --execute dir1 old_root ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root --execute dir1 old_root ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:24: test -d workspace/_MTN"
echo t_pivot_root_revert.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -d workspace/_MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -d workspace/_MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:25: test -d workspace/dir2"
echo t_pivot_root_revert.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -d workspace/dir2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -d workspace/dir2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:26: test -f workspace/file1"
echo t_pivot_root_revert.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f workspace/file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f workspace/file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:27: test -d workspace/old_root"
echo t_pivot_root_revert.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -d workspace/old_root ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -d workspace/old_root ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:28: test -d workspace/old_root/dir3"
echo t_pivot_root_revert.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -d workspace/old_root/dir3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -d workspace/old_root/dir3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:29: test -d workspace/old_root/dir3/_MTN"
echo t_pivot_root_revert.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -d workspace/old_root/dir3/_MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -d workspace/old_root/dir3/_MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:31: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls missing"
echo t_pivot_root_revert.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:32: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls unknown"
echo t_pivot_root_revert.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:34: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert ."
echo t_pivot_root_revert.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:36: test -d workspace/_MTN"
echo t_pivot_root_revert.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -d workspace/_MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -d workspace/_MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:37: test -d workspace/dir1"
echo t_pivot_root_revert.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -d workspace/dir1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -d workspace/dir1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:38: test -d workspace/dir1/dir2"
echo t_pivot_root_revert.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -d workspace/dir1/dir2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -d workspace/dir1/dir2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:39: test -f workspace/dir1/file1"
echo t_pivot_root_revert.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f workspace/dir1/file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f workspace/dir1/file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:40: test -d workspace/dir3"
echo t_pivot_root_revert.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -d workspace/dir3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -d workspace/dir3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:41: test -d workspace/dir3/_MTN"
echo t_pivot_root_revert.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -d workspace/dir3/_MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -d workspace/dir3/_MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:43: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls changed"
echo t_pivot_root_revert.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls changed ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:44: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls missing"
echo t_pivot_root_revert.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls missing ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_revert.at:45: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls unknown"
echo t_pivot_root_revert.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls unknown ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_revert.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  311 ) # 311. t_pivot_root_update.at:1: updating through a pivot_root
    at_setup_line='t_pivot_root_update.at:1'
    at_desc='updating through a pivot_root'
    $at_quiet $ECHO_N "311: updating through a pivot_root                $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "311. t_pivot_root_update.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_pivot_root_update.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_pivot_root_update.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_pivot_root_update.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:2: rm test_keys"
echo t_pivot_root_update.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:4: mkdir workspace"
echo t_pivot_root_update.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir workspace ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir workspace ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:5: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup -b testbranch"
echo t_pivot_root_update.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup -b testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup -b testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup -b testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:7: mkdir workspace/dir1"
echo t_pivot_root_update.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir workspace/dir1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir workspace/dir1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >workspace/old_root_file <<'_ATEOF'
I'm in the root to start off with!
_ATEOF

cat >workspace/dir1/new_root_file <<'_ATEOF'
I'm in the subdir to start off with.
_ATEOF

$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:12: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add ."
echo t_pivot_root_update.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:13: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit -m foo"
echo t_pivot_root_update.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

BASE_REV=`cat workspace/_MTN/revision`

$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:16: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net pivot_root --execute dir1 old_root"
echo t_pivot_root_update.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root --execute dir1 old_root" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root --execute dir1 old_root ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net pivot_root --execute dir1 old_root ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:17: cd workspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit -m foo"
echo t_pivot_root_update.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd workspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit -m foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net co -r \$BASE_REV testspace"
echo t_pivot_root_update.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co -r $BASE_REV testspace" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co -r $BASE_REV testspace ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co -r $BASE_REV testspace ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >new_old_root_file <<'_ATEOF'
old root file modified
_ATEOF

cat >new_new_root_file <<'_ATEOF'
new root file modified
_ATEOF

cat >new_unversioned_root_file <<'_ATEOF'
newly placed in root dir, unversioned
_ATEOF

cat >new_unversioned_subdir_file <<'_ATEOF'
newly placed in sub dir, unversioned
_ATEOF

cat >new_versioned_root_file <<'_ATEOF'
newly placed in root dir, versioned
_ATEOF

cat >new_versioned_subdir_file <<'_ATEOF'
newly placed in sub dir, versioned
_ATEOF

$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:32: cp new_old_root_file testspace/old_root_file"
echo t_pivot_root_update.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp new_old_root_file testspace/old_root_file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp new_old_root_file testspace/old_root_file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:33: cp new_new_root_file testspace/dir1/new_root_file"
echo t_pivot_root_update.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp new_new_root_file testspace/dir1/new_root_file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp new_new_root_file testspace/dir1/new_root_file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:34: cp new_unversioned_root_file testspace"
echo t_pivot_root_update.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp new_unversioned_root_file testspace ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp new_unversioned_root_file testspace ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:35: cp new_unversioned_subdir_file testspace/dir1"
echo t_pivot_root_update.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp new_unversioned_subdir_file testspace/dir1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp new_unversioned_subdir_file testspace/dir1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:36: cp new_versioned_root_file testspace"
echo t_pivot_root_update.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp new_versioned_root_file testspace ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp new_versioned_root_file testspace ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:37: cp new_versioned_subdir_file testspace/dir1"
echo t_pivot_root_update.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp new_versioned_subdir_file testspace/dir1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp new_versioned_subdir_file testspace/dir1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:39: cd testspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add new_versioned_root_file dir1/new_versioned_subdir_file"
echo t_pivot_root_update.at:39 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd testspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add new_versioned_root_file dir1/new_versioned_subdir_file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd testspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add new_versioned_root_file dir1/new_versioned_subdir_file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd testspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add new_versioned_root_file dir1/new_versioned_subdir_file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:39: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:40: cd testspace/ && \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_pivot_root_update.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd testspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd testspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd testspace/ && $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:42: cmp new_old_root_file testspace/old_root/old_root_file"
echo t_pivot_root_update.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp new_old_root_file testspace/old_root/old_root_file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp new_old_root_file testspace/old_root/old_root_file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:43: cmp new_new_root_file testspace/new_root_file"
echo t_pivot_root_update.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp new_new_root_file testspace/new_root_file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp new_new_root_file testspace/new_root_file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:44: cmp new_unversioned_root_file testspace/old_root/new_unversioned_root_file"
echo t_pivot_root_update.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp new_unversioned_root_file testspace/old_root/new_unversioned_root_file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp new_unversioned_root_file testspace/old_root/new_unversioned_root_file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:45: cmp new_unversioned_subdir_file testspace/new_unversioned_subdir_file"
echo t_pivot_root_update.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp new_unversioned_subdir_file testspace/new_unversioned_subdir_file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp new_unversioned_subdir_file testspace/new_unversioned_subdir_file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:46: cmp new_versioned_root_file testspace/old_root/new_versioned_root_file"
echo t_pivot_root_update.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp new_versioned_root_file testspace/old_root/new_versioned_root_file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp new_versioned_root_file testspace/old_root/new_versioned_root_file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pivot_root_update.at:47: cmp new_versioned_subdir_file testspace/new_versioned_subdir_file"
echo t_pivot_root_update.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp new_versioned_subdir_file testspace/new_versioned_subdir_file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp new_versioned_subdir_file testspace/new_versioned_subdir_file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pivot_root_update.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  312 ) # 312. t_rosterify_root_suture.at:1: db rosterify on a db with a root suture
    at_setup_line='t_rosterify_root_suture.at:1'
    at_desc='db rosterify on a db with a root suture'
    $at_quiet $ECHO_N "312: db rosterify on a db with a root suture      $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "312. t_rosterify_root_suture.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_rosterify_root_suture.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_rosterify_root_suture.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_root_suture.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_root_suture.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_rosterify_root_suture.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_root_suture.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_root_suture.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_rosterify_root_suture.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_root_suture.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_root_suture.at:2: rm test_keys"
echo t_rosterify_root_suture.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_root_suture.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_rosterify_root_suture.at:3: echo \$UNB64_COMMAND"
echo t_rosterify_root_suture.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_root_suture.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test -n "`command -v gunzip`" 2>/dev/null; then
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  UNGZ_COMMAND="gunzip -c"
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_rosterify_root_suture.at:3: echo \$UNGZ_COMMAND"
echo t_rosterify_root_suture.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNGZ_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_root_suture.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >test.db.dump.gz.b64 <<'_ATEOF'
H4sICPFEAEQCA3Rlc3QuZGIuZHVtcADtWlmPo1qSfi7/ilS/3HtFdZt9mVFLgwFjbBaz2caj
Uemw72DAxvDr5zjz1nKrsm5nds9oXsZSpryciDjxRcQXcYCVJCv6k3QSVNdWDtK/LwRL4h3p
yeFXqvTkd6AO0k9R2wRpv/jw6+JDCvr0qW6Gp/palk/XOrtco49Pn19//evT84ImfuqiCmR1
VidPcRaVYf/URy3owBCFT/709Jd/+8viw4v2n2mDuvImq/unMRtSqO6W9VlTfwqibuj/dgPl
NVp8eN7YVwXfvaAGaCFsqqc0uv81qoMmhNazcPHht+/8DP1PN9D1i8+Sv355B6WhG19MfPyi
uQ+aNno4Ctq2zAIwwM09f3yCmr6I16CKvhd+FoeLnopo+rLw2aEfVv6+8MXbz0tfYPr1ZWcf
n0389uXH7z2LszL6FEblAB7x+7D4kIWvOTN0DYzU59g9hJ6Cph6ieoBiPui/29ofY/NY3v8N
Km66b+397YH089s/CD+iEmZx/DQ0DxvQ9DUYnoJr10FrT3EHw/UwuPjwu59Z+PH5i9+ew6bo
tmQ5T4ruGN/aejrwqivZv/4SUwweEhwdg4jDUZrGWQYjYx8PIhSNGTziyBjHKTb+5eMvER77
VIxjBBeiLA1TAw98GkVDCnAYwDg6Ymg/RnEULt2QvcL//loudVcz9jtbI7ZTFGd8IjosF1vC
+Pj1739f/PJaDF6qB2LUdlkFuukR/I9vAT8E3+D3OV5BU7Vd1PcRxOZzXn8WeUnCh5ZXAfsK
VcSEnM/iPkmFFEsQAReCEGBEjBMMFzE+TQcsTpAE+b3/6G0/o9z2Uswln6yue3VbCvw3vv+J
xX8ScfamO2ypTehdJ02F3ytqw5jFs8kf0a5AncVRP7wwxZ+S1vvo6sfKeY2oPpv/XBBftvNN
UbzOCs+amhbAzT1y4rGXIG36qH7s4NpH3eLD6yzxraBfNv7iA0yuFmTda3zyzVbbqw+Z6xNc
/LKtPktqMFy77y1AKcvml/aGx56+roGg/eU/H578Rxb+G9zYf/3lS8k+vv349Cjc5w1/fPp9
Px+/iv/2Iwl/h9TngnnV2+9qBsCwDmkEawHiBhMOMjb4ou81AvsBiwj+i75G60+C9yOj/Y+S
2ncmvxIbGRAkFsQ+w6AkLJWACDA8RkMc/uNoOuQYLCI5joG1Q3J4HGMoHQKGwek4ICOUZAkW
RTEUBywbEjge+WEQvUZs6iaxcw3T0eY+5JZqoxOmi8qozcakiQFqu/1kFySmScmsoxdMl4pZ
y3fYwl7r5iTl+hTUNZkofNYD0Zu9rzX6Fh8BAz0DRBTQaBj4eBQREepDbmIClqWgIxjDETH9
L/k4nlZXU+Y1PuHHLdnK0primzmRBcmcOOvKcLgYFWvfci4l2BVzR6dnFjnrvi4fF9401uvU
lzhq3nXjGqGHKFiJyft8fMfGudDnID3TBE2xJEPC5hXjFGB9EKJxDGLfRwmaiRn0FR+n+0lS
Hj6qw8FVlBW13gvlRRIme3OLXIYwlpo4UB64JeMpv6fyIGLVrPS7he1gWHa8i1614xHq7p0Y
D2SFdNVD457RYnv3D+MZQcpKo9fGbuTreob518Qp3W6WVfIPOPlnXfCfKeofG+Nbe+NXHT+J
2ddo/QshGK0ND0MgjSp3OPI7oWnNfJN5+zMx1Qhyl9NlmXQjNmTCLN6FaTr67TrkXGxx3HVu
veUY8oAUpIENwV0SRffIl1Nv4Z05ZXiJwnWa4XP3uUCXLoKa+6PyE+i/Ifn/2V74YwhftMDP
kPoh2hmU7n5oYfDnn0UONpnft/v0sFf1PwToG2e+hCiMWNKnGDjERCSDUyTBEZEPSA7WEPwj
YQDZKCTxEIaozvv/aBu/uf8NJgn8rClyqPGoLNgX2VZ8QjSlFW+6PE/KKi8Kq3TcrRJToMjb
Ie+6i9c48d5JjhW9ba8qUhiSFei4YQeLVX+80IFPHiuiLqdqPFy222l8fBVPieuN1WXKLHV/
t5o+VuUrjrN8Ks1AI7c+v8HaJGGE8XY7hIt4Y510/iRpicFyySoviii4qxnpLh2aETs1L6w9
n5VCclTP+o31IkPmTvw+So5Tx6Q6z43KSjL//vcf0uDL+QkeuWCGd9NzMkCYH/3ph3b/ysHr
pfkFaVa+doD4qcDv/e7F0MenZ/kfm94Pu/sS3QcNUngAeZnmUIIMAxbQBMoC2CoizIejYxCH
AR0yJMP88h6lIYbTEY2SQYRTHEBZnCZCMvAxFKOpAOfikCZiDsf8tyt98zahcQC7dYySJOcT
bOxzKIWTOE5jDBNScBMMDuViALC3G3+zO/8rxt+q8eMvj7YXczQOuzwKT2MRxQYEFIeECgIm
gPQaAdj1MfLn+ft/M9X/Man/f36P/qSGnyP0JTkoAg0jlOIgO9JkzDAUAfPRx1GcC1kyRH0M
cIAOAuY9hf7xl5dLR49slg9zKG8n70jl4PkE+iPNR9Gq5fCICqTb9bzGSYZGHQsr5zmI51hM
eQdPx7wyo2DJH1eGVdEI4xnbTt0ARLGicKgrgryF6GYhey2TkzZyvyIMtoSNB7XW6Fq3unGu
lkorJ6pjuIfmrIiRpt7PbaHsmonfXhT3fsXPhVnGPF0ECrpIEF8eKU80t0FihP3dWtu4nnOr
yu1/nCR/AiygYV2TTED58IzOYT7uA9ynUA7FQ8z3CdLnOB+lQPQ+YGFvfkhoOT/qGTpqGTrp
B/OuOQ2miQ2qm69DvOnwou0upZuendb32y3DjRvuVq4KPLc6Z32Jsn2vK/795uumU6enyzVR
vZFF9lQvCFt32KjpVHH0wjQ2ZpJ2ZRUf905+qQ29xhJjUoGxUvH2Yt+iasNKeyuvCkzIONkO
k103caQ1SEsxFqoy80jXvjsLjE+VfURp11g8np3NtHP0OwOCzrw1b4aYIUmcpXAMY3wCRCCI
UBDD5GVBEJBMxJAsCwnMj6j3QQyuQ9p0jySu2tncrG5exZFqpd/8n4BrbW+b9qJRLjlWI6uJ
a2bFldR6mBF6vItbsJErl9bRYgPG1s3GtrdAd7qF8ybjr4w86qttdUXdAluUBbtF0Ku2a4xt
LNqrMDD57myeVF/R+30+kpeIL6+XU2FVA8ENDKvgLGa0EXEGy7tsUJuiCda3I7q4oIIwhKvx
viR8NGVProEJfeTQUR+8GVyaClESVj9DQx7AAprmAEnA5MVh84h9lkAxDAMhBt4HbpCCOonK
JoHvzxV3ew3PU3WTqR3IOXl1b5uKqSB9yLQ3n6/IWYlvQ3hNg+mKNZN10KelomUHIWoa/div
7bIU8EkfssrM0nyR8SYoDMG867rXBnjV9pivGhlCwcqRVl5bQYLTWGFYyccANHxx7dKjuNfh
+EgnjtIur6niLRNjXvDI2TSPotGrVxOdZ2+31OW6U1s5Qt+MJ8uyEDyfBASFhQyKk0SEEQwb
MRRGxRQG+2ocEJQfvWf4eS/RAgvxNqN7PYs7Q8jRIGDD03W7bw1ZPVXStZ/7u6sCtmiZQdxm
uJfeDwc4+Raitp+CKkVRfetTQbbgd7t6hwiTPo3M8SqPTXPubB1Ns3Cc9wdBKtzrMZbmcr9i
N/fQW1YqFq7NuaSDGLOVq+2yzS6eb8KizwWUNK0cPSVz0vI3jyOIqi2T+i69GViKQdkQJwEJ
GTfAMS6iIjwCBIeSPqDZIApIMox8knofsH9GtE4zGj+BWPP6SE+U8EDjzcaBvQY5IF0scftt
JDKm3JTFSU/onHHGQKk588yolGL7mW94h4TnTrhdnVtLkYRFUJROZjSFFy5lthhjHOX7yibU
JCurfscPAn+sjfJQBUyOW7V4K8GZ7fKjf9TlJt7fo4ZS5Dyxlwtvd9x5TFlsCjO0Lg4aITZT
b4wNM3hv72UMRtEcgWOQX1ma8mMuwMKI8GkWiyAR+AygGfrdEL+baJ1RCVTlatkyal5ifXu3
ChRzt6PZ1JVzRUVm6bQu7yFTJ4nsyaIJjkxG7MQOwrpBXaSrwvHcUZi38PNUDuwtUJD9dlfn
PKMSAuPRG3M4h3s31vNQ2rGaLGyLfbZzulweqnnWJJM+kNVOrEqyLPVVls+LRNfSaJnQrdgK
ezWKw3Wbb3OWyRD3zeDiMcEADOdAFMYcw9AUS2EkbGk4BaiIgZM7A+dvkgreB+5biLY+bdF5
Wcon4UqqFrql2nhb54O3vrT85ZBW9ODflVPlJuVoOLEQ33b4DmU4Oo1ays1MF8znsUjT08I/
GZBC0nIf3nUNjz1zaNWLgoE6uyGIwyHYgRSWkp+62QrJq5BhopQQS7uCuxaO6bi0zm3qVw29
cLfyzjlms5lNXK8i4oV2bgIIi2h4O9HSGGRRnA3iICSoOIAMi1MRi7OwVwUAxSmaZSGCMfue
s9Y/4oO7lryesuFGupPr0T1dapFt7Utd7cZo1q9Wyd9Dypyps3TGSqzoTBiqilQNKz3N5xOJ
nd0lMCI7p1WbJ4phkZrSHLXXTJmr4DRcU3A6z5Z3lXRN3afRTrkEtmwHJiKj0jpq1lpWXTW8
MidGsmt1W4JaGnLpfFotJFAeJJK6rKqT3WwYqz/YuZEb1Oy/PWWjiKVYnCHgSIDjxAMxlmNh
ksKjIcYyFP0g3JjByfdB/G4+kEZ8daRvjLa0raMRutwGNVV21RTXABvu+2vbJt7ezsH+csPn
FT2yvY44qdu7S3lP2CpzH+1zciesRXTcJpjv0boVgU5P5o2KTZi3BMfD6hqkGeMf0c0dkS0A
+taQKnWJ2CwtMyg95lY6e1v+itQJ2uCLS0QXItqcG19u+6rWzpFDAOySLk9vH7wAixGwnz2A
ZIHvUzjNElgMaHgGx2KWoenAB/AjeB+47xsU2NuF3l0ObYHiuIPg8a5vanpTb2gauPec6AR2
JsaLFt02QjCNmWqYW45yXfkIvdVq71SrjIij5YK/33b+kGzSgo1ukZHMeEWJQbrxDvP+vmyl
fIkK6PHa7vwLYDVcO+TrIlxhFdbXfAoYxycuCCsxzSIZRyu+muTOa65DtdSo4yGGNOR3avJm
YAkOEm0QhbB1kSSLBT6cVWMWe2QtGsEhNw4BHNHo4H3Afku0/vEwnXE38XEvMRx38uaA0nKP
0kQNPcsa6TnerIlp6jkBenbWmSabmAdPnnC2LfTZJPSxSRSBTxaKvL6ehVWhOQp+drxRl/VS
y13Kc3gSKpzPopV7uTRqjod5s0KdKxPXcGgoX2fCT6jojO8GPd+YAScifnC69Hi81sIlFdPL
LU/Hhda2erCUGMs6SHtpNgY+E4pLZrPczslY0GzPBCEApVgAk1hWTcP1Tnw064HzTaPeoFNl
tidsvO40GLqdzKyoqSHuGbvuNS2biounN/iZG3e0X3SGfbi1yGJFDQdiyU1OVzAqD86uEnvB
3oVzEf/moMKJj4UHjfhxQfkxiHA0Dr+hODZCUZYJfNanGYDj4D0Xt95ZLfsmZ7ydoLmY4nCs
rFGoCZIjbouylvdRR5CHUR6xHb8/cIgEVpKt7tgxwrZ+xTVRjqb8eecc1k28UIxzaCAVebQr
qqT2tzU9dVGipmcxSk84l2FyMof+Gh9Do7usNi521qsuS7a7IV/qxI0f1yN2EIG48KpoIBIF
251I5UZRpykoND2ROix9+8zn4xEas2EEIYQzNYMBPAg5BmLFwgaKAwIj4JmQfT5cvwPYP2+j
mP6T3M0PN/EmY6gXt41aJ4PDT+4yjFaJT0lrxi4E+16ECajVgyOYFsJf99g4GneAXwrJpBAs
rTgXhTFchLaf8LSOnOXs6hUDtT8dyR2GS147DTCBrdqVtP3Q1kor0Jk9xYc9KgHkBBgBbwnV
RW/znT6Zhr8wonBeU8nMUhLZCrK6FVLpvDIP2XF8M8Qk8Gl4ssYIEPsoSsUREbAcACQF+Yii
uJiiQxJwAH8fxO9uo7zY8/22P4ZjfLGSZSchSbPytt5yh/dyez/dXe98LdezEMkJPggrJgKJ
WKS2ySAavhYbr1vej0u1XNSoq4jTDhMu+pIcNzLblMuD2lXW0b1p7pG3r5IQ8oVV7pyk6bv1
1B5JZY9UtiGxxyq7ddX9cksFYcEUlb1VjhBRDhdQts9LK1X3ZxPdv53tcRyCQwLMZwFK+3jw
OG8zcKIOMXiCCWAHiH3MJ0jifeC+Zax25e2Ad4BCyn138OJVamCXZntpQ1MyLSHMdkA/XKpK
OdsZWKubW1PSQ4KLxLbZX3OyWMPpabXiwvuCwjscdh1V9+f8otBVLZ5vRm+c0EOwY43NPRv6
uULaQ3oXDNa4uZFMuG5ieGiu6bgmpeoBIOkYIgvb13b21K7TslQ0plLSam7EQ4umn8+Ar17L
//O7wY/L1b8O0X14uZD/IvLbv3Lf97OSn1667v+Zmzl/fDbqqJvmRdRWqzU3l2uWd7ayuDeO
riU4sjdKEgZnPA4eto8MEosJGzNGx4jrm5nFi5JipDZkznDay4LIpLigEip+Jop9dEZVJR/L
qj3UGomsawOtPW4+LJEUJ1MqnYqD7odTd8SdS7lZ3HSVNidsg890hd3aC7eM+GJzm6S25iOe
zY9ZoG7Fsyxts4Dnp3w2Gv1aHC9b1Xz9WYYf8XnHQfGP+OC6PdKiBlsJN1fru1kk4q0KVrbs
4hLpC26yznYXQkXw6hQwDq2hFzjSbQFbTYvNvJLO5E7fyZbfXqy1q3duRDhFfGTn0KaSoZd1
ezieW5Qw+jaCs/MKQU4hKpzX1FS5RyBDMqzb7aLhzHxTO0t5Wt3CuPb4zcqVNetur8kaXeoH
y2wC4wQ83W8StSzV00VfaXRDrHiVA0zyZozePuP9ASP8ZJ6OrW+a45rcR0yWSR0qJTNaJcO9
Tc5Lx5TvTFC0lyPDTK7kDuMpMe3NCDNysVRpdo57jER0yynQez+qzFpaG2BcDygvNMlG07as
5fn1JhpuRFUuYziX4iRzCye0IavscufnI6Yttmk6282VHtVrKTM9WsR6zXT9WGFyVxa9VNWK
dwxc6Y5rTU/fXLBrN357u5bMHDXdzOKbMI6RbbnACcZIGQIJppy6dcgBJYqudWY8SCDzm/qJ
5shNAcp9Tbm27ViFFg48GByEJVJI/ecqOaC1KDvT4nwZBOpIN7QLaV2PZmriO2ds82Dde6a5
gQOLBymS3Xdg5y4Ni8rDYVhyZ7YLkCOjbI0pL0XpnN4XtoxTKK8kK1f3lRuwKAS9aRju7ENz
9cbQvoPQv6OH/XgkHunPLylKmHjT3Z43tip5ZiGArbwReyXfAO54Q9FRMkImZmZEK5F7hyyM
UGMdPry07m440EyjMKvtYZaVYi2szXTUOLyg9frKLk83rtOi6NzuVwYQjw04bsQq9SS7mI/0
VV1oTTtmhsNslsGt47Vca/mthik9BjY4mkhTs7euq3BzWHeIdCKU60xYDNJ54TDVa4TISsO6
5KUrpYt9Kij9xrg2fkKae/FwghMR56f7HTjNtqrDefamna0U1fIwKHmhn4LMXs2Vs7quMITv
VU9MCTmR+MX3j80quiidfrzh/OnTy+MHhv7KzehfXx4t+JmO59796VP2R+mXjv5r9g/lHndE
P73cvX1F/uV+6fPPD0WGpinOvy/+G7sS7iNbLwAA
_ATEOF


$at_traceoff
echo "$at_srcdir/t_rosterify_root_suture.at:113: rm -f test.db"
echo t_rosterify_root_suture.at:113 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f test.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f test.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_root_suture.at:113: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rosterify_root_suture.at:115: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o test.db.dump.gz test.db.dump.gz.b64
else
  \$UNB64_COMMAND <test.db.dump.gz.b64 >test.db.dump.gz
fi
"
echo t_rosterify_root_suture.at:115 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o test.db.dump.gz test.db.dump.gz.b64
else
  $UNB64_COMMAND <test.db.dump.gz.b64 >test.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o test.db.dump.gz test.db.dump.gz.b64
else
  $UNB64_COMMAND <test.db.dump.gz.b64 >test.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_root_suture.at:115: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_root_suture.at:115: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"test.db.dump.gz\" != \"test.db.dump.gz\"; then
    mv test.db.dump.gz test.db.dump.gz
  fi
  gunzip test.db.dump.gz
else
  \$UNGZ_COMMAND <test.db.dump.gz >test.db.dump
fi
"
echo t_rosterify_root_suture.at:115 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "test.db.dump.gz" != "test.db.dump.gz"; then
    mv test.db.dump.gz test.db.dump.gz
  fi
  gunzip test.db.dump.gz
else
  $UNGZ_COMMAND <test.db.dump.gz >test.db.dump
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "test.db.dump.gz" != "test.db.dump.gz"; then
    mv test.db.dump.gz test.db.dump.gz
  fi
  gunzip test.db.dump.gz
else
  $UNGZ_COMMAND <test.db.dump.gz >test.db.dump
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_root_suture.at:115: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rosterify_root_suture.at:116: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump"
echo t_rosterify_root_suture.at:116 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_root_suture.at:116: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_root_suture.at:117: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db migrate"
echo t_rosterify_root_suture.at:117 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_root_suture.at:117: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_root_suture.at:118: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db rosterify"
echo t_rosterify_root_suture.at:118 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_root_suture.at:118: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rosterify_root_suture.at:120: for REV in \`\$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select i:\`; do \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision \$REV; done"
echo t_rosterify_root_suture.at:120 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; for REV in `$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select i:`; do $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $REV; done ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; for REV in `$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select i:`; do $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision $REV; done ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_root_suture.at:120: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_root_suture.at:121: grep 'delete \"\"' stdout >/dev/null"
echo t_rosterify_root_suture.at:121 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'delete ""' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'delete ""' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_root_suture.at:121: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_root_suture.at:122: grep 'add_dir \"\"' stdout >/dev/null"
echo t_rosterify_root_suture.at:122 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'add_dir ""' stdout >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'add_dir ""' stdout >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_root_suture.at:122: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  313 ) # 313. t_log_dir.at:1: log dir
    at_setup_line='t_log_dir.at:1'
    at_desc='log dir'
    $at_quiet $ECHO_N "313: log dir                                      $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "313. t_log_dir.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_log_dir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_log_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_log_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_log_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:2: rm test_keys"
echo t_log_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >foo <<'_ATEOF'
foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_log_dir.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_log_dir.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >bar <<'_ATEOF'
bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_log_dir.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add bar"
echo t_log_dir.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_log_dir.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_log_dir.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV1=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_log_dir.at:12: mkdir dir1 dir2"
echo t_log_dir.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir dir1 dir2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir dir1 dir2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >dir1/file1 <<'_ATEOF'
dir1/file1
_ATEOF

$at_traceoff
echo "$at_srcdir/t_log_dir.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add dir1/file1"
echo t_log_dir.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir1/file1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir1/file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir1/file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_log_dir.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_log_dir.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV2=`cat _MTN/revision`


cat >dir2/file2 <<'_ATEOF'
dir2/file2
_ATEOF

$at_traceoff
echo "$at_srcdir/t_log_dir.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add dir2/file2"
echo t_log_dir.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir2/file2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir2/file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir2/file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_log_dir.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_log_dir.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV3=`cat _MTN/revision`

cat >foo <<'_ATEOF'
foofoo
_ATEOF

cat >bar <<'_ATEOF'
barbar
_ATEOF

cat >dir1/file1 <<'_ATEOF'
dir1/file1 asdf
_ATEOF

cat >dir2/file2 <<'_ATEOF'
dir2/file2 asdf
_ATEOF



$at_traceoff
echo "$at_srcdir/t_log_dir.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_log_dir.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV4=`cat _MTN/revision`

cat >dir1/file1 <<'_ATEOF'
dir1/file1 asdf asdf
_ATEOF



$at_traceoff
echo "$at_srcdir/t_log_dir.at:40: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_log_dir.at:40 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:40: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV5=`cat _MTN/revision`

cat >dir2/file2 <<'_ATEOF'
dir2/file2 asdf asdf
_ATEOF



$at_traceoff
echo "$at_srcdir/t_log_dir.at:46: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_log_dir.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV6=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_log_dir.at:49: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr set dir2/ myattr myval"
echo t_log_dir.at:49 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set dir2/ myattr myval" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set dir2/ myattr myval ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set dir2/ myattr myval ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:49: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_dir.at:50: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_log_dir.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:50: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV7=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_log_dir.at:53: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log"
echo t_log_dir.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_dir.at:55: grep \"^Revision: \$REV1\" stdout"
echo t_log_dir.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV1\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV1" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV1" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:56: grep \"^Revision: \$REV2\" stdout"
echo t_log_dir.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV2\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV2" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV2" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:57: grep \"^Revision: \$REV3\" stdout"
echo t_log_dir.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV3\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV3" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV3" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:58: grep \"^Revision: \$REV4\" stdout"
echo t_log_dir.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV4\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV4" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV4" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:59: grep \"^Revision: \$REV5\" stdout"
echo t_log_dir.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV5\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV5" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV5" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:60: grep \"^Revision: \$REV6\" stdout"
echo t_log_dir.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV6\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV6" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV6" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:61: grep \"^Revision: \$REV7\" stdout"
echo t_log_dir.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV7\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV7" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV7" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_dir.at:63: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log ."
echo t_log_dir.at:63 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:63: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_dir.at:65: grep \"^Revision: \$REV1\" stdout"
echo t_log_dir.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV1\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV1" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV1" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:66: grep \"^Revision: \$REV2\" stdout"
echo t_log_dir.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV2\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV2" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV2" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:66: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:67: grep \"^Revision: \$REV3\" stdout"
echo t_log_dir.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV3\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV3" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV3" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:67: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:68: grep \"^Revision: \$REV4\" stdout"
echo t_log_dir.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV4\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV4" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV4" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:69: grep \"^Revision: \$REV5\" stdout"
echo t_log_dir.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV5\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV5" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV5" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:70: grep \"^Revision: \$REV6\" stdout"
echo t_log_dir.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV6\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV6" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV6" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:71: grep \"^Revision: \$REV7\" stdout"
echo t_log_dir.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV7\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV7" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV7" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_dir.at:73: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log dir1"
echo t_log_dir.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log dir1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log dir1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log dir1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:73: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_dir.at:75: grep \"^Revision: \$REV1\" stdout"
echo t_log_dir.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV1\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV1" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV1" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_log_dir.at:75: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:76: grep \"^Revision: \$REV2\" stdout"
echo t_log_dir.at:76 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV2\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV2" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV2" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:76: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:77: grep \"^Revision: \$REV3\" stdout"
echo t_log_dir.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV3\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV3" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV3" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_log_dir.at:77: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:78: grep \"^Revision: \$REV4\" stdout"
echo t_log_dir.at:78 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV4\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV4" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV4" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:78: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:79: grep \"^Revision: \$REV5\" stdout"
echo t_log_dir.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV5\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV5" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV5" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:80: grep \"^Revision: \$REV6\" stdout"
echo t_log_dir.at:80 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV6\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV6" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV6" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_log_dir.at:80: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:81: grep \"^Revision: \$REV7\" stdout"
echo t_log_dir.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV7\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV7" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV7" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_log_dir.at:81: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_dir.at:83: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log dir2"
echo t_log_dir.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log dir2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log dir2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log dir2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_log_dir.at:85: grep \"^Revision: \$REV1\" stdout"
echo t_log_dir.at:85 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV1\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV1" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV1" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_log_dir.at:85: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:86: grep \"^Revision: \$REV2\" stdout"
echo t_log_dir.at:86 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV2\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV2" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV2" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_log_dir.at:86: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:87: grep \"^Revision: \$REV3\" stdout"
echo t_log_dir.at:87 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV3\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV3" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV3" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:87: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:88: grep \"^Revision: \$REV4\" stdout"
echo t_log_dir.at:88 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV4\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV4" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV4" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:88: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:89: grep \"^Revision: \$REV5\" stdout"
echo t_log_dir.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV5\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV5" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV5" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_log_dir.at:89: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:90: grep \"^Revision: \$REV6\" stdout"
echo t_log_dir.at:90 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV6\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV6" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV6" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:90: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_dir.at:91: grep \"^Revision: \$REV7\" stdout"
echo t_log_dir.at:91 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep \"^Revision: $REV7\" stdout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "^Revision: $REV7" stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "^Revision: $REV7" stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_dir.at:91: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  314 ) # 314. t_show_conflicts.at:1: show_conflicts
    at_setup_line='t_show_conflicts.at:1'
    at_desc='show_conflicts'
    $at_quiet $ECHO_N "314: show_conflicts                               $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "314. t_show_conflicts.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_show_conflicts.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_show_conflicts.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_show_conflicts.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_show_conflicts.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_show_conflicts.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_show_conflicts.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_show_conflicts.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_show_conflicts.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_show_conflicts.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_show_conflicts.at:2: rm test_keys"
echo t_show_conflicts.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_show_conflicts.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >foo <<'_ATEOF'
file foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_show_conflicts.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_show_conflicts.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_show_conflicts.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >bar <<'_ATEOF'
file bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_show_conflicts.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add bar"
echo t_show_conflicts.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_show_conflicts.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_show_conflicts.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch commit --message blah-blah"
echo t_show_conflicts.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_show_conflicts.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


BASE=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_show_conflicts.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net mv -e foo baz"
echo t_show_conflicts.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net mv -e foo baz" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net mv -e foo baz ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net mv -e foo baz ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_show_conflicts.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_show_conflicts.at:12: echo xxx >>bar"
echo t_show_conflicts.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo xxx >>bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo xxx >>bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_show_conflicts.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_show_conflicts.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch commit --message blah-blah"
echo t_show_conflicts.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_show_conflicts.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


LEFT=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_show_conflicts.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update -r \$BASE"
echo t_show_conflicts.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -r $BASE" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -r $BASE ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -r $BASE ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_show_conflicts.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_show_conflicts.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net mv -e foo quux"
echo t_show_conflicts.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net mv -e foo quux" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net mv -e foo quux ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net mv -e foo quux ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_show_conflicts.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_show_conflicts.at:18: echo yyy >>bar"
echo t_show_conflicts.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo yyy >>bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo yyy >>bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_show_conflicts.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_show_conflicts.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=branch commit --message blah-blah"
echo t_show_conflicts.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=branch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_show_conflicts.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


RIGHT=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_show_conflicts.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net show_conflicts \$LEFT \$RIGHT"
echo t_show_conflicts.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net show_conflicts $LEFT $RIGHT" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net show_conflicts $LEFT $RIGHT ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net show_conflicts $LEFT $RIGHT ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_show_conflicts.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_show_conflicts.at:23: mv stderr conflicts"
echo t_show_conflicts.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stderr conflicts ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stderr conflicts ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_show_conflicts.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_show_conflicts.at:25: grep \"There are 1 node_name_conflicts\" conflicts >/dev/null"
echo t_show_conflicts.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "There are 1 node_name_conflicts" conflicts >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "There are 1 node_name_conflicts" conflicts >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_show_conflicts.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_show_conflicts.at:26: grep \"There are 1 file_content_conflicts\" conflicts >/dev/null"
echo t_show_conflicts.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "There are 1 file_content_conflicts" conflicts >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "There are 1 file_content_conflicts" conflicts >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_show_conflicts.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_show_conflicts.at:27: grep \"There are 0 node_attr_conflicts\" conflicts >/dev/null"
echo t_show_conflicts.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "There are 0 node_attr_conflicts" conflicts >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "There are 0 node_attr_conflicts" conflicts >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_show_conflicts.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_show_conflicts.at:28: grep \"There are 0 orphaned_node_conflicts\" conflicts >/dev/null"
echo t_show_conflicts.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "There are 0 orphaned_node_conflicts" conflicts >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "There are 0 orphaned_node_conflicts" conflicts >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_show_conflicts.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_show_conflicts.at:29: grep \"There are 0 rename_target_conflicts\" conflicts >/dev/null"
echo t_show_conflicts.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "There are 0 rename_target_conflicts" conflicts >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "There are 0 rename_target_conflicts" conflicts >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_show_conflicts.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_show_conflicts.at:30: grep \"There are 0 directory_loop_conflicts\" conflicts >/dev/null"
echo t_show_conflicts.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep "There are 0 directory_loop_conflicts" conflicts >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep "There are 0 directory_loop_conflicts" conflicts >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_show_conflicts.at:30: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  315 ) # 315. t_merge_into_dir.at:1: merge a project into a subdirectory of an unrelated project
    at_setup_line='t_merge_into_dir.at:1'
    at_desc='merge a project into a subdirectory of an unrelated project'
    $at_quiet $ECHO_N "315: merge a project into a subdirectory of an unrelated project$ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "315. t_merge_into_dir.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_merge_into_dir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_merge_into_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_into_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_into_dir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_merge_into_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_into_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_into_dir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_merge_into_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_into_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_into_dir.at:2: rm test_keys"
echo t_merge_into_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_into_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_into_dir.at:4: cp -r _MTN MT.orig"
echo t_merge_into_dir.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r _MTN MT.orig ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r _MTN MT.orig ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_into_dir.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >file1 <<'_ATEOF'
foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_merge_into_dir.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file1"
echo t_merge_into_dir.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_into_dir.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_into_dir.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=b1 commit --message blah-blah"
echo t_merge_into_dir.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=b1 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=b1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=b1 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_into_dir.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_into_dir.at:9: rm -r _MTN"
echo t_merge_into_dir.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -r _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -r _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_into_dir.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_into_dir.at:10: cp -r MT.orig _MTN"
echo t_merge_into_dir.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r MT.orig _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r MT.orig _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_into_dir.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_into_dir.at:11: rm file1"
echo t_merge_into_dir.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_into_dir.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >file2 <<'_ATEOF'
bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_merge_into_dir.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file2"
echo t_merge_into_dir.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_into_dir.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_into_dir.at:14: mkdir dir"
echo t_merge_into_dir.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_into_dir.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >dir/quux <<'_ATEOF'
baz
_ATEOF

$at_traceoff
echo "$at_srcdir/t_merge_into_dir.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add dir/quux"
echo t_merge_into_dir.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir/quux" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir/quux ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir/quux ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_into_dir.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_into_dir.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=b2 commit --message blah-blah"
echo t_merge_into_dir.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=b2 commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=b2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=b2 commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_into_dir.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_merge_into_dir.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net merge_into_dir b1 b2 dir/zuul"
echo t_merge_into_dir.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge_into_dir b1 b2 dir/zuul" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge_into_dir b1 b2 dir/zuul ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net merge_into_dir b1 b2 dir/zuul ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_into_dir.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_merge_into_dir.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout -b b2 checkout"
echo t_merge_into_dir.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout -b b2 checkout" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout -b b2 checkout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout -b b2 checkout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_into_dir.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_into_dir.at:22: test -f checkout/file2"
echo t_merge_into_dir.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f checkout/file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f checkout/file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_into_dir.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_into_dir.at:23: test -d checkout/dir"
echo t_merge_into_dir.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -d checkout/dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -d checkout/dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_into_dir.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_into_dir.at:24: test -f checkout/dir/quux"
echo t_merge_into_dir.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f checkout/dir/quux ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f checkout/dir/quux ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_into_dir.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_into_dir.at:25: test -d checkout/dir/zuul"
echo t_merge_into_dir.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -d checkout/dir/zuul ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -d checkout/dir/zuul ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_into_dir.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_merge_into_dir.at:26: test -f checkout/dir/zuul/file1"
echo t_merge_into_dir.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f checkout/dir/zuul/file1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f checkout/dir/zuul/file1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_merge_into_dir.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  316 ) # 316. t_restriction_excludes_parent.at:1: restriction excludes parent dir
    at_setup_line='t_restriction_excludes_parent.at:1'
    at_desc='restriction excludes parent dir'
    $at_quiet $ECHO_N "316: restriction excludes parent dir              $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "316. t_restriction_excludes_parent.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_restriction_excludes_parent.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_restriction_excludes_parent.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_excludes_parent.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_excludes_parent.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_restriction_excludes_parent.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_excludes_parent.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_excludes_parent.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_restriction_excludes_parent.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_excludes_parent.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_restriction_excludes_parent.at:2: rm test_keys"
echo t_restriction_excludes_parent.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_excludes_parent.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# - restricting a new project excludes the root directory addition
# - restricting to things below a newly added directory excludes the directory
# - excluding added directories but including things they contain is bad
#
# we should issue a nice error indicating that such a restriction must
# be expanded to include the containing directories.
# we should also provide some way to include only these directories and not
# all of their contents.
#
# --depth=0 should probably mean "directory without contents" rather than
# "directory and all immediate children"


cat >file <<'_ATEOF'
file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_restriction_excludes_parent.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file"
echo t_restriction_excludes_parent.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_excludes_parent.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# exclude newly added root dir but include file below it
$at_traceoff
echo "$at_srcdir/t_restriction_excludes_parent.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net st file"
echo t_restriction_excludes_parent.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net st file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net st file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net st file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restriction_excludes_parent.at:20: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restriction_excludes_parent.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_restriction_excludes_parent.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_excludes_parent.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_restriction_excludes_parent.at:24: mkdir foo"
echo t_restriction_excludes_parent.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_excludes_parent.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo/bar <<'_ATEOF'
foobar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_restriction_excludes_parent.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo/bar"
echo t_restriction_excludes_parent.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo/bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_restriction_excludes_parent.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# exclude newly added foo dir but include bar below it
$at_traceoff
echo "$at_srcdir/t_restriction_excludes_parent.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net st foo/bar"
echo t_restriction_excludes_parent.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net st foo/bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net st foo/bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net st foo/bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_restriction_excludes_parent.at:31: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  317 ) # 317. t_revert_move_to_renamed_dir.at:1: revert moving a file to a renamed directory
    at_setup_line='t_revert_move_to_renamed_dir.at:1'
    at_desc='revert moving a file to a renamed directory'
    $at_quiet $ECHO_N "317: revert moving a file to a renamed directory  $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "317. t_revert_move_to_renamed_dir.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_revert_move_to_renamed_dir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_revert_move_to_renamed_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_move_to_renamed_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_move_to_renamed_dir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_revert_move_to_renamed_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_move_to_renamed_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_move_to_renamed_dir.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_revert_move_to_renamed_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_move_to_renamed_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_move_to_renamed_dir.at:2: rm test_keys"
echo t_revert_move_to_renamed_dir.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_move_to_renamed_dir.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >file <<'_ATEOF'
file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_revert_move_to_renamed_dir.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file"
echo t_revert_move_to_renamed_dir.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_move_to_renamed_dir.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_revert_move_to_renamed_dir.at:7: mkdir dir"
echo t_revert_move_to_renamed_dir.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_move_to_renamed_dir.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_move_to_renamed_dir.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add dir"
echo t_revert_move_to_renamed_dir.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_move_to_renamed_dir.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_revert_move_to_renamed_dir.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_revert_move_to_renamed_dir.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_move_to_renamed_dir.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_revert_move_to_renamed_dir.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --execute mv file dir"
echo t_revert_move_to_renamed_dir.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --execute mv file dir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --execute mv file dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --execute mv file dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_move_to_renamed_dir.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_move_to_renamed_dir.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --execute mv dir foo"
echo t_revert_move_to_renamed_dir.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --execute mv dir foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --execute mv dir foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --execute mv dir foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_move_to_renamed_dir.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_revert_move_to_renamed_dir.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net revert dir"
echo t_revert_move_to_renamed_dir.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert dir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net revert dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_move_to_renamed_dir.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  318 ) # 318. t_sink_has_extra_epochs.at:1: one-way netsync where the sink has more epochs
    at_setup_line='t_sink_has_extra_epochs.at:1'
    at_desc='one-way netsync where the sink has more epochs'
    $at_quiet $ECHO_N "318: one-way netsync where the sink has more epochs$ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "318. t_sink_has_extra_epochs.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_sink_has_extra_epochs.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_sink_has_extra_epochs.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sink_has_extra_epochs.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sink_has_extra_epochs.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_sink_has_extra_epochs.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sink_has_extra_epochs.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sink_has_extra_epochs.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_sink_has_extra_epochs.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sink_has_extra_epochs.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sink_has_extra_epochs.at:2: rm test_keys"
echo t_sink_has_extra_epochs.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sink_has_extra_epochs.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_sink_has_extra_epochs.at:3: cp test.db test2.db"
echo t_sink_has_extra_epochs.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sink_has_extra_epochs.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sink_has_extra_epochs.at:3: cp -r keys/ keys2"
echo t_sink_has_extra_epochs.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sink_has_extra_epochs.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sink_has_extra_epochs.at:3: cp test.db test3.db"
echo t_sink_has_extra_epochs.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sink_has_extra_epochs.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sink_has_extra_epochs.at:3: cp -r keys/ keys3"
echo t_sink_has_extra_epochs.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sink_has_extra_epochs.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT



# If the sink has more epochs than the source (say, on branches that are
# included in the include glob, but only exist on the sink), then the epoch
# refiner on the source will say we have items to receive. But since we're in
# source-only mode, we won't actually be receiving any items. So our epoch
# refiner will forever say we have items to receive, and we don't want to hang
# forever waiting for them.

# FIXME: This test will HANG on failure. (And then, of course, it will report
# "ok" if stopped with ^C, since the stuff to check that the push worked
# doesn't actually get run... :-/ )


cat >foo <<'_ATEOF'
foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_sink_has_extra_epochs.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_sink_has_extra_epochs.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sink_has_extra_epochs.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_sink_has_extra_epochs.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_sink_has_extra_epochs.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sink_has_extra_epochs.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_sink_has_extra_epochs.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db set_epoch testbranch 1234567890123456789009876543210987654321"
echo t_sink_has_extra_epochs.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch testbranch 1234567890123456789009876543210987654321" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch testbranch 1234567890123456789009876543210987654321 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch testbranch 1234567890123456789009876543210987654321 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sink_has_extra_epochs.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sink_has_extra_epochs.at:20: rm -r _MTN/"
echo t_sink_has_extra_epochs.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -r _MTN/ ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -r _MTN/ ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sink_has_extra_epochs.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sink_has_extra_epochs.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 setup -b otherbranch ."
echo t_sink_has_extra_epochs.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 setup -b otherbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 setup -b otherbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 setup -b otherbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sink_has_extra_epochs.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >bar <<'_ATEOF'
bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_sink_has_extra_epochs.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add bar"
echo t_sink_has_extra_epochs.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 add bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sink_has_extra_epochs.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sink_has_extra_epochs.at:25: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit -m blah-blah"
echo t_sink_has_extra_epochs.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit -m blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit -m blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 commit -m blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sink_has_extra_epochs.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve *branch &
sleep 4


$at_traceoff
echo "$at_srcdir/t_sink_has_extra_epochs.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:\$_PORT *branch"
echo t_sink_has_extra_epochs.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:$_PORT *branch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:$_PORT *branch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push localhost:$_PORT *branch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sink_has_extra_epochs.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



$at_traceoff
echo "$at_srcdir/t_sink_has_extra_epochs.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls branches"
echo t_sink_has_extra_epochs.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls branches ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sink_has_extra_epochs.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sink_has_extra_epochs.at:32: grep  >/dev/null testbranch stdout"
echo t_sink_has_extra_epochs.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep  >/dev/null testbranch stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep  >/dev/null testbranch stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sink_has_extra_epochs.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_sink_has_extra_epochs.at:33: grep  >/dev/null otherbranch stdout"
echo t_sink_has_extra_epochs.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep  >/dev/null otherbranch stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep  >/dev/null otherbranch stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_sink_has_extra_epochs.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  319 ) # 319. t_disapprove_branch.at:1: branch handling in disapprove
    at_setup_line='t_disapprove_branch.at:1'
    at_desc='branch handling in disapprove'
    $at_quiet $ECHO_N "319: branch handling in disapprove                $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "319. t_disapprove_branch.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_disapprove_branch.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_disapprove_branch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove_branch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_disapprove_branch.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_disapprove_branch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove_branch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_disapprove_branch.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_disapprove_branch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove_branch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_disapprove_branch.at:2: rm test_keys"
echo t_disapprove_branch.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove_branch.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# 1) if no --branch is specified, disapprove should use the branch
#    cert on the rev being disapproved.  if there are multiple such
#    certs, it should fail.  the working copy's branch (if any) is
#    irrelevant.
# 2) if --branch is specified, dispprove should use the branch given,
#    and ignore the branch cert on the rev being disapproved.

# This test is a bug report.


# From reading the disapprove code; this is obviously broken.  I don't
# have time to write a real test right now.  So this is a todo to even
# write the bug report...
$at_traceoff
echo "$at_srcdir/t_disapprove_branch.at:17: false"
echo t_disapprove_branch.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; false ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; false ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_disapprove_branch.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  320 ) # 320. t_serve_ignores_mt_options.at:3: checking that certain commands ignores the contents of _MTN/options
    at_setup_line='t_serve_ignores_mt_options.at:3'
    at_desc='checking that certain commands ignores the contents of _MTN/options'
    $at_quiet $ECHO_N "320: checking that certain commands ignores the contents of _MTN/options$ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "320. t_serve_ignores_mt_options.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_serve_ignores_mt_options.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_serve_ignores_mt_options.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_serve_ignores_mt_options.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_serve_ignores_mt_options.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_serve_ignores_mt_options.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_serve_ignores_mt_options.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_serve_ignores_mt_options.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_serve_ignores_mt_options.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_serve_ignores_mt_options.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_serve_ignores_mt_options.at:5: rm test_keys"
echo t_serve_ignores_mt_options.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_serve_ignores_mt_options.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





$at_traceoff
echo "$at_srcdir/t_serve_ignores_mt_options.at:7: cp test.db test2.db"
echo t_serve_ignores_mt_options.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_serve_ignores_mt_options.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_serve_ignores_mt_options.at:7: cp -r keys/ keys2"
echo t_serve_ignores_mt_options.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_serve_ignores_mt_options.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_serve_ignores_mt_options.at:7: cp test.db test3.db"
echo t_serve_ignores_mt_options.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_serve_ignores_mt_options.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_serve_ignores_mt_options.at:7: cp -r keys/ keys3"
echo t_serve_ignores_mt_options.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_serve_ignores_mt_options.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT



# Now, commit something to transfer
cat >testfile <<'_ATEOF'
version 0 of test file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_serve_ignores_mt_options.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_serve_ignores_mt_options.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_serve_ignores_mt_options.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_serve_ignores_mt_options.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_serve_ignores_mt_options.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_serve_ignores_mt_options.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Hack _MTN/options
$at_traceoff
echo "$at_srcdir/t_serve_ignores_mt_options.at:16: sed -e 's/key \".*\"/key \"foobar@hacked.com\"/' < _MTN/options > _MTN/options.new"
echo t_serve_ignores_mt_options.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sed -e 's/key ".*"/key "foobar@hacked.com"/' < _MTN/options > _MTN/options.new ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sed -e 's/key ".*"/key "foobar@hacked.com"/' < _MTN/options > _MTN/options.new ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_serve_ignores_mt_options.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_serve_ignores_mt_options.at:17: mv _MTN/options.new _MTN/options"
echo t_serve_ignores_mt_options.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv _MTN/options.new _MTN/options ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv _MTN/options.new _MTN/options ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_serve_ignores_mt_options.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# Double-check that _MTN/options was correctly hacked
$at_traceoff
echo "$at_srcdir/t_serve_ignores_mt_options.at:19: grep 'key \"tester@test.net\"' _MTN/options"
echo t_serve_ignores_mt_options.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'key "tester@test.net"' _MTN/options ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'key "tester@test.net"' _MTN/options ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_serve_ignores_mt_options.at:19: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_serve_ignores_mt_options.at:20: grep 'key \"foobar@hacked.com\"' _MTN/options"
echo t_serve_ignores_mt_options.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep 'key "foobar@hacked.com"' _MTN/options ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep 'key "foobar@hacked.com"' _MTN/options ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_serve_ignores_mt_options.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Let's see RUN_NETSYNC fly, making sure we use an existing key.  Without the
# explicit --key option, this push would try to use the hacked identity and
# promptly fail, and that's not what we're after.
# The server, though, doesn't get this explicit key specification, so this
# will test if it (wrongly) gets a key value from _MTN/options or if it takes
# whatever key that's available in keys2/...



# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4



$at_traceoff
echo "$at_srcdir/t_serve_ignores_mt_options.at:28: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push --key=tester@test.net localhost:\$_PORT testbranch"
echo t_serve_ignores_mt_options.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push --key=tester@test.net localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push --key=tester@test.net localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua push --key=tester@test.net localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_serve_ignores_mt_options.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null




      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  321 ) # 321. t_netsync_notes.at:3: exchanging work via netsync, with notes
    at_setup_line='t_netsync_notes.at:3'
    at_desc='exchanging work via netsync, with notes'
    $at_quiet $ECHO_N "321: exchanging work via netsync, with notes      $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "321. t_netsync_notes.at:3: testing ..."
      $at_traceon





# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_netsync_notes.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_netsync_notes.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_notes.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_notes.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_netsync_notes.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_notes.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_notes.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_netsync_notes.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_notes.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_notes.at:6: rm test_keys"
echo t_netsync_notes.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_notes.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





$at_traceoff
echo "$at_srcdir/t_netsync_notes.at:7: cp test.db test2.db"
echo t_netsync_notes.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_notes.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_notes.at:7: cp -r keys/ keys2"
echo t_netsync_notes.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_notes.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_notes.at:7: cp test.db test3.db"
echo t_netsync_notes.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_notes.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_notes.at:7: cp -r keys/ keys3"
echo t_netsync_notes.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_notes.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT



cat >netsync.lua <<'_ATEOF'

logfile = nil

function note_netsync_start()
   logfile = io.open("testnotes.log","w")
   logfile:write("start ---------------------------------------------------\n")
end

function note_netsync_revision_received(new_id, revision, certs)
   logfile:write("revision: new_id    = " .. new_id .. "\n")
   logfile:write("revision: revision  = " .. revision .. "\n")
   for i, cert in pairs(certs)
   do
      logfile:write("revision: cert.name  = " .. cert.name .. "\n")
      logfile:write("revision: cert.value = " .. cert.value .. "\n")
      logfile:write("revision: cert.key   = " .. cert.key .. "\n")
   end
end

function note_netsync_cert_received(rev_id, key, name, value)
   logfile:write("cert: rev_id = " .. rev_id .. "\n")
   logfile:write("cert: name   = " .. name .. "\n")
   logfile:write("cert: value  = " .. value .. "\n")
   logfile:write("cert: key    = " .. key .. "\n")
end

function note_netsync_pubkey_received(keyname)
   logfile:write("pubkey: " .. keyname .. "\n")
end

function note_netsync_end()
   logfile:write("end -----------------------------------------------------\n")
   logfile:close()
end

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF



# Checking the effect of a new revisions
cat >testfile <<'_ATEOF'
version 0 of test file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_notes.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_netsync_notes.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_notes.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_notes.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_netsync_notes.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_notes.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

F_VER0=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
VER0=`cat _MTN/revision`
MAN0=`cat _MTN/revision | $_MTN_EXEC --norc --root=$_ROOT_DIR automate get_manifest_of -@- | $_MTN_EXEC --norc --root=$_ROOT_DIR identify`
DATE0=`$_MTN_EXEC --norc --root=$_ROOT_DIR automate certs $VER0 | sed -e '1,/name "date"/d' | sed -e '/^$/,$d' | grep '^ *value' | sed -e 's/^[^"]*"//' -e 's/"[^"]*$//'`

cat >testfile <<'_ATEOF'
version 1 of test file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_notes.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net commit --message blah-blah"
echo t_netsync_notes.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_notes.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

F_VER1=`$_MTN_EXEC --norc --root=$_ROOT_DIR identify testfile`
VER1=`cat _MTN/revision`
MAN1=`cat _MTN/revision | $_MTN_EXEC --norc --root=$_ROOT_DIR automate get_manifest_of -@- | $_MTN_EXEC --norc --root=$_ROOT_DIR identify`
DATE1=`$_MTN_EXEC --norc --root=$_ROOT_DIR automate certs $VER1 | sed -e '1,/name "date"/d' | sed -e '/^$/,$d' | grep '^ *value' | sed -e 's/^[^"]*"//' -e 's/"[^"]*$//'`




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4



$at_traceoff
echo "$at_srcdir/t_netsync_notes.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_netsync_notes.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_notes.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null




cat >testnotes.test <<_ATEOF
start ---------------------------------------------------
revision: new_id    = $VER0
revision: revision  = format_version "1"

new_manifest [$MAN0]

old_revision []

add_dir ""

add_file "testfile"
 content [$F_VER0]

revision: cert.name  = branch
revision: cert.value = testbranch
revision: cert.key   = tester@test.net
revision: cert.name  = changelog
revision: cert.value = blah-blah
revision: cert.key   = tester@test.net
revision: cert.name  = date
revision: cert.value = $DATE0
revision: cert.key   = tester@test.net
revision: cert.name  = author
revision: cert.value = tester@test.net
revision: cert.key   = tester@test.net
revision: new_id    = $VER1
revision: revision  = format_version "1"

new_manifest [$MAN1]

old_revision [$VER0]

patch "testfile"
 from [$F_VER0]
   to [$F_VER1]

revision: cert.name  = branch
revision: cert.value = testbranch
revision: cert.key   = tester@test.net
revision: cert.name  = changelog
revision: cert.value = blah-blah
revision: cert.key   = tester@test.net
revision: cert.name  = date
revision: cert.value = $DATE1
revision: cert.key   = tester@test.net
revision: cert.name  = author
revision: cert.value = tester@test.net
revision: cert.key   = tester@test.net
end -----------------------------------------------------
_ATEOF


if test "$OSTYPE" = "msys"; then
  dos2unix -q -o testnotes.log
fi

$at_traceoff
echo "$at_srcdir/t_netsync_notes.at:81: cmp testnotes.log testnotes.test"
echo t_netsync_notes.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testnotes.log testnotes.test ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testnotes.log testnotes.test ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_notes.at:81: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Checking the effect of a simple cert change
$at_traceoff
echo "$at_srcdir/t_netsync_notes.at:84: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net tag \$VER0 testtag"
echo t_netsync_notes.at:84 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $VER0 testtag" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $VER0 testtag ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net tag $VER0 testtag ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_notes.at:84: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4



$at_traceoff
echo "$at_srcdir/t_netsync_notes.at:86: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_netsync_notes.at:86 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_notes.at:86: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null




cat >testnotes.test <<_ATEOF
start ---------------------------------------------------
cert: rev_id = $VER0
cert: name   = tag
cert: value  = testtag
cert: key    = tester@test.net
end -----------------------------------------------------
_ATEOF


if test "$OSTYPE" = "msys"; then
  dos2unix -q -o testnotes.log
fi

$at_traceoff
echo "$at_srcdir/t_netsync_notes.at:97: cmp testnotes.log testnotes.test"
echo t_netsync_notes.at:97 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp testnotes.log testnotes.test ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp testnotes.log testnotes.test ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_notes.at:97: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Checking that a netsyn with nothing new will not trigger the
# note_netsync hooks
$at_traceoff
echo "$at_srcdir/t_netsync_notes.at:101: rm testnotes.log testnotes.test"
echo t_netsync_notes.at:101 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm testnotes.log testnotes.test ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm testnotes.log testnotes.test ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_notes.at:101: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4



$at_traceoff
echo "$at_srcdir/t_netsync_notes.at:102: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:\$_PORT testbranch"
echo t_netsync_notes.at:102 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_notes.at:102: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon





# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null




$at_traceoff
echo "$at_srcdir/t_netsync_notes.at:104: test -f testnotes.log"
echo t_netsync_notes.at:104 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f testnotes.log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f testnotes.log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_notes.at:104: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  322 ) # 322. t_rosterify_on_rosterified_db.at:1: db rosterify twice gives an error second time
    at_setup_line='t_rosterify_on_rosterified_db.at:1'
    at_desc='db rosterify twice gives an error second time'
    $at_quiet $ECHO_N "322: db rosterify twice gives an error second time$ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "322. t_rosterify_on_rosterified_db.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_rosterify_on_rosterified_db.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_rosterify_on_rosterified_db.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_on_rosterified_db.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_on_rosterified_db.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_rosterify_on_rosterified_db.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_on_rosterified_db.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_on_rosterified_db.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_rosterify_on_rosterified_db.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_on_rosterified_db.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_on_rosterified_db.at:2: rm test_keys"
echo t_rosterify_on_rosterified_db.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_on_rosterified_db.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_rosterify_on_rosterified_db.at:3: echo \$UNB64_COMMAND"
echo t_rosterify_on_rosterified_db.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_on_rosterified_db.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test -n "`command -v gunzip`" 2>/dev/null; then
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  UNGZ_COMMAND="gunzip -c"
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_rosterify_on_rosterified_db.at:3: echo \$UNGZ_COMMAND"
echo t_rosterify_on_rosterified_db.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNGZ_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_on_rosterified_db.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >test.db.dump.gz.b64 <<'_ATEOF'
H4sICFkQw0MCA3Rlc3QuZGIuZHVtcADtWFmPm0oWfm5+BcpLEnUnZl/uVaSLbYwXwAsY7B6N
WgUUi81mFhv710/ZTjvdbXcmmbnSvAxSWwXUWb9zvjp0W1YGOi4vOurcGFjyn1hnJkumjJtS
W5VxpwCpGz7BPHPDErv7hN2FoAzxNKvwtI5jvE6jTQ0f8Ofryxf8tCHz8QImIEqjNMD9CMZe
iZcwBwWooIc7e/zDHx+wu7P297QhXassSkt8F1UhUreNyihLn1xYVOXXLYhriN2dHPuh4M2F
NCALXpbgIWy+wNTNPGQ98rC7z2/i9JynLShK7Fny02WFpFEYFxMPF82lm+XwGCjI8zhyQYWc
O93iSNNFPAUJfCt8Ekeb8DXcXzaeArra+X3jOdrnrec0fTp79nAy8fny8m1kfhTDJw/GFTji
d4fdRd6tYKoiQ0g9Y3cUwt0srWBaITEHlG9ce43NcXv5FSnOipf2vh4zfVq+Ej6i4kW+j1fZ
0QYyXbsV7tZFgazhfoHgOhrE7r7HGXkPpwefr2E7GT6VJTKeF1ECiv0xqw+/EpUHXjj2nAg3
S/ICliVERp8L5lnkjO5Ry8mTgW7IMxMf6Ob47AhuSepcNj59BKwHSYdjfZZxSIrwWVHgCEoA
Pu0LNEdTPuNyLMMTHx8+9plyIH2/WkKlzbmVppLWwCwbcyTnutmTs70blGQsZwciKOfLcKLK
G70t1Amr+EnuVQdpKilY7aw76knNt2/Yx5+65xLQ93mCIThAAwg9BrAEJHieQi8g6QsiKXqi
KAhv3dtXY9NgR6rVH5gGUZvrZmLBaUfSHaLDz6fHPSfLryBKQBr5sKzOfftTCvk98riu41u0
8Wz+uTwv7rwo0ds9etKU5QA5dyykoy9umJUwPXpQl7DA7m737EtBJ84c7A5VZA6i4lZ3v3A1
rx3EI09o89mtMgpSUNXFWwtIamZILaMvkfiPPShpH/5xjOSvyPsDOfbPD5cGOj59wI9tdHL4
Af/uz8MP8Ru99SZTz112M9o3jQYQrFUIUQOhvKHCQ/wJLvpu0clVLiD6gT/Q+gl41/zy91LM
pYDeoZn/JAHXzPOr5PNDx5sOv7h56XKKdwiWYjmSd0WRF2mXYR0e8D5JsxzPuYRIohUleFdd
vlB307SrSbse0a/TvQQsZ57YTdwv1SbLej11axJD3i/208gZFfmkDUcbmxlZtoo5SqzbBAFH
VZNTDbgHDZ8KvA7HE51hDvIgeaSWei+T1oQ2IPu1KBkLPSJEumy1xHha6/TjeOTsEI1cWOwV
Fi865O8lkmtMz1rQPeoblP4ISRdX/Y9evwcl6tDv7uJHe0l5hdiLYC6YeVBgHJZnPRYyPMUy
tEhDBzCi50L0x3iOKCC6po6YpavyrzxzsuYrqhp0rw0UT5MIpWNsFGPg0N2p3Jamc0liFFXq
dtrhbtQOph2W2VqrotgsM9OfmIGdcMO8Vu/XY3nm6tTYcLF2aW8412HshE7jfbKzNsPhfnd8
5O+D+XKXbPbRTJ00s6z0VaWmKEEK5QPQmKEj9ck8CPjObru1PMzvzxa6tJC1YCyIQXu1XkO3
USNm3jI5vluoq/VsIkVxJ7DVR30rLOFYERfSBAb2vuBDXRJ3g7Y8/fbtqgwuoyCaHlHJF/tT
MaA0H5v7iitvzJBn5nDDKL41C70r8J0szoYe8JP85ytcr7y7oItQ4gl07vKQ5CjeoxGmgKAc
SDO+wDMU5FgadSfp0p77fsz/m2P0dSL+f2DCn+B+QugCOqR80SM5wXNpyPOcwAlApNCP60KW
IwiadXlR8Ennd4rj4eP5ywktPMU6eMpwv7TZFTiR5jU19Dpdeqs4PbE1U8KWlQUpUSyjZMms
iUXRYZ0hMLpMm6vDyWOZzfR+bNybjukAH7CaPIVBArTehspprLNYrzgdEuXB9RSl1801fsFO
qUPPm06GU8vvGCuOpjthc+hxCe2aOhu7luwsmllYBtQ6MWF931V4FuttAOEVTi81KBI0/UUa
9pWeNqUG7en18PpOYnkAKRKiEZalIWQhxfEsBQQeja6ewNMcOvd43/dJ4fcSi/gcHtl0Je3Q
ybTTDKLRetOdZmaHsZk1+vR2ioOot8yI2lvONc8U5J4xnNBkvIn5UbKeOQtb6jzOi741WU/E
x3pGE3nPHLXXIlLu0EOumzA7xwioLYvZ1c4X1DG6EbskI1EBedgFfC0oe71ReLslNiTqE30h
xSrrzLdGp++Ml46fZ9HGopVEVzt6EsLZHiuYCctVI6aeEMsmOUh6ZW9JNeKXjfbLKXZdmkYf
AozDiALJiKLPQtrxCZYnPQ66ANIU7UKPcH8vxaCuwqw4FnGSH6b99naZiIya6FvnneTq4miv
C9peCEc+2B92UVHmotgd9Hf3hcCMWNAacIWYdO5HjKcBd2+Mq8laU0yxzuf1vblNZmJPsow2
Zo8itRMf5rKLTpdkqtkF1RUUsIvCuiGjIDiYrtMIW4HSbclnnPHIKO1lt91ZW3G61FuTUZuu
bWfVYIpNzxZ9Lq0Wy5LaDSjUE/lCbq9sffnLyeUYDkLCY6DnMT7NcALLAlHkAMWKQBAolHI0
vtGs93vJdUOQBjDOArReJk0IlGG5tIObeV3pOWuIE0WLi+XUHeg8uRq2mOTezae0Ncp6sndv
unXv0QxoS2ND07YkN7KkyhuXeqDMutm+tdcnfQPb+8Vyud+KdnA/H5QBJ5Nx2ETTjafyU7/V
aRjCcg3epvuut9ho+2DlkfKcrNzNJvDH93m5WY7Dthl4WD+e7riKGR02610tbInHWo2kelfS
dnZjHLwcSj8dzY+0/6mCTXU+EM8in/+bIfxZybtHwAuS+nXkXg3hFKU5dtHV2m251Srng9DP
uGRMEnGiaXaVx7vA2ByiaLvgvHkUVPemf3hMI94fsTRG59vRkl09ElMn03rZZmxNqCFsK6aS
iTM0wJcryjRo+zFPuYLbyz7v9TkHHaV16350CCaLOtnwkZNomCxa1HZiNTEcD9Vta9FvrcYZ
2fitjIAtn58julH0g77qOVXPkvaOBzrL+c5Y2CqR9HnanHcGSlDbE0xU7SIYBUZ7sCptMFVm
oRS4tRtY8ZiqIXCJ1VCULK2ilGUlTV//F2Ggd+XF9VD19HQe38b6jYHr03k0e0/HqQ+fnqLX
0ufuRJ+C/07uOB08nSeZG/Ln2eH0+qhorGkD80/sX04nDmdmFQAA
_ATEOF


$at_traceoff
echo "$at_srcdir/t_rosterify_on_rosterified_db.at:52: rm -f test.db"
echo t_rosterify_on_rosterified_db.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f test.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f test.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_on_rosterified_db.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rosterify_on_rosterified_db.at:54: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o test.db.dump.gz test.db.dump.gz.b64
else
  \$UNB64_COMMAND <test.db.dump.gz.b64 >test.db.dump.gz
fi
"
echo t_rosterify_on_rosterified_db.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o test.db.dump.gz test.db.dump.gz.b64
else
  $UNB64_COMMAND <test.db.dump.gz.b64 >test.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o test.db.dump.gz test.db.dump.gz.b64
else
  $UNB64_COMMAND <test.db.dump.gz.b64 >test.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_on_rosterified_db.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_on_rosterified_db.at:54: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"test.db.dump.gz\" != \"test.db.dump.gz\"; then
    mv test.db.dump.gz test.db.dump.gz
  fi
  gunzip test.db.dump.gz
else
  \$UNGZ_COMMAND <test.db.dump.gz >test.db.dump
fi
"
echo t_rosterify_on_rosterified_db.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "test.db.dump.gz" != "test.db.dump.gz"; then
    mv test.db.dump.gz test.db.dump.gz
  fi
  gunzip test.db.dump.gz
else
  $UNGZ_COMMAND <test.db.dump.gz >test.db.dump
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "test.db.dump.gz" != "test.db.dump.gz"; then
    mv test.db.dump.gz test.db.dump.gz
  fi
  gunzip test.db.dump.gz
else
  $UNGZ_COMMAND <test.db.dump.gz >test.db.dump
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_on_rosterified_db.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rosterify_on_rosterified_db.at:55: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump"
echo t_rosterify_on_rosterified_db.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_on_rosterified_db.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_on_rosterified_db.at:56: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db migrate"
echo t_rosterify_on_rosterified_db.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_on_rosterified_db.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rosterify_on_rosterified_db.at:58: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db rosterify"
echo t_rosterify_on_rosterified_db.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_on_rosterified_db.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rosterify_on_rosterified_db.at:60: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db rosterify"
echo t_rosterify_on_rosterified_db.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_rosterify_on_rosterified_db.at:60: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_on_rosterified_db.at:61: grep already stderr >/dev/null"
echo t_rosterify_on_rosterified_db.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep already stderr >/dev/null ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep already stderr >/dev/null ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_on_rosterified_db.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  323 ) # 323. t_case_insensitive__MTN.at:1: _MTN case-folding security patch
    at_setup_line='t_case_insensitive__MTN.at:1'
    at_desc='_MTN case-folding security patch'
    $at_quiet $ECHO_N "323: _MTN case-folding security patch             $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "323. t_case_insensitive__MTN.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_case_insensitive__MTN.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_case_insensitive__MTN.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_case_insensitive__MTN.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:2: rm test_keys"
echo t_case_insensitive__MTN.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:3: echo \$UNB64_COMMAND"
echo t_case_insensitive__MTN.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test -n "`command -v gunzip`" 2>/dev/null; then
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  UNGZ_COMMAND="gunzip -c"
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:3: echo \$UNGZ_COMMAND"
echo t_case_insensitive__MTN.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNGZ_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# The patch for this security issue is to treat all case-folded
# versions of _MTN as being bookkeeping files (and thus illegal
# file_paths).  Make sure it's working.

# bookkeeping files are an error for add
$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:10: touch _mtn _mtN _mTn _Mtn _MTn _MtN _mTN _MTN"
echo t_case_insensitive__MTN.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; touch _mtn _mtN _mTn _Mtn _MTn _MtN _mTN _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; touch _mtn _mtN _mTn _Mtn _MTn _MtN _mTN _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add _mtn"
echo t_case_insensitive__MTN.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _mtn" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _mtn ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _mtn ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:11: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add _mtN"
echo t_case_insensitive__MTN.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _mtN" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _mtN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _mtN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:12: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add _mTn"
echo t_case_insensitive__MTN.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _mTn" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _mTn ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _mTn ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:13: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add _Mtn"
echo t_case_insensitive__MTN.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _Mtn" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _Mtn ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _Mtn ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:14: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add _MTn"
echo t_case_insensitive__MTN.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _MTn" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _MTn ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _MTn ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:15: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add _MtN"
echo t_case_insensitive__MTN.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _MtN" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _MtN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _MtN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:16: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add _mTN"
echo t_case_insensitive__MTN.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _mTN" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _mTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _mTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:17: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add _MTN"
echo t_case_insensitive__MTN.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _MTN" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:18: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls known"
echo t_case_insensitive__MTN.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:20: rm -rf _mtn _mtN _mTn _Mtn _MTn _MtN _mTN _MTN"
echo t_case_insensitive__MTN.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _mtn _mtN _mTn _Mtn _MTn _MtN _mTN _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _mtn _mtN _mTn _Mtn _MTn _MtN _mTN _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# run setup again, because we've removed our bookkeeping dir.
$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch setup ."
echo t_case_insensitive__MTN.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch setup ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch setup . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch setup . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# files in bookkeeping dirs are also ignored by add
# (mkdir -p used because the directories already exist on case-folding FSes)
$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:27: mkdir -p _mtn _mtN _mTn _Mtn _MTn _MtN _mTN _MTN"
echo t_case_insensitive__MTN.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir -p _mtn _mtN _mTn _Mtn _MTn _MtN _mTN _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir -p _mtn _mtN _mTn _Mtn _MTn _MtN _mTN _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:28: touch _mtn/foo _mtN/foo _mTn/foo _Mtn/foo _MTn/foo _MtN/foo _mTN/foo _MTN/foo"
echo t_case_insensitive__MTN.at:28 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; touch _mtn/foo _mtN/foo _mTn/foo _Mtn/foo _MTn/foo _MtN/foo _mTN/foo _MTN/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; touch _mtn/foo _mtN/foo _mTn/foo _Mtn/foo _MTn/foo _MtN/foo _mTN/foo _MTN/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:28: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add _mtn"
echo t_case_insensitive__MTN.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _mtn" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _mtn ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _mtn ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:29: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:30: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add _mtN"
echo t_case_insensitive__MTN.at:30 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _mtN" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _mtN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _mtN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:30: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add _mTn"
echo t_case_insensitive__MTN.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _mTn" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _mTn ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _mTn ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:31: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:32: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add _Mtn"
echo t_case_insensitive__MTN.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _Mtn" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _Mtn ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _Mtn ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:32: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add _MTn"
echo t_case_insensitive__MTN.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _MTn" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _MTn ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _MTn ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:33: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add _MtN"
echo t_case_insensitive__MTN.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _MtN" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _MtN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _MtN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:34: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add _mTN"
echo t_case_insensitive__MTN.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _mTN" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _mTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _mTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:35: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:36: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add _MTN"
echo t_case_insensitive__MTN.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _MTN" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:36: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls known"
echo t_case_insensitive__MTN.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls known ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:38: rm -rf _mtn _mtN _mTn _Mtn _MTn _MtN _mTN _MTN"
echo t_case_insensitive__MTN.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _mtn _mtN _mTn _Mtn _MTn _MtN _mTN _MTN ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _mtn _mtN _mTn _Mtn _MTn _MtN _mTN _MTN ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# assert trips if we have a db that already has a file with this sort
# of name in it.
cat >files.db.dump.gz.b64 <<'_ATEOF'
H4sIACkRKkQCA+1YW2+bxxF9ln7FB7/IBhh375fkJU4qtAYcB4idIEBRELszsxZTiVRJyon/
fc+SIkXz4shpgL6UsglR3Mvczpkz3zeXf3v5erj8+dtXP755+dPlV+ff/nD54u3l8PbFN68u
hzovU7oay+2MrhbnZ0/Pz67K4mqYzpbD9O76eribTv59J6Nh8/rii2G1YNaGudyUyXQyfTe0
iVzzYljIbZmXpfBQPwxPvnxyfrY+/dRpOOuX2WS6GH6dLK9w3PvJYjKbjknmy8Xz9+X6Ts7P
VoY9HLD3wgm4gWc3w5X89oVMaca4fcLnZ8/2/OQ6fl/mi/PNzqfb37AbbmyvGG1PXtDsVrqj
5fb2ekJlCeNWHwectN0+LTeyv3m1HYuGf8mH7cKVQwcr7xeuvd0sXYfp6dqy0eqKZ9sv9z1r
k2sZs1wvyzp/Ez7my3I+Q6I2qet7BppNlzJdYlctiz3LPk5NX754joNn893rnvdAr379aDP2
0uzmdi6LBZIx50lrw3LWr4MVd7Qc6G4+x8VDmyNx/e7zs3uPJzxa/eHZYQJXNmwcvJ1Pbsr8
Q4/v6DEOctmxcROTHSM3K9fp7ZtXBrx8/ebyh7fDy9dvv1/fP/z04tWPl2+eXnCxuVgRL6G6
qtga72uTln1QOmVVGicVVb4Y/XyhW6oqqZ1Xa8qqg9fFvss3ZTppsliuEfFJcH4eLA9L5Bgg
N9dvMr81Zyf7x6t/ddLstsC4nphuC13NFjLtFtwtZH5+dhwNuxvr9ayenyHDt2UyP4abHVNv
7yoQOsbitVmLybtpWd7N92/Arh/evPjLm7+/0MPDGgTtyT+6J19P+EsY9s8n24Lsfx0NvSxX
Bo+Ge3tGD9uP1OpepE7A8mjhFqR1eSUDqnE+QcGBmcr2vGNIPYiF4E0esvWJ5B1C955S/yTI
bgvoBGz/SAAOkbwP5tGw6QMfo/rhjH07p/LbcjyfLZYyH0+xczy9u6m9SGF1/7xr926dTq8/
4G1t6odu6PJqshiWpV6jUOR9P2GPRE7ctKWVdMABO5X95xLAYS7Wp3QfJwyXJtg9P8Atvj6V
AiDr3tyh33ezOHB/x5kHJpXkqo+evbhovLPZSi0uMwn+O645CTvDF6OL6S+Lr29ndfbbc2S7
M6tVSWcGlbIKKpuSgksptIjPevXjQas2afCv6mtTVAbvWqmaxTQfbMFdORVtIzUnypcgKePN
NMlKtNY4i5O4TCqQL0UyhZawjCXmaHJVPhSDr6sqtURdY8MNLliVSyF846pt+JyqboZCrYEr
KaO1tSGRqBxI6YbzVLJV4Uea9xwpOh+tU56cNcpWakGpYLNxMRO5mmrytrlWhGyhCgOda8qY
7HB7MJxtaA3uJtGVPSmLKOtApYpoHIsIGQXnDqptq8Eg2wCV+YdVzSGbHfsHVHpEvK2Jha4m
18dUyMkN91yyvmg0rPY/OyifA+u2RYTi4JaRsqrIJuWaLS2mrItX0ii7hFSU6hmVcNrn/02X
/TgQ/++n8om8rzK0TXoLNjEVgBog9pGA3xiskOaoWQOT2jWC1vqc4hhdrEeWzi7RBYAQ7yaa
oIMEQPYYC3mvXACiqUgoXlMEvQgHosC+GR+Cc7GYKC7gV1YM+hGqWRGQnm1JTif2FdC1YByr
a6gMPsiNSCgEFUUF7AHltEQ24EhjEphERdzgVI4SG+mSlXUGFFCc1lIjGcMgt5p19Fhcaq0M
oQpHs4kgv9BqACcWi2uYyRu4H7XEELLVpungQFExVEohNYGL+A28pBRFq7wxKkbbBOyb88Xj
0iUNp7UcUnaxhZhryE0bg+iQGGMNGNj7KP7z0oVmJKtWgOjhB9yHd4t3YzOaCYJiC/73d2/j
sfSZFsQJ4a5iPEXvotZYDqoN3qCkCCYj5BXdBOYYcKdvNuqss4NBrjBZrSgZp9lUpIjBwri4
TwLSuGQcEFXRmBPgAIjaaKQhVO8T0oRQiG8ihDaCRte6W66SQ7nFjCvQHlSWktiggApXT8U1
38DkaB/oVSajhZgkxalouFWk3PVylF74USQYl7wh5WNMJSVLzmRb0ZC0hGYyZbGPTF9sMdvI
sQMNPZmakhirI6dqNLagiTnUXa2fl75yt7yazXsagK/SW15UoQWUZ0ymI66Fo50/AXAoSDai
fUAjRDIA+lirNy0JuVJsRDsO6KrVMAcpJRpJCqkOjJpDSzQhIwbSomNUIlp7T4IDEABAJXAT
giGI2BgbEMAlOrG21YTqV0UiYqlrQyoBMfRtJCVH5BSBSapq0EAHmwMlQF0kHZtHDnRNOSO7
ARoC6iMAsYAASo0hPSR7FIkJwraD1NvCWqvodAVB5MAuo/YQ0AgmCI9MmhVmGyEXjMYEagp0
AISBL76gekARLXKtUASflzS6KtN3cj17t8obnAntWI5KFoWxWMTkzE5BMVWBaxZUpw2Qrn3n
IE6ptczIB3ReLYins6kGwCgKMOxaTrEim3ADL0cci089qKZxTaY55bqX0Gb4jj0QzD4VaCiL
zwGHo8YZBUIMYBWTIZMitwLYkangBAhGHzj7CryDrQ3SCogCjAHYC0U1UB2DV8DvkIbNoMYJ
rK2IM07DpF+9raZkNkTZ2BoQxZBAb/a00lhPACupgb+Nj6nxT4mE+wFiR198Yg5cL97M8Pdb
d4bAU4W0Xvkg0x9fHsqVWKB3vYAPGzpdgLAHLbfgGWLVdlQ6XehkfD49L3ax8XSJQWotw9Zb
nv03k+HmkJPBWPyBMBx/7lM4K4dmTpD1WjkPUhU0fkraoMmjGGNIPnIGaaM1WpsAXMUYMIwX
sA2aiI4AioC3iDy4pIF6epMndC0wYIhoR1ZHV9CBUIqSs6FmNSufWyowUrOPIQNo2mHmYB1U
/xPYBhMCoBcFtR4wXGABwyKBOKngQBCzZ4wUFtNR7YORZkIeU0WygWytsNMQqLYEQzp5dB8A
DJJBNQGAG0aQDB+rRasEA0IggaBV1s4pjRHMkEu6saIuoAzoEr0KlA5ixURnIaJyKCDUPili
0PPFJpfFuwZp1irnCOJmkLo5+hzto6I//TDm6OOI/ihiA9ejD1/+KO6OPnz5c5+/3JtwGk2/
6/FRTD0OVrvH7MNqbdcWVI8mjBOgYg/FpZMka6FPV6BCbyOUl0ItZaUJJQ0x7vHPQOZyCtCE
ynoX0JiardGrWCAOdDUpx5hD6GhrkAwN2IH0cl0eWvQjsHy1IABfCFDX2avmtUs1W4+5w2bC
gI/uEDVaCCrWovQrVD9pKPSkCGihrGKFsIEchwnEBU0KvakotmiPEBxQIPDdM+YaqDPqwiLE
oL0zwFIyKw9KYwh3TPoWE4J3AsEg1XbF6oFMCJviSSqhOUFrVIJk8yHCy65UIJvE9bCh3dVc
exNOLUCxRsQaI4duEY0x1Ca2Accuc0KfRYfDhFIB7uowDpicnHBG41PoqiErwwgKE6RzQ2NO
vgpmk9JXBIAa8lBhYRdQ6MqEu/aA+vL1Xy9/Phzwx+P1o4TvXx8Z/p+uHxOcOmOlhMa9S+7u
XusjoOb39vVJdbyeqo/sX8+xq6/7Qd9/993Lt1+d/wegrYfzaxsAAA==
_ATEOF

cat >dirs.db.dump.gz.b64 <<'_ATEOF'
H4sIACERKkQCA+1YW2+bxxF9ln7FB7/IBhh375fkJU4qtAIcG4idIEBRELM7sxZTiVRJyrH/
fc+SIkWLpCOnAfpSCqYl8tvduZ0zZ/a7879dvBrOf/n+5U9vLn4+/+b0+x/PX7w9H96++O7l
+VDmNK2XY7mZ1cvF6cnT05NLWlwO09lymN5eXQ2308m/b2U0bF5ffTWsHpi1YS7XNJlOpu+G
NpErXgwLuaE5LYWH8nF48vWT05P17sd2w16/zibTxfDbZHmJ7d5PFpPZdFxlvlw8f09Xt3J6
sjLsfoMHL+yAE3h2PVzKh69kWmeM0yd8evLsgZ9cxu9pvjjdrHy6/Q2r4cb2iNF250Wd3Uh3
lG5uriaVljBu9eeAnbbLp3QtDxevluOh4V/ycfvgyqG9J+8eXHu7eXQdpqdry0arI55tv3zo
WZtcyZjlaknr/E34kC/L+QyJ2qSurxnqbLqU6RKrCi0eWPZpavrji+fYeDbfPe55D/Tq108W
Y22dXd/MZbFAMuY8aW1YzvpxsOK2Lod6O5/j4KHNkbh+9unJnccTHq0+eLafwJUNGwdv5pNr
mn/s8R09xkGmHRs3MdkxcvPkOr198cqAi1dvzn98O1y8evt6ff7w84uXP52/eXrGZDNZES+h
uKLYGu9Lk5Z9UDplRY2TiiqfjX450y0VldTOqzVl1d7r7KHL1zSdNFks14j4LDi/DJb7JXII
kJvjN5nfmrOT/cPVv9ppdkMwriem21IvZwuZdgtuFzI/PTmMht2F5WpWTk+Q4RuazA/hZsfU
m9sChI7x8NqsxeTdlJa384cnYNWPb1785c3fX+jh/hkE7ck/uiffTvhrGPbPJ9uC7J+Ohl6W
K4NHw509o/vlB2r1QaSOwPJg4RLSuryUAdU4n6DgwEy03e8QUvdiIXiT+2x9Jnn70L2j1D8J
stsCOgLbPxKAfSQ/BPNo2PSBT1F9v8dDO6fyYTmezxZLmY+nWDme3l6XXqSwuv+9a/dunU6v
PuJtberHbujycrIYllSuUCjyvu/wgESOnLSlFe33SGCntP9cBthPxnqX7uSE4dMEq+d7wMXX
x3IAaN2ZO/Tzrhd7/u84c0+lklzx0bMXF413Nlsp5DJXwT/HJSdhZ/hsdDb9dfHtzazMPjxH
uju1WpV0ZnApq6CyoRRcSqFF/K1XPx68apMGAav+bIrK4F0rVbKY5oMlnJUTaRtrc6I8BUkZ
b6ZJVqK1xl6cxOWqQvVEkmtoCY+xxBxNLsoHMvi6KCoUdYkNJ7hgVSaq+MYV2/B3KrqZGkoJ
XKoyWlsbUhWVQ1W6YT+VbFH4keY9xxqdj9YpX501ypbaglLBZuNirtWVVJK3zTWSaqkWGOhc
U8Zkh9OD4WxDa3A3iS7sq7KIsg6ViojGtoiQUXBur9q2Igy6DViZf1zVHLLZwb/HpQfU25pZ
6uXk6pAMObrgjkzWB42G1fpne+WzZ922iFAc2iXnudgg1hTJjlX3sOiCMOumayCxWkiO+/y/
abOfBuL/DVU+k/dVhrZJ96FG9ja5hiSrDKDn4psvVmmXrauUgWcn8iXFMTpbzyydXaILACHe
TTRBBwmA7CEW6qQSHZgqRgCz+uAg8DzowPQDI4jA5SzKRq+5xta8S8pBN2ZWXTH64gHsYlQS
oz0BrcbUZFTxWFxMMEblllgn68TBihxTMs6WYGOs2pEk+JQDiMm2qKvBedp7aYn6bzEI9iGf
lCbjSaUCb7zOCISK0WduuRTDwVTxJSGCzrIiWwt5nExgPQYlRsYqq732YvBNqSV0wiy2Uqpn
j0sXp1RYrG02qpQjuJB19WAlpDHEUGvB/9baL0sXmpGsWoGxoHgL7sO7xbuxGc1EWWcJ//zq
PR5KH3KMMxojEy3HDCY11lLIWkw2iDB5x5Zt4qi0IXQERNlpz6kpxzVknyTnyKyNlwoKzjlZ
dDOYXEoE1TI+KZli1Kaim8WqwMNoPcZxJOdS8+gzzSLQqTqqyAmRiVEFlBOan4vJIFqNg/Wh
lVWdh2KRHkSzwhogQKEDeRRrNIzWGdG5FLqUMV55uAaQGNGuN9gmxjqnSq2aPSyrFPQj04eu
6NHwvEFT6vWI9lxIqUgaVSCWtFS04ha/LH10u7yczXsaUNnUWx4cb8GgiSfTEdfC4c6PyGI/
RCZbAAQ5KMACZrKcNUKmo0NjVKUBt8Frso08SUDFJkLFomXmpAJgmLVvxhLq28IHQS/uH0bl
vE9ompHgL8Id0FxZkIyELIZsC8qXIye2DoAlABkRTyFETS5p1I1SxiefNbSFNbGRRnIZ+APM
AX1UuUKWkFpPHQ8NB+HQEpFLU1G0WF8dyIvE2QoDIBckw79a2aGonX1k0qCbPGovOwiOkntV
R2pUhYByF1mzQNJY+cKk1UuavpOr2btV3gJy1A4Cq0IQadaIG3CUPTemZhxqW1CaEmMrzeta
Sur4t8H5yioWRnm12nxqDSAsolpXTdyjp40xwYIEfUvAXASaSOkeT1S3bxB8hRio6gQGIQZa
VL6Bo0hnV6sNEJQJzJy8gJ1tYYuPNaKL6dxZWFAKJBl7NA62Pf8oqBK8t0ycC0OaeoEruhU2
BAKwFdO+ZGo9/aiDGqlC3/kMfPhGx5XGegRYSQ18Nj6kxj8nEu4miB198ZlBcP3wZoi/W7oz
BR4rpPWT96PJ48sDyCUkgxJymRg0hj4lYCDQu0oJTVXnVqSqo/H5/MDYxcbTJSaptQxbL3n2
34yGm02OBmPxB8Jw+OIHhYTmkQgQ1xos02IWZ0p1aFQoXdhmdDbexxDwPaqUoQbQdqIzDtWO
8QPqJgsquPcHTA8egkKwry+Ahm/M0PoAhqk5q4JGn2ppUCc1SwR5JQK0DBF4iwEajdEJe4Ef
c4BIAVUWFUJynUazA+VBACgOaFEVeOhoKh276JeQMhHSQqOnYpohwQNOsDmaHRtoHoAroqcJ
iwhb7FtcA2syY4LC5IJxxGQQKuQIN1B+10SYgSLUC6SMgWABZ2gwFWIKC5KQQtRwHji7Yqwz
Fb4xBCBoPVpVu5iigmcxSyEAfb6J6FbsCs4DsSewD6nMruO+hcTcrQF3FF8YiwFmTESHLuE+
Aczxm5yDdxn9HmMD9YM3N38Uswdvbv7cy5s7E44j8Xc9PojHx0Fyd5uHkFzbtQXko8nmCCDZ
QyZC3Ff0XN2n6GgFTaOrHLKxBgzzAAoGZwzzaB6mWYhghU5RuoxGm2pcAoRxMdSn8j7IRw0t
0DCWYMZHb0UDcRjrgTvxbCtrC2EOyGCBMQ10EbwBWEoNOufaapSCRhVSiS1ZKECHPtbvJQAw
IBDHQ4iFYtLqcgPNSkEgABfBYXzA1xAVVKAWXGktkvUEFSNwCgoU6BfIReO8gwk4CH00e1hr
mCEPDLQc1EgAfls2/ZqkNisOkM++IrbGYwSAYBVYJ1DUHkJC+9qxjbWxUyNh6oIE0g6Ahjo1
mBESJFC3sUEJJCQCBMmYKpKFumvWNC2YZ1SG+qfqMszrifAINsg1mRQgW01yOYEIQ+ddyAOP
vuzRfBHWLvpEo8UbMoFALc6AXxskB6xrGlaK7952RQiuQAycQSJUA3NA9uFYCJJ+2WS6x0WV
5DR8SYRcg2KIVztCNoEokWRolBZA29Tvaj6li4tXfz3/Zf+KYjxeX4a8fnXg+uLp+qLj2B4r
LTfufX539VrhAbu/t67P2uP1vcCB9etJfPV13+j1Dz9cvP3m9D8MMzs+LhwAAA==
_ATEOF



$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:147: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o files.db.dump.gz files.db.dump.gz.b64
else
  \$UNB64_COMMAND <files.db.dump.gz.b64 >files.db.dump.gz
fi
"
echo t_case_insensitive__MTN.at:147 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o files.db.dump.gz files.db.dump.gz.b64
else
  $UNB64_COMMAND <files.db.dump.gz.b64 >files.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o files.db.dump.gz files.db.dump.gz.b64
else
  $UNB64_COMMAND <files.db.dump.gz.b64 >files.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:147: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:147: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"files.db.dump.gz\" != \"files.db.dump.gz\"; then
    mv files.db.dump.gz files.db.dump.gz
  fi
  gunzip files.db.dump.gz
else
  \$UNGZ_COMMAND <files.db.dump.gz >files.db.dump
fi
"
echo t_case_insensitive__MTN.at:147 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "files.db.dump.gz" != "files.db.dump.gz"; then
    mv files.db.dump.gz files.db.dump.gz
  fi
  gunzip files.db.dump.gz
else
  $UNGZ_COMMAND <files.db.dump.gz >files.db.dump
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "files.db.dump.gz" != "files.db.dump.gz"; then
    mv files.db.dump.gz files.db.dump.gz
  fi
  gunzip files.db.dump.gz
else
  $UNGZ_COMMAND <files.db.dump.gz >files.db.dump
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:147: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:148: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db load -d files.db < files.db.dump"
echo t_case_insensitive__MTN.at:148 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load -d files.db < files.db.dump" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load -d files.db < files.db.dump ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load -d files.db < files.db.dump ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:148: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:149: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db migrate -d files.db"
echo t_case_insensitive__MTN.at:149 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate -d files.db" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate -d files.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate -d files.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:149: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:150: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net -d files.db co -b testbranch files-co-dir"
echo t_case_insensitive__MTN.at:150 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d files.db co -b testbranch files-co-dir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d files.db co -b testbranch files-co-dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d files.db co -b testbranch files-co-dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   3) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:150: exit code was $at_status, expected 3"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:152: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o dirs.db.dump.gz dirs.db.dump.gz.b64
else
  \$UNB64_COMMAND <dirs.db.dump.gz.b64 >dirs.db.dump.gz
fi
"
echo t_case_insensitive__MTN.at:152 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o dirs.db.dump.gz dirs.db.dump.gz.b64
else
  $UNB64_COMMAND <dirs.db.dump.gz.b64 >dirs.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o dirs.db.dump.gz dirs.db.dump.gz.b64
else
  $UNB64_COMMAND <dirs.db.dump.gz.b64 >dirs.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:152: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:152: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"dirs.db.dump.gz\" != \"dirs.db.dump.gz\"; then
    mv dirs.db.dump.gz dirs.db.dump.gz
  fi
  gunzip dirs.db.dump.gz
else
  \$UNGZ_COMMAND <dirs.db.dump.gz >dirs.db.dump
fi
"
echo t_case_insensitive__MTN.at:152 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "dirs.db.dump.gz" != "dirs.db.dump.gz"; then
    mv dirs.db.dump.gz dirs.db.dump.gz
  fi
  gunzip dirs.db.dump.gz
else
  $UNGZ_COMMAND <dirs.db.dump.gz >dirs.db.dump
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "dirs.db.dump.gz" != "dirs.db.dump.gz"; then
    mv dirs.db.dump.gz dirs.db.dump.gz
  fi
  gunzip dirs.db.dump.gz
else
  $UNGZ_COMMAND <dirs.db.dump.gz >dirs.db.dump
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:152: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:153: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db load -d dirs.db < dirs.db.dump"
echo t_case_insensitive__MTN.at:153 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load -d dirs.db < dirs.db.dump" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load -d dirs.db < dirs.db.dump ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load -d dirs.db < dirs.db.dump ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:153: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:154: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db migrate -d dirs.db"
echo t_case_insensitive__MTN.at:154 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate -d dirs.db" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate -d dirs.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate -d dirs.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:154: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_case_insensitive__MTN.at:155: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net -d dirs.db co -b testbranch dirs-co-dir"
echo t_case_insensitive__MTN.at:155 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d dirs.db co -b testbranch dirs-co-dir" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d dirs.db co -b testbranch dirs-co-dir ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net -d dirs.db co -b testbranch dirs-co-dir ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   3) ;;
   *) echo "$at_srcdir/t_case_insensitive__MTN.at:155: exit code was $at_status, expected 3"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  324 ) # 324. t_rosterify_mt_ignore.at:1: rosterify handles .mt-ignore files
    at_setup_line='t_rosterify_mt_ignore.at:1'
    at_desc='rosterify handles .mt-ignore files'
    $at_quiet $ECHO_N "324: rosterify handles .mt-ignore files           $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "324. t_rosterify_mt_ignore.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_rosterify_mt_ignore.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_rosterify_mt_ignore.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_rosterify_mt_ignore.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:2: rm test_keys"
echo t_rosterify_mt_ignore.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:3: echo \$UNB64_COMMAND"
echo t_rosterify_mt_ignore.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test -n "`command -v gunzip`" 2>/dev/null; then
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  UNGZ_COMMAND="gunzip -c"
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:3: echo \$UNGZ_COMMAND"
echo t_rosterify_mt_ignore.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNGZ_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >foo <<'_ATEOF'
foo
_ATEOF

cat >bar <<'_ATEOF'
bar
_ATEOF


# the first db has a single rev, containing a file ".mt-ignore", with
# contents "foo".  rosterify should turn it into .mtn-ignore.

cat >ignore-1.db.dump.gz.b64 <<'_ATEOF'
H4sIAHYsKkQCA+1XWY/aShZ+bv8KKy9J1J3gfblXka4BN2BssxkwjEYt21VewBteMObXTxnS
dKehM8nMleZlLIHKdp31O9+p47bcG+i4bHbU+WywkP/EOlNZMmTckNqqjNuZFTv+E0wTx8+x
u0/YnW/lPh4nBR6XYYiXcbAr4QP+fH35gp82JC6ewcgK4iD2cDeAIcjxHKZWZhUQ4HaNf/jj
A3Z31v6eNqRrkwRxjldB4SN1+yAPkvjJgVmRf91bYQmxu5NjLwreXEgDsgCSCPfh4QuMnQQg
6wHA7j6/iRPYT3sry7FnyU+XFZJGYVxMPFw0506SwiZQK03DwLEK5NzpFkeaLuKxFcG3widx
tAnfwvqy8RTQ1c7vG8/RPm89p+nT2bOHk4nPl5dvI3ODED4BGBZWg98ddheAW8EUWYKQesau
EcKdJC5gXCAx28rfuPYjNs32/CtSnGSv7X1tMn1a/iDcoAIC18WLpLGBTJdOgTtlliFruJsh
uBqD2N33OAPwcHrw+Rq2k+FTWSLjaRZEVlY3WX34laiA9cqx50Q4SZRmMM8hMvpcMM8iZ3Qb
LSdPBvpMnhr4QDdGZ0fwhaTO5dmnjy4JKEC5IsVAUeAsR+Bc4PI2zTkiYzvApSkbQodkPz58
7DP5QPp+tYi9erx3OtLQD7WYkZtn2Me3MUdWHLgwL85E+Cknf4+N14Vxi4fP5p/xvrjzCvPb
RX/SlKQWcq5BpvHF8ZMcxo0HZQ4z7O42CV4L2mFiY3cI4tQKslt0eeVqWtqImE9o89mtPPBi
qyiztxaQ1HQmtWZ9icRf9qCkffhHE8lfAfgDOfbPD5eKbJ4+4E1dnhx+wL/78/AifqNY32Tq
uWxvRvumci0Ea+FDVJEob6jQUEOyLvpu8fMqFxD9wRe0fgLeNWH/Xs5eCugd3v4nCbim8q+y
+UXHG0Zf3HxhNeIvzfIcaQOL4kSXF1iGdBHFSYGxGZcQBbQQ3WtW50ej+zjU5ruj3lWUwp5U
M6KmNLlQZ4Y+1jZrtdhMldmWVbTjejjbkrq+mS7melfFVNDXDa2lqkQWSl5bUCPB0SeN2m/f
rlvDq4L/e/vCNURnLege0QBlM0DS2RWd0ev3kEGE++4u3tiL8isAXgVzgQBAlGqWZwELGZ5i
GVqkoW0xInAg+jHAFgUIGAogCOJN/lea2MnhKyoCdK8NekCTiF5ntuvNBjbdnchtaTKXJKan
St1O26+GbW/SYZn9YpNlu1ViuGPDW0ackpbq/XYkTx2dGs0crJ0vd5xjM8uIjsM6qhY7Ramr
5pFbe/NVFe3qYKqOD9Mkd9VeSVGC5MtHS2MUW+qTqefxnWq/XwDM7U9NXTJlzRsJotfebLfQ
OagBM28ZHN/N1M12OpaCsOMt1bW+F1Zw1BNNaQy9ZZ3xvi6J1aAtT759uyqDy6iEpitUwVl9
KgaU5oarV63vxox1bgSOH4S3ZoV3Bb5z/2zoAT/Jf77C9cq7C7oIJYsgbIdwgQhdl+BoEp2T
HMkKjktxFkVyFkc5FsPRxPsx/29OxR8T8f/zD/4E9xNCF9AhJwDIuQRLQJqneDQrOQzJW5Yj
kiRtESTtkATnCvzvFMfDx/OXBVqA3uIIekq9WrIb69Q0r1vDpNJ8Zxit20rJeuPZuPCFcfde
r0zEtd09O02UfZtVJ9Z+D5OBGvjjzHAeI24k6OYyAqZltJgampMYm4yjUZjdH9ZUu+dRtNM2
22BL82vgsc6iX+93wYJUnXUQ6tvdmJ7EZjk2NFXu8L1WXk8GG37c89Y7CWI8Cknrz2uCgfms
MzTb5Vw5psOtuxXObf8XEusKLOQogiZdzqUdnrcASisJKUqEFssSru1SPMvR7O8lFvVz2HTT
jVTpAVFpNVGPFpNK3ySEZiRHzbud4qXfZmdtR0/NiuzytG6N2KlMZlkf2So3wDv089Dnnayn
9Hqh/ni/tlZ1nWlzejBvrSNzwD+SvRazamF+j7QKvQ6hoixoinRK0upX92FgyfbU34yKrbZd
KOlgAzOLm+z5ZBt27xVRiY7b8bw21fVwKcrjodfBiCjY5k6HL/mxtNv4q2CceBJsleqS+eUU
O0CwgQBoAQiUZbMCpESBAY4o2mgaEG2edwXRomjweym2ysJPsqaIo/Q46bf3q0hk1Ejf25Pb
yS2dKOIStrDGoVmU97P90XoUjtlUMYctm8ltMIIg2a/MViwlTM+nK+gGj365DXud9Ybz/WUg
cFMPhFiyoLhlpGb2cDNQNbod5ONWRD9OzGLlmbsjP5yyq8rtGLRQiT3xKFp0mh8W3RV5pKFy
qNrzcTeBK3qBCSOQcoh4c5ATXWimbljYcWC04sWv1y/6gOIhROllBYFFtUujDycWla7toJ5A
iASLjn6C5snfS67jW7EHw8RD63Uk7m/lM/CLECyCaddRks19n+6VZLxZLPt9MGVm0CkTN911
8+5cW+3YbO92STCcrpZx3pruF5KtqCoTGru4Ncey/sAlsx2XDPL8PtDcUaFOB+2W9RgzM9Wr
jaq2R5mssYcprfdDuuKW7rEVdMX4MR0Oh8c92A/6VXt1wDzSkM3dkCm3/eSYcTtjEXsRYxid
QXJjDLwcRj+dsJt2/6mAh+J8EJ5FPv83s/Szkndb/wu4v4HYD7M0uRxVE74zaLdlnj4+pjHU
53LmL9ldJJlrc7ZIk+Vu2FLp5EBHq0jj8z1B7deuzGrYmlkq8DDmV8akTh7dnrD0+uoiMrbk
qn80QBzRknCUh/PHNeyi2DXF0Qi3Re/nnYI5DExjVrRBQacKJpLViEuMlbuixq3qyAz1Ipaq
DqlLO6Xjz3lyytoMp5Gbbt07lGsi0AKxs51O9SSh1+WmWvDMaYLHXkM30LuyeT0cPT2dx7CR
fmNw+nQesd7TceLT01Pwo/SZZegL7d/JNaf803kiuSF/ngFOrxtFI00bGH9i/wKmXMYbThQA
AA==
_ATEOF


$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:57: rm -f test.db"
echo t_rosterify_mt_ignore.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f test.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f test.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:59: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o ignore-1.db.dump.gz ignore-1.db.dump.gz.b64
else
  \$UNB64_COMMAND <ignore-1.db.dump.gz.b64 >ignore-1.db.dump.gz
fi
"
echo t_rosterify_mt_ignore.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o ignore-1.db.dump.gz ignore-1.db.dump.gz.b64
else
  $UNB64_COMMAND <ignore-1.db.dump.gz.b64 >ignore-1.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o ignore-1.db.dump.gz ignore-1.db.dump.gz.b64
else
  $UNB64_COMMAND <ignore-1.db.dump.gz.b64 >ignore-1.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:59: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"ignore-1.db.dump.gz\" != \"ignore-1.db.dump.gz\"; then
    mv ignore-1.db.dump.gz ignore-1.db.dump.gz
  fi
  gunzip ignore-1.db.dump.gz
else
  \$UNGZ_COMMAND <ignore-1.db.dump.gz >ignore-1.db.dump
fi
"
echo t_rosterify_mt_ignore.at:59 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "ignore-1.db.dump.gz" != "ignore-1.db.dump.gz"; then
    mv ignore-1.db.dump.gz ignore-1.db.dump.gz
  fi
  gunzip ignore-1.db.dump.gz
else
  $UNGZ_COMMAND <ignore-1.db.dump.gz >ignore-1.db.dump
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "ignore-1.db.dump.gz" != "ignore-1.db.dump.gz"; then
    mv ignore-1.db.dump.gz ignore-1.db.dump.gz
  fi
  gunzip ignore-1.db.dump.gz
else
  $UNGZ_COMMAND <ignore-1.db.dump.gz >ignore-1.db.dump
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:59: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:60: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db load < ignore-1.db.dump"
echo t_rosterify_mt_ignore.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < ignore-1.db.dump" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < ignore-1.db.dump ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < ignore-1.db.dump ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:61: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db migrate"
echo t_rosterify_mt_ignore.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:62: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db rosterify"
echo t_rosterify_mt_ignore.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:64: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net co -b testbranch codir-1"
echo t_rosterify_mt_ignore.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co -b testbranch codir-1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co -b testbranch codir-1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co -b testbranch codir-1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:64: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:65: test -f codir-1/.mtn-ignore"
echo t_rosterify_mt_ignore.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f codir-1/.mtn-ignore ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f codir-1/.mtn-ignore ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:66: cmp foo codir-1/.mtn-ignore"
echo t_rosterify_mt_ignore.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp foo codir-1/.mtn-ignore ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp foo codir-1/.mtn-ignore ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:66: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:67: test -f codir-1/.mt-ignore"
echo t_rosterify_mt_ignore.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f codir-1/.mt-ignore ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f codir-1/.mt-ignore ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:67: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# the second db has a single rev, containing a file ".mt-ignore" with
# contents "foo", and a file ".mtn-ignore" with contents "bar".
# rosterify should leave them both alone.

cat >ignore-2.db.dump.gz.b64 <<'_ATEOF'
H4sIAHYsKkQCA+1Y15LaWhZ9bn2Fyi+2i7ZRDvdWV10lQAQRROypqa4j6SgACiiB+Po5Ajcd
oD32zK2al8HVbSHOjmuvrUXLWls3cG2p9GemPtf+xJSJJk01fCrJfQ23UhDZ/hNMYtvPsLsv
2J0PMh+P4hyPiu0WL6JgV8B7/Pn17Rt+OhC7eApDEERB5OFuALdOhmcwASnIoYNbFf7pj0/Y
3dn7R96Qr3UcRBm+D3IfuSuDLIijJxumefa9BNsCYnenxF4cvHshDyiCE4e4Dw/fYGTHDooe
ONjd13d1OtZTCdIMe7b8crlC1qiMS4j7i+fMjhNYFwqSZBvYIEfJnd7iyNPFPAIhfG98MkeH
8A2sLgdPBV2d/HHwXO3z0XObvpwzuz+F+Hr58H1lbrCFTw7c5qDG7w67C5xbxeRpjJB6xq42
wu04ymGUIzMLZO9Se4tNfTz7jhzH6et43+tOny7fGNeoOIHr4nlcx0ChCzvH7SJNUTTcTRFc
dUDs7kedgXN/uvH1GrZT4NNYouBJGoQgrequ3v9KVQ54ldhzI+w4TFKYZRAFfR6YZ5MzurWX
Uya6YWqTKa4b0+E5EXwu9Wea+eWzSzqUQ7kixUBR4IAtcK7j8hbN2SJj2Y5LUxaENsl+vv/c
YTJd+vFqEmX/2LAVqedvBxGj1fewzz+NBCmGgg5tua6N/FI8afGuBVyagQ5POYQgsjRvMZR7
FSnv9Ye6Ig3DY+yNXyK96W4IosCFWX6m3E/Z/3u8vx7BW4x/Dv88WZd0Xk3XbXqdPMUJQMnV
M1DnYvtxBqM6gyKDKXZ3m26vDa1tbGF3aJgSEKS3iPkq1aSw0Ap4QofPaWWBF4G8SN9HQFYT
U2qaHYnEX86gpn36R13JX4HzB0rsn58us1/fvcdrBpwSvsd/5HP/Yn6DFu869UyQm9W+4whA
sOY+RLOP+oYGDa0+cPF3axNc9QKiX/AFrZ+Ad70a/t7tcBmgDzbEf9KA66Xxq3vjxcc7Rl/S
vLBaFEWeoFnSJkiasQXIuqQLScCRBCMSLCc4FmQYkbfes/q47Jv7VBnLUmvfp6JKms1Yeh7B
YsVwdmPal7tyqTZ6TJ/r9R87nm+sbHdVTsKpucQ624G48XplkK6KqkEyy6bbaSyP8wQocUtx
1yalGmuLneRGbyweW8vB3N1vBb7Z8KTtfsUGYF+n8PCAXe+RV+z4e5fINZ5nL+g94gxqfYCs
0yvuo48/ghGx80e6eB0vzK7QelXMBS8HCozF8qzDQoanWIYWaWgBRnRsiH4YxxIF6DCUg/CK
1tlfSWzFh+9oYtD7gd52BhLRVsxd29QtWh1rsjSeSRLT7kuqIvv7nuyNFZYp5+s03a3iqTua
eouQ6yZFv7EZahPboIamjcnZYsfZFrMI6Whbhfv5rtut9vUtt/Jmq324q4JJf3SYxJnbbxcU
JUi+dgQDpmtJHTLxPF7Zl+XcwdzOZGlIS23gDQXRk9ebDbQP/YCZNaccr6b99WYykoKt4i36
j0YprOCwLS6lEfQWVcr7hiTudVkbPzxcjcFFwSHRh8Y9rU7DgNpcE/tqT96QfuetYfvB9paE
+dDgx6I4B7rHT/Zfr3C9yu6CLkLJogTa4nmBIkiLgAJHciLD0DxPEgJNOYASXZGBDA0/rvl/
8wh924j/PyzhT3A/IfQi4RyLQoKNdJCiQvqJtklAQdHiXJKkbNeBBCs4JO3SvzMc6OjpCw+6
cNrzo9PuVqsFuwb11ry1GkpWl8etZntie8MtWUzymTpebGa9FUvIouxzajNllcnhsdOsgvk0
T0OxVD0/bLnK7OAAKB4ZZ0u7EibOKa7oS8tq6u+O81YJ5lMWkrNosljM9HzXjtlBq19WQ92X
lbky1BiqVPTYRHwpDotqqqmK0aq6coBJ4zk5KgntYJZVgw6jbbgIO3lc6HT2cCVUP2isIAoi
T7q2CAQBiBZBAZdF/2iKpjhRcKDIUy4AgP29xqJ9Xv83WEt7IyD2g4qohvPx3ljHxGAak8b4
dovDgVyFromedBXRBdxOBh1voTb2iivMmrFFBA1VC5IZqbcGHcvgeFNsLZpH2kk1jhELsd9t
pnqb5RMM+oORyT0OrKMau2JbDKic6K0FxVx1VENixtNtYeqDuaKWDmDsdbPbVTkbBF0b9H2w
NuXQ3opSqavY/NjiyGGZbStgkILZm868OFBb7QWY/XKLGaHuLiFSFGMRNMmRNosEBXAtNK8O
K/DAcgjecqnfazEocj9Oa5swOY47crkKRaYfGqX1QXP11X6eeO2embZMthseS2+oO+ORIgtL
Yf9YJIB1Ko+QNpS/MrtjmYOaVB3U6TDY9gB5KKWVOlUiUZtjsh1rI05bzKTNQurIC3I2HrHH
UjCUKbXbieIaWpQo9E3rMKCm03Q5n8xHy2bEgGaSdziGWYCOWcijJbZ0WGOQEIK773rHY0vp
7SJtZcmdxWLzy821HYK2GE4QHE5EisxhSNIWSZZEc0vzHMcSkCMIxvrN5to+iDy4jT10/Yh4
fKufi27CFNvQINF3SWGqMlLTWx0a/pTZrRzXac8eDTpusoUfBuuC2Yy2bDtemCTBiwRUBoKE
1Ojx0PJtCbN3riMMk/S4g2ywUdPhktnsjRKKajXixfaa3aiE3lQlRTjq+apRaoQ4Krjxbt3y
GpQu5/vK5rIxl2DKuJRbHUXYt5vsoNR6Q2/D8JU/27TGD9iHz8Kfy/F63X/J4SE/PwjPJl//
G+H97OTD1f8C7m8g9kZ404tBRaXqQJZbYpPpbZZILMs7scxmK51CW3KjZS3bJkq2QYS82eoP
mz5tjNg85FjMaHTSGILZLFcXIdgZh0n6GEw0ipoUhjnN3N1UDpRw8ZhEbd+BsHRCar2jI5ay
m+Ox4Gs7ftzfiQaLDRHH4UHgoybvNwvTbQDPdUli2xCDxoLYJSvOf1SlttzV5CEBbVA+Ktoq
Io2Fsuv6dtdez/MG2Uz7WEcaKJuKCMRlu73SduNNNgtme9UcTDeWEusZcaAPw0Qvuqc/HDy8
gVo3VG15Laaens6ybWjcEFpfzpLsIx8n/j09BW+tz6xEX//+nV2tCp7OCuaG/VkznD6uHQ0H
A336J/YvDy0skRUVAAA=
_ATEOF


$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:119: rm -f test.db"
echo t_rosterify_mt_ignore.at:119 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f test.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f test.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:119: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:121: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o ignore-2.db.dump.gz ignore-2.db.dump.gz.b64
else
  \$UNB64_COMMAND <ignore-2.db.dump.gz.b64 >ignore-2.db.dump.gz
fi
"
echo t_rosterify_mt_ignore.at:121 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o ignore-2.db.dump.gz ignore-2.db.dump.gz.b64
else
  $UNB64_COMMAND <ignore-2.db.dump.gz.b64 >ignore-2.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o ignore-2.db.dump.gz ignore-2.db.dump.gz.b64
else
  $UNB64_COMMAND <ignore-2.db.dump.gz.b64 >ignore-2.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:121: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:121: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"ignore-2.db.dump.gz\" != \"ignore-2.db.dump.gz\"; then
    mv ignore-2.db.dump.gz ignore-2.db.dump.gz
  fi
  gunzip ignore-2.db.dump.gz
else
  \$UNGZ_COMMAND <ignore-2.db.dump.gz >ignore-2.db.dump
fi
"
echo t_rosterify_mt_ignore.at:121 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "ignore-2.db.dump.gz" != "ignore-2.db.dump.gz"; then
    mv ignore-2.db.dump.gz ignore-2.db.dump.gz
  fi
  gunzip ignore-2.db.dump.gz
else
  $UNGZ_COMMAND <ignore-2.db.dump.gz >ignore-2.db.dump
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "ignore-2.db.dump.gz" != "ignore-2.db.dump.gz"; then
    mv ignore-2.db.dump.gz ignore-2.db.dump.gz
  fi
  gunzip ignore-2.db.dump.gz
else
  $UNGZ_COMMAND <ignore-2.db.dump.gz >ignore-2.db.dump
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:121: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:122: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db load < ignore-2.db.dump"
echo t_rosterify_mt_ignore.at:122 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < ignore-2.db.dump" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < ignore-2.db.dump ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < ignore-2.db.dump ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:122: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:123: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db migrate"
echo t_rosterify_mt_ignore.at:123 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:123: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:124: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db rosterify"
echo t_rosterify_mt_ignore.at:124 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:124: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:126: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net co -b testbranch codir-2"
echo t_rosterify_mt_ignore.at:126 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co -b testbranch codir-2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co -b testbranch codir-2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co -b testbranch codir-2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:126: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:127: test -f codir-2/.mtn-ignore"
echo t_rosterify_mt_ignore.at:127 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f codir-2/.mtn-ignore ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f codir-2/.mtn-ignore ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:127: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:128: cmp bar codir-2/.mtn-ignore"
echo t_rosterify_mt_ignore.at:128 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp bar codir-2/.mtn-ignore ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp bar codir-2/.mtn-ignore ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:128: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:129: test -f codir-2/.mt-ignore"
echo t_rosterify_mt_ignore.at:129 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f codir-2/.mt-ignore ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f codir-2/.mt-ignore ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:129: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_mt_ignore.at:130: cmp foo codir-2/.mt-ignore"
echo t_rosterify_mt_ignore.at:130 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp foo codir-2/.mt-ignore ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp foo codir-2/.mt-ignore ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_mt_ignore.at:130: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  325 ) # 325. t_revert_file_blocked_by_dir.at:1: revert file blocked by unversioned directory
    at_setup_line='t_revert_file_blocked_by_dir.at:1'
    at_desc='revert file blocked by unversioned directory'
    $at_quiet $ECHO_N "325: revert file blocked by unversioned directory $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "325. t_revert_file_blocked_by_dir.at:1: testing ..."
      $at_traceon

MONOTONE_SETUP

# this test is a bug report
#
# reverting a file that has been replaced by a (non-versioned) directory
# should do something sensible. I'm not sure what that is though.
# this is almost a working copy conflict but it seems silly that revert
# would ever encounter a conflict.




cat >foo <<'_ATEOF'
foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_revert_file_blocked_by_dir.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_revert_file_blocked_by_dir.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_file_blocked_by_dir.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_revert_file_blocked_by_dir.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_revert_file_blocked_by_dir.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_file_blocked_by_dir.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_revert_file_blocked_by_dir.at:18: MONOTONE --execute mv foo bar "
echo t_revert_file_blocked_by_dir.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; MONOTONE --execute mv foo bar  ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; MONOTONE --execute mv foo bar  ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_file_blocked_by_dir.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# create directory blocking revert of foo
$at_traceoff
echo "$at_srcdir/t_revert_file_blocked_by_dir.at:21: mkdir foo"
echo t_revert_file_blocked_by_dir.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_file_blocked_by_dir.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_revert_file_blocked_by_dir.at:23: MONOTONE revert . "
echo t_revert_file_blocked_by_dir.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; MONOTONE revert .  ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; MONOTONE revert .  ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_revert_file_blocked_by_dir.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  326 ) # 326. t_pidfile.at:1: pid file cleanup
    at_setup_line='t_pidfile.at:1'
    at_desc='pid file cleanup'
    $at_quiet $ECHO_N "326: pid file cleanup                             $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "326. t_pidfile.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_pidfile.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_pidfile.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pidfile.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_pidfile.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pidfile.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_pidfile.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pidfile.at:2: rm test_keys"
echo t_pidfile.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_pidfile.at:3: cp test.db test2.db"
echo t_pidfile.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pidfile.at:3: cp -r keys/ keys2"
echo t_pidfile.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pidfile.at:3: cp test.db test3.db"
echo t_pidfile.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pidfile.at:3: cp -r keys/ keys3"
echo t_pidfile.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT





# This test currently fails because monotone does not clean up it's pid file.
# This happens because when the monotone server is terminated with a signal it
# calls its signal handler which then performs a siglongjmp().  The pid file
# is deleted in the destructor for a pid_file object, and because of the
# siglongjmp() the destructor is never called.
#
# Severaly possible solutions exist:
# - Clean up the pid file manually after handling the signal.
# - Have the signal handler set a flag (global var or singleton) that is
#   checked periodically that triggers and exception if set instead of using
#   siglongjmp() (my favorite).
# - Something I have not considered yet.
#
# -- Matthew Nicholson <matt@matt-land.com>



# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve "{}*" &
sleep 4


$at_traceoff
echo "$at_srcdir/t_pidfile.at:24: test -f monotone_at.pid"
echo t_pidfile.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f monotone_at.pid ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f monotone_at.pid ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pidfile.at:25: kill \`cat monotone_at.pid\`"
echo t_pidfile.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; kill `cat monotone_at.pid` ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; kill `cat monotone_at.pid` ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pidfile.at:26: test -f monotone_at.pid"
echo t_pidfile.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f monotone_at.pid ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f monotone_at.pid ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_pidfile.at:26: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  327 ) # 327. t_rosterify_empty_manifest.at:1: rosterify on a db with an empty manifest
    at_setup_line='t_rosterify_empty_manifest.at:1'
    at_desc='rosterify on a db with an empty manifest'
    $at_quiet $ECHO_N "327: rosterify on a db with an empty manifest     $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "327. t_rosterify_empty_manifest.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_rosterify_empty_manifest.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_rosterify_empty_manifest.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_rosterify_empty_manifest.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:2: rm test_keys"
echo t_rosterify_empty_manifest.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




if test -n "`command -v mimencode`" 2>/dev/null; then
  UNB64_COMMAND="mimencode -u"
elif test -n "`command -v recode`" 2>/dev/null; then
  UNB64_COMMAND="recode /Base64"
elif perl -MMIME::Base64 -e 1 2>/dev/null; then
  cat >unbase64.pl <<'_ATEOF'
print decode_base64($_)
_ATEOF

  UNB64_COMMAND="perl -MMIME::Base64 -n unbase64.pl"
elif python -c 'import sys;sys.exit(not hasattr("", "decode"))' 2>/dev/null; then
  cat >unbase64.py <<'_ATEOF'
import sys;sys.stdout.write(sys.stdin.read().decode('base64'))
_ATEOF

  UNB64_COMMAND="python unbase64.py"
else
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  exit 77
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:3: echo \$UNB64_COMMAND"
echo t_rosterify_empty_manifest.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNB64_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNB64_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



if test -n "`command -v gunzip`" 2>/dev/null; then
  # This is lame!  We should XFAIL the test so the user knows that
  # they're not, you know, actually testing the software.  But
  # Autotest runs XFAIL conditions in a completely different shell, so
  # we can't without duplicating the whole test here.
  UNGZ_COMMAND="gunzip -c"
fi
# Poor man's logging:
$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:3: echo \$UNGZ_COMMAND"
echo t_rosterify_empty_manifest.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $UNGZ_COMMAND" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $UNGZ_COMMAND ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# This is a db containing two revisions. The first adds a single file (afile).
# The second revision deletes that file, leaving an empty manifest.

cat >test.db.dump.gz.b64 <<'_ATEOF'
H4sICNdlMkQCA3Rlc3QuZGIuZHVtcADtWFmP4ki2fk5+BeqXqhbZRXi3e9TSGDDGYGOMbbarq1TY
Dm94AS+A+fU3gMqsrFzqZvaMNC9jKVMmHGf7zjlfLD1JVqZtadVXbVNZSP9o9eeSaEltS+ypUtsp
YOaGD2iXu2HZuvvaugthGbazvGpndZK06yza1+i+/fj88Uf7OiH32wVKYZRFWdD2I5R4ZbtEO1jA
Cnltp2n/9udvrbub9ve0YV1xHmVl+xhVIVZ3iMoozx5cVFTltwNMatS6uzr2Q8GLB2vAFrw8bYfo
9AfK3NzD1iOvdff7izg95+EAi7L1KPn16Q1L4zCeTNw/aS7dfIcugcLdLolcWGHnrj/bWNOTeAZT
9FL4Ko4ntbeoeZp4DejVzO8Tb9E+Tr3B9PXm2f3VxO9PH19G5kcJevBQUsFL/u5ad5H3VjBVkeNM
PebuItR286xCWYXFHFi+cO3n3Fyml9+w4rx4bu/bBenr60/Cl6x4ke+3q/xiA5uu3art1kWBrbX9
AqfrYrB19z3OyLu/Dvz+Om1Xw9eyxMZ3RZTCormgev+RqDz4zLFHINw83RWoLBE2+lgwjyK37F60
XD1RpqY0t9rK1NJvjrQXompL5tcvAFAeoBngsz6HWM9hKQYC2iMpkmYclkcERbEMzVJf7r+M6FIR
vz/dpqwnNqHSR0U8DosDf1xfhv9qfXkZdwqzyEdldWuGX/bl5zrydXG81YuP5h9z/uTOs7y/XfhX
TfkOYucu2bn44oZ5ibKLB3WJitbd243wXNBJcqd1h9O8g1HxVss8c3VXO7g5H/Dkm1tlFGSwqouX
FrDU3BS75kgk2j/mYNB++59LJP+MvD+xY//721NVXkbv25favDp83/7uz/0P8TcK9gVSj6X7ZrQv
qhfitFYhwlWJccPFhkkJPul7q0dfYYHwP/QjW79I3uum/Zf79nm3vDD5o28ojxZ8nndp4NGOBymW
ZmlecAkKkizD+ZwgIMJnBdw3+KMAKYQYxDq0AzyKZBjHR77AsIDgBQB9jwccEF622HHVOxqUqImB
VA4ESxPV6dG0i41ykoKhuetwQuF07WSzjc+l7MzWCR3F2VYfKF21tTC6oiuphDCrF43YMQeHOTcN
ri36ix59j5/+TpJfU9ZHWeuHjndy8SMLfxtaTXz2vIHIs17891LWa2RvWvBv3KEYhAhLF6+YBn9+
D1DMBd/dbV/speUr3J4F86N+PRZwHs+RtA8IhmVpHwIXAkRAkid9xAHeJ1mOdjByKayqf9au+w2W
2TdY4xFNkT1NBHLf3Mum4lADQ+qJhi2KtKyKg34vPE56gTFYDHa+Ro0BXU8iZU3onfgQ9X3ttNlL
ZjTGRdxaTW1qEOqoIYORu0t3sbipzpRHmCTw+kD3ojlkN7m0yOlzmnQ30iiSg4PVCblOj1qu6r0u
re2BekIt1BXPqtWVWKP2R5RSrNyxPbGGp1Xt2WHsaGwA1CwdNJ3ihJL5nJZSJnXqcKqS4+h8CjeF
ofQk46+/XhXC014Ob/9w6RXNtRww0BciecXLb2wCbyzlhlHy1mbmXYHvxHQzdN++yr9mp1fePeUX
ZwkxFMtyvOADCD3MSh7L+wQDWFfgSJ51IEETECcefPmw0g9rvP/C8izpAAr6PnQ8gnIdykMc3lH4
Dk8zFOl4iHZJgSfeB/w/s1/4OQv/3RmgXxTdNUNPxcFDHngMJeCqYDnCoRgKMBRiPAR4F/Oy4GNi
oR0BfaYy77/czl2XVVRenD153KyXTAyvq9hbzKRLBp9qmjWuVmeqWU8X8nAYB9y8s5yPN9qcmQU2
ayZFVzBmpL+OVpE4OfoT+Zidk72QiGPOa+Jhd5C0+Iazdidz7QXkhgUBlU0ELiPXY3m6yqNIdMNg
TNmNEG8WoqvMHIIVDKjBYLc28hhqM3+kZhNxsEhba5O1xKgrO/VZNbSp2AEjId5t1Rwpt3XnA9Di
dYzAbQR4HrOzwPqeQCOCdR3AUywedHgGr4KApD4HLV5QLsnQYvE4jcBx2sd/Q+OkxXkztfKT/i7I
2Wh7VFCz3JA9Zp1MCPMc44icrulW+nk0smO2q68iSZJ6fbwqbJdDWkfRzNOm02VqlkaEOprrz/ZO
y+wKvYQ58my0nm7I04Gpjam02U6OtbTm861lZmaKaC8BQ1HOTiQVsEQjQx1RW4Sk0pxp8h64xz7f
2hkhjuocqXbl9x2PU5UtAJ1pL6vED4MMWYf1PALi5RA/iKR4RBI86zM+ohiehC4nOBxBuJ8DGdZV
mBf4xVoO8ZrWmzhkWLvU/OBEIu9cxqQesSa1er2a1mo6JGbBe7Br2jgsLETEecyCk9WcddM52awR
HWjKHjQMH/Wd3i6mkuOAFpRtyTMDsWb8ckKlbM1Vi6SjdJOMyVpja1chbr/MeohkdCEivDQx7T3J
2cOZs2On6tF3GFVQZuE4mixA1K3KoaRUfOH3o1ElNdZcWwSyvGyF1nyYWUUYEJlITRZ6Zxya+aFf
er7xGdghpHieZH2Sc0nPpYBLCx6Ld9cUdHhMGJ7n84D5HOxuCLMAJXmA39dmL4XLU6IG+TvIyufQ
qB1gyWS86EZLllWnmyT0G1hvRJlK973UmkA9JbYcK9hM1YOLeMAeG1jIIoWMCViL0VE/ynWriktX
nBR16I06vik6i7WwmuS1TQhujAJOsU9FndOueCjAVOQkbn6mDZPRK2+8XyVzRzJ2ImisvtUiFb2Y
GIg9rg5MsVilZOirS3vWkJL7YWSR4LCswNKQdpB7OcTjQz3p8b5HcwTJ+wxFURg1h//Mav1pQpZG
cXdGiNVCcZOc6S7G6kzba4bm70nzuM27xlT3VvNlVwXRsgPrZbFAfbIONCWOt+MBcjM1T8ehQ7Z0
V5GVTmfvHOrgXPGK3czJhMg0Xuodu7rtrQhAHYdjW+uk0+S8ldVJJUXJYdbfEM6Wi2bVjO3RXk63
XE6eUxNptNUGbjpjtqucnE6HM2uIO++j0DKO5xM0T/K04wDWF3AJewxmYo/F6x2HMIwkPgf6zOeg
/TUhg+nx3VVPV1OV6yfN1s9zyhsurflJjlSdQBAoZdmbz4iO7K/raBasOmsuQoSVySWBuiRSQL+q
ps25pIaG27K9vbmZWhVnu+TQHmf7swYlIXEZ0faACaXAqro0osbm6RT7YBmQi/6Yni7VSRaPemlT
T4Lh0Z0s6RbfVciEyQ+OJANy1TiqK6j8yvA3zScIWYAkTZIcS/CIZngKehRDkwyNEAEYyHkER9Mc
536yfv+NhAxMaxeNleE0mwX9/OQI2SCZ9LmMY9U5GA5iNd0Zq52tFx1uy61PmzExjux4tgcrRXSa
w2Y90LZT8QBbweR0FOekXfTXmTzfrdmCgBIPFFCPDjpn4w1FJING3VpZ6LonhhvJjn88+oc+d1w2
qaxQrG/ItRW21L28pLtk1+UyBzqHAWsX0lSsSDuxPwy7TwCBQcAVGIYUBHyCZjmBgwI+TlOXW0HI
+xDzCICfg/05IbvponKoTaKM5vnG7B2c9MQo8mbnyPbkbaT7etIB56avnhf5YXmOJzLSiJAe7pSd
cLBYumFhrFrjJnaLQJrEIi2OOCdI17pw8p2MOh4kEKxUlm35HZLFttbmZnwwlU1qDoMQnA9uUhIW
7TsSORWRL+tapYszHu875iumznZk1am7nb1dHw7U2KOc+NjSedWghSF5ks0g6QHPtLbnYqeoS/mt
64SnU8UvL1gu+/avFTpVtxPNTeT3f+Uq5VHJu3v48u+c7X66SgHLqWHsB1qvNxTOyZAXrXm6Po+X
trHVYw3kk00OJ4LPwbHnz2m+Wx2S2ZLYnZtd1qrW2uC0D0JVD9YbwIhmL47AVt03Mx+emqiyw2Y6
MatZyJ2b1K3qsDtSu3h/YmqNxSSLctthdvEoTVt1fOrAmZ2TJAEhWTNk4rv5ypuQweFk6X3L6LCB
cRasbQ+Ks95EYwI95W1nW4nPrsR+jc8nav1nfFYYH3agiScJWGRmjM+isqat7LhYNJpMDpW0vxj2
uK6tUCuX2p+FQ6mdhQSS3KhF2vx+ay7hGOqToWXqk4VNMcAw+rlOD8tYjFnOWTCEL6TMiOS8Thma
YzeVRtJmOU+U/ainzo+joFrgYoykvj46sV06mEsr0g7X0mlVnELFHCan/mHLGIJGVMd6KxOEzToH
SC0HlDoDI9AbSc1e4ujbRdnz0lamA2n1+rbg4eF22aFP37hJ+Hq7yHhPx5WJHh6in6Vv/PQ1+n/l
LsfZh9vR+w3522H3+vmiSNc0xfpH6/8AJnD56FUcAAA=
_ATEOF


$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:67: rm -f test.db"
echo t_rosterify_empty_manifest.at:67 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f test.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f test.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:67: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:69: if test \"\$OSTYPE\" = \"msys\"; then
  mimencode -u -o test.db.dump.gz test.db.dump.gz.b64
else
  \$UNB64_COMMAND <test.db.dump.gz.b64 >test.db.dump.gz
fi
"
echo t_rosterify_empty_manifest.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  mimencode -u -o test.db.dump.gz test.db.dump.gz.b64
else
  $UNB64_COMMAND <test.db.dump.gz.b64 >test.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  mimencode -u -o test.db.dump.gz test.db.dump.gz.b64
else
  $UNB64_COMMAND <test.db.dump.gz.b64 >test.db.dump.gz
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:69: if test \"\$OSTYPE\" = \"msys\"; then
  if test \"test.db.dump.gz\" != \"test.db.dump.gz\"; then
    mv test.db.dump.gz test.db.dump.gz
  fi
  gunzip test.db.dump.gz
else
  \$UNGZ_COMMAND <test.db.dump.gz >test.db.dump
fi
"
echo t_rosterify_empty_manifest.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; if test "$OSTYPE" = "msys"; then
  if test "test.db.dump.gz" != "test.db.dump.gz"; then
    mv test.db.dump.gz test.db.dump.gz
  fi
  gunzip test.db.dump.gz
else
  $UNGZ_COMMAND <test.db.dump.gz >test.db.dump
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; if test "$OSTYPE" = "msys"; then
  if test "test.db.dump.gz" != "test.db.dump.gz"; then
    mv test.db.dump.gz test.db.dump.gz
  fi
  gunzip test.db.dump.gz
else
  $UNGZ_COMMAND <test.db.dump.gz >test.db.dump
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:70: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump"
echo t_rosterify_empty_manifest.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db load < test.db.dump ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:71: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db migrate"
echo t_rosterify_empty_manifest.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db migrate ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:73: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db rosterify"
echo t_rosterify_empty_manifest.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db rosterify ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:73: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >revision_good <<'_ATEOF'
format_version "1"

new_manifest [ec9ef3a345b0766c1e03c47c1e22b1fe174395e7]

old_revision [9a0e6637605966d7a125f7c8932bed02ee930207]

delete "afile"
_ATEOF


$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:83: cat revision_good"
echo t_rosterify_empty_manifest.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat revision_good ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat revision_good ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:83: mv stdout output1"
echo t_rosterify_empty_manifest.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:83:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_rosterify_empty_manifest.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:83: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select h:testbranch | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision -@-"
echo t_rosterify_empty_manifest.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select h:testbranch | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision -@-" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select h:testbranch | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision -@- ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select h:testbranch | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision -@- ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:83: mv stdout output2"
echo t_rosterify_empty_manifest.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:83:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_rosterify_empty_manifest.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:83: cmp output1 output2"
echo t_rosterify_empty_manifest.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >manifest_good <<'_ATEOF'
format_version "1"

dir ""
_ATEOF


$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:89: cat manifest_good"
echo t_rosterify_empty_manifest.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat manifest_good ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat manifest_good ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:89: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:89: mv stdout output1"
echo t_rosterify_empty_manifest.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:89: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:89:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_rosterify_empty_manifest.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:89: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:89: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select h:testbranch | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of -@-"
echo t_rosterify_empty_manifest.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select h:testbranch | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of -@-" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select h:testbranch | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of -@- ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select h:testbranch | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_manifest_of -@- ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:89: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:89: mv stdout output2"
echo t_rosterify_empty_manifest.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:89: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:89:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_rosterify_empty_manifest.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:89: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_rosterify_empty_manifest.at:89: cmp output1 output2"
echo t_rosterify_empty_manifest.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_rosterify_empty_manifest.at:89: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  328 ) # 328. t_netsync_no_include.at:1: "sync server --exclude foo"
    at_setup_line='t_netsync_no_include.at:1'
    at_desc='"sync server --exclude foo"'
    $at_quiet $ECHO_N "328: "sync server --exclude foo"                  $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "328. t_netsync_no_include.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_netsync_no_include.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_netsync_no_include.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_no_include.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_no_include.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_netsync_no_include.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_no_include.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_no_include.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_netsync_no_include.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_no_include.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_no_include.at:2: rm test_keys"
echo t_netsync_no_include.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_no_include.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_no_include.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net sync example.net --exclude foo"
echo t_netsync_no_include.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net sync example.net --exclude foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net sync example.net --exclude foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net sync example.net --exclude foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_netsync_no_include.at:4: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  329 ) # 329. t_pidfile_log_permissions.at:1: pid file and log handles open failures
    at_setup_line='t_pidfile_log_permissions.at:1'
    at_desc='pid file and log handles open failures'
    $at_quiet $ECHO_N "329: pid file and log handles open failures       $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "329. t_pidfile_log_permissions.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_pidfile_log_permissions.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_pidfile_log_permissions.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile_log_permissions.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pidfile_log_permissions.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_pidfile_log_permissions.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile_log_permissions.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pidfile_log_permissions.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_pidfile_log_permissions.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile_log_permissions.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pidfile_log_permissions.at:2: rm test_keys"
echo t_pidfile_log_permissions.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile_log_permissions.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# --log should fail if it can't open the file.
$at_traceoff
echo "$at_srcdir/t_pidfile_log_permissions.at:5: touch inaccessible.log"
echo t_pidfile_log_permissions.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; touch inaccessible.log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; touch inaccessible.log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile_log_permissions.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pidfile_log_permissions.at:6: chmod 000 inaccessible.log"
echo t_pidfile_log_permissions.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; chmod 000 inaccessible.log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; chmod 000 inaccessible.log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile_log_permissions.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pidfile_log_permissions.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --log=inaccessible.log status"
echo t_pidfile_log_permissions.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --log=inaccessible.log status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --log=inaccessible.log status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --log=inaccessible.log status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_pidfile_log_permissions.at:7: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# and it should fail if the specified file is read only.
$at_traceoff
echo "$at_srcdir/t_pidfile_log_permissions.at:10: touch ro.log"
echo t_pidfile_log_permissions.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; touch ro.log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; touch ro.log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile_log_permissions.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pidfile_log_permissions.at:11: chmod 400 ro.log"
echo t_pidfile_log_permissions.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; chmod 400 ro.log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; chmod 400 ro.log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile_log_permissions.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pidfile_log_permissions.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --log=ro.log status"
echo t_pidfile_log_permissions.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --log=ro.log status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --log=ro.log status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --log=ro.log status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_pidfile_log_permissions.at:12: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_pidfile_log_permissions.at:14: mkdir noaccess"
echo t_pidfile_log_permissions.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir noaccess ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir noaccess ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile_log_permissions.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

# skip part of the test on win32 for now as the permission restrictions
# don't map to the NT permissions we need.
if test "$OSTYPE" != "msys"; then
  # it should also fail if a parent directory of the file is not accessible.
  $at_traceoff
echo "$at_srcdir/t_pidfile_log_permissions.at:19: chmod 100 noaccess"
echo t_pidfile_log_permissions.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; chmod 100 noaccess ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; chmod 100 noaccess ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile_log_permissions.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

  $at_traceoff
echo "$at_srcdir/t_pidfile_log_permissions.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --log=noaccess/my.log status"
echo t_pidfile_log_permissions.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --log=noaccess/my.log status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --log=noaccess/my.log status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --log=noaccess/my.log status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_pidfile_log_permissions.at:20: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_pidfile_log_permissions.at:22: cp test.db test2.db"
echo t_pidfile_log_permissions.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile_log_permissions.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pidfile_log_permissions.at:22: cp -r keys/ keys2"
echo t_pidfile_log_permissions.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile_log_permissions.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pidfile_log_permissions.at:22: cp test.db test3.db"
echo t_pidfile_log_permissions.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile_log_permissions.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pidfile_log_permissions.at:22: cp -r keys/ keys3"
echo t_pidfile_log_permissions.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile_log_permissions.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT



  # --pid-file checks that the file doesn't exist.  check that we fail if we
  # can't create the specified file.
  $at_traceoff
echo "$at_srcdir/t_pidfile_log_permissions.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net serve --pid-file=noaccess/my.pid --bind=127.0.0.1:\$_PORT testbranch"
echo t_pidfile_log_permissions.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net serve --pid-file=noaccess/my.pid --bind=127.0.0.1:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net serve --pid-file=noaccess/my.pid --bind=127.0.0.1:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net serve --pid-file=noaccess/my.pid --bind=127.0.0.1:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_pidfile_log_permissions.at:26: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


  # no need to kill the server--if the test succeeded the server must have
  # failed to start.
fi

$at_traceoff
echo "$at_srcdir/t_pidfile_log_permissions.at:32: chmod 600 inaccessible.log ro.log noaccess"
echo t_pidfile_log_permissions.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; chmod 600 inaccessible.log ro.log noaccess ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; chmod 600 inaccessible.log ro.log noaccess ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile_log_permissions.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pidfile_log_permissions.at:33: rm -f inaccessible.log ro.log"
echo t_pidfile_log_permissions.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -f inaccessible.log ro.log ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -f inaccessible.log ro.log ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile_log_permissions.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_pidfile_log_permissions.at:34: rmdir noaccess"
echo t_pidfile_log_permissions.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rmdir noaccess ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rmdir noaccess ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_pidfile_log_permissions.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  330 ) # 330. t_executable_umask.at:1: mtn:execute attr respects umask
    at_setup_line='t_executable_umask.at:1'
    at_desc='mtn:execute attr respects umask'
    $at_quiet $ECHO_N "330: mtn:execute attr respects umask              $ECHO_C"
    at_xfail=yes
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "330. t_executable_umask.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_executable_umask.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_executable_umask.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_executable_umask.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_executable_umask.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_executable_umask.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_executable_umask.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_executable_umask.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_executable_umask.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_executable_umask.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_executable_umask.at:2: rm test_keys"
echo t_executable_umask.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_executable_umask.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




if test "$OSTYPE" = "msys"; then
  echo 77 > $at_status_file
  exit 77
fi


# I don't know why this fails!  When I set umask 077 and check out
# this tree by hand, it works fine; when I run this test, though, then
# for some reason the foo file is checked out with permission 600!



cat >foo <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_executable_umask.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_executable_umask.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_executable_umask.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >bar <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_executable_umask.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add bar"
echo t_executable_umask.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_executable_umask.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_executable_umask.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net attr set foo mtn:execute true"
echo t_executable_umask.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set foo mtn:execute true" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set foo mtn:execute true ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net attr set foo mtn:execute true ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_executable_umask.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_executable_umask.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_executable_umask.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_executable_umask.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


R=`cat _MTN/revision`

umask 077

# log
$at_traceoff
echo "$at_srcdir/t_executable_umask.at:22: umask"
echo t_executable_umask.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; umask ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; umask ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_executable_umask.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_executable_umask.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net co -r\$R 077-co"
echo t_executable_umask.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co -r$R 077-co" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co -r$R 077-co ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co -r$R 077-co ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_executable_umask.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_executable_umask.at:25: stat -c '%a' 077-co/foo"
echo t_executable_umask.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; stat -c '%a' 077-co/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; stat -c '%a' 077-co/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo >>"$at_stdout"; echo "700
" | $at_diff - "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_executable_umask.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_executable_umask.at:27: stat -c '%a' 077-co/bar"
echo t_executable_umask.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; stat -c '%a' 077-co/bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; stat -c '%a' 077-co/bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo >>"$at_stdout"; echo "600
" | $at_diff - "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_executable_umask.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


umask 577

# log
$at_traceoff
echo "$at_srcdir/t_executable_umask.at:32: umask"
echo t_executable_umask.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; umask ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; umask ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_executable_umask.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_executable_umask.at:33: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net co -r\$R 577-co"
echo t_executable_umask.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co -r$R 577-co" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co -r$R 577-co ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net co -r$R 577-co ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_executable_umask.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_executable_umask.at:35: stat -c '%a' 577-co/foo"
echo t_executable_umask.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; stat -c '%a' 577-co/foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; stat -c '%a' 577-co/foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo >>"$at_stdout"; echo "200
" | $at_diff - "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_executable_umask.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_executable_umask.at:37: stat -c '%a' 577-co/bar"
echo t_executable_umask.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; stat -c '%a' 577-co/bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; stat -c '%a' 577-co/bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo >>"$at_stdout"; echo "200
" | $at_diff - "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_executable_umask.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  331 ) # 331. t_setup_workspace_in_workspace.at:1: setup in subdirectory
    at_setup_line='t_setup_workspace_in_workspace.at:1'
    at_desc='setup in subdirectory'
    $at_quiet $ECHO_N "331: setup in subdirectory                        $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "331. t_setup_workspace_in_workspace.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_setup_workspace_in_workspace.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_setup_workspace_in_workspace.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_workspace_in_workspace.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_workspace_in_workspace.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_setup_workspace_in_workspace.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_workspace_in_workspace.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_workspace_in_workspace.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_setup_workspace_in_workspace.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_workspace_in_workspace.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_setup_workspace_in_workspace.at:2: rm test_keys"
echo t_setup_workspace_in_workspace.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_workspace_in_workspace.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# Set up a project
$at_traceoff
echo "$at_srcdir/t_setup_workspace_in_workspace.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch foo"
echo t_setup_workspace_in_workspace.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_setup_workspace_in_workspace.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Then set up another project in a subdirectory without giving a database
# or branch.  mtn SHOULD fail on this.
$at_traceoff
echo "$at_srcdir/t_setup_workspace_in_workspace.at:9: cd foo && \$_MTN_EXEC --norc --root=\$_ROOT_DIR setup bar"
echo t_setup_workspace_in_workspace.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "cd foo && $_MTN_EXEC --norc --root=$_ROOT_DIR setup bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cd foo && $_MTN_EXEC --norc --root=$_ROOT_DIR setup bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cd foo && $_MTN_EXEC --norc --root=$_ROOT_DIR setup bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_setup_workspace_in_workspace.at:9: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  332 ) # 332. t_help.at:1: test the help command
    at_setup_line='t_help.at:1'
    at_desc='test the help command'
    $at_quiet $ECHO_N "332: test the help command                        $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "332. t_help.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_help.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_help.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_help.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_help.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_help.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_help.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_help.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_help.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_help.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_help.at:2: rm test_keys"
echo t_help.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_help.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_help.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net help mv"
echo t_help.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net help mv" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net help mv ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net help mv ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_help.at:4: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_help.at:5: mv stdout out"
echo t_help.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout out ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout out ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_help.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_help.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --help mv"
echo t_help.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --help mv" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --help mv ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --help mv ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   2) ;;
   *) echo "$at_srcdir/t_help.at:6: exit code was $at_status, expected 2"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_help.at:7: cmp out stdout"
echo t_help.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp out stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp out stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_help.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  333 ) # 333. t_approve.at:1: test the approve command
    at_setup_line='t_approve.at:1'
    at_desc='test the approve command'
    $at_quiet $ECHO_N "333: test the approve command                     $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "333. t_approve.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_approve.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_approve.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_approve.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_approve.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_approve.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_approve.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_approve.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_approve.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_approve.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_approve.at:2: rm test_keys"
echo t_approve.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_approve.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >foo <<'_ATEOF'
bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_approve.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_approve.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_approve.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_approve.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_approve.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_approve.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_approve.at:7: (echo reviewer@test.net; echo reviewer@test.net) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net genkey reviewer@test.net"
echo t_approve.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo reviewer@test.net; echo reviewer@test.net) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey reviewer@test.net" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo reviewer@test.net; echo reviewer@test.net) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey reviewer@test.net ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo reviewer@test.net; echo reviewer@test.net) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey reviewer@test.net ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_approve.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_approve.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net approve -k reviewer@test.net \`cat _MTN/revision\`"
echo t_approve.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net approve -k reviewer@test.net `cat _MTN/revision` ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net approve -k reviewer@test.net `cat _MTN/revision` ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_approve.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_approve.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net ls certs \`cat _MTN/revision\`"
echo t_approve.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains a `...` command substitution)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs `cat _MTN/revision` ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net ls certs `cat _MTN/revision` ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_approve.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_approve.at:10: grep reviewer@test.net stdout"
echo t_approve.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep reviewer@test.net stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep reviewer@test.net stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_approve.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  334 ) # 334. t_checkout_heads.at:1: checkout fails with multiple heads
    at_setup_line='t_checkout_heads.at:1'
    at_desc='checkout fails with multiple heads'
    $at_quiet $ECHO_N "334: checkout fails with multiple heads           $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "334. t_checkout_heads.at:1: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_checkout_heads.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_checkout_heads.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_heads.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_heads.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_checkout_heads.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_heads.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_heads.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_checkout_heads.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_heads.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_heads.at:3: rm test_keys"
echo t_checkout_heads.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_heads.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_checkout_heads.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_checkout_heads.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_heads.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_checkout_heads.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_checkout_heads.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_heads.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV1=`cat _MTN/revision`


cat >file2 <<'_ATEOF'
bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_checkout_heads.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add file2"
echo t_checkout_heads.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add file2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_heads.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_checkout_heads.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_checkout_heads.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_heads.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV2=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_checkout_heads.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update -r \$REV1"
echo t_checkout_heads.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -r $REV1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -r $REV1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update -r $REV1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_heads.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


cat >otherfile <<'_ATEOF'
splork
_ATEOF

$at_traceoff
echo "$at_srcdir/t_checkout_heads.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add otherfile"
echo t_checkout_heads.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_heads.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_checkout_heads.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_checkout_heads.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_heads.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV3=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_checkout_heads.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout test_dir1"
echo t_checkout_heads.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout test_dir1" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout test_dir1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch checkout test_dir1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_checkout_heads.at:22: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_heads.at:23: grep \$REV2 stderr"
echo t_checkout_heads.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $REV2 stderr" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $REV2 stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $REV2 stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_heads.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_checkout_heads.at:24: grep \$REV3 stderr"
echo t_checkout_heads.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "grep $REV3 stderr" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep $REV3 stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep $REV3 stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_checkout_heads.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  335 ) # 335. t_ls_epochs.at:1: ls epochs
    at_setup_line='t_ls_epochs.at:1'
    at_desc='ls epochs'
    $at_quiet $ECHO_N "335: ls epochs                                    $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "335. t_ls_epochs.at:1: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_ls_epochs.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_ls_epochs.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_epochs.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_epochs.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_ls_epochs.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_epochs.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_epochs.at:3: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_ls_epochs.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_epochs.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_epochs.at:3: rm test_keys"
echo t_ls_epochs.at:3 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_epochs.at:3: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
version 0 data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_ls_epochs.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_ls_epochs.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_epochs.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_ls_epochs.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_ls_epochs.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_epochs.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile2 <<'_ATEOF'
other data
_ATEOF

$at_traceoff
echo "$at_srcdir/t_ls_epochs.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile2"
echo t_ls_epochs.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_epochs.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_ls_epochs.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah"
echo t_ls_epochs.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=otherbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_epochs.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_ls_epochs.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db set_epoch testbranch 12345"
echo t_ls_epochs.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch testbranch 12345" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch testbranch 12345 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch testbranch 12345 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_ls_epochs.at:13: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_epochs.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db set_epoch testbranch aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
echo t_ls_epochs.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch testbranch aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch testbranch aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch testbranch aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_epochs.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_epochs.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db set_epoch otherbranch bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
echo t_ls_epochs.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch otherbranch bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch otherbranch bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db set_epoch otherbranch bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_epochs.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_ls_epochs.at:17: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net list epochs"
echo t_ls_epochs.at:17 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_epochs.at:17: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_epochs.at:18: grep testbranch stdout"
echo t_ls_epochs.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testbranch stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testbranch stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_epochs.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_epochs.at:19: grep otherbranch stdout"
echo t_ls_epochs.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep otherbranch stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep otherbranch stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_epochs.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_epochs.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net list epochs testbranch"
echo t_ls_epochs.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net list epochs testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_epochs.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_epochs.at:21: grep testbranch stdout"
echo t_ls_epochs.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep testbranch stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep testbranch stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_ls_epochs.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_ls_epochs.at:22: grep otherbranch stdout"
echo t_ls_epochs.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep otherbranch stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep otherbranch stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_ls_epochs.at:22: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  336 ) # 336. t_hook_helpers.at:1: test some hook helper functions
    at_setup_line='t_hook_helpers.at:1'
    at_desc='test some hook helper functions'
    $at_quiet $ECHO_N "336: test some hook helper functions              $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "336. t_hook_helpers.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_hook_helpers.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_hook_helpers.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_hook_helpers.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_hook_helpers.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_hook_helpers.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_hook_helpers.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_hook_helpers.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_hook_helpers.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_hook_helpers.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_hook_helpers.at:2: rm test_keys"
echo t_hook_helpers.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_hook_helpers.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testhooks <<'_ATEOF'
function ignore_file (name)
	ok = true

	filename = write_to_temporary_file("foo")
	dat = read_contents_of_file(filename, "r")
	if dat ~= "foo" then ok = false end

	if globish_match("a*b", "abc") then ok = false end
	if not globish_match("a*b", "acb") then ok = false end
	if globish_match("a{b", "abc") ~= nil then ok = false end

	if ok then execute ("touch", "outfile") end

	ignore_file = function (name) return true end
	return true
end
_ATEOF


$at_traceoff
echo "$at_srcdir/t_hook_helpers.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile testhooks ls unknown"
echo t_hook_helpers.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile testhooks ls unknown" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile testhooks ls unknown ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile testhooks ls unknown ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_hook_helpers.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_hook_helpers.at:23: test -f outfile"
echo t_hook_helpers.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test -f outfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test -f outfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_hook_helpers.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  337 ) # 337. t_no_log_password.at:3: (imp) do not log the result of hook_get_passphrase
    at_setup_line='t_no_log_password.at:3'
    at_desc='(imp) do not log the result of hook_get_passphrase'
    $at_quiet $ECHO_N "337: (imp) do not log the result of hook_get_passphrase$ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "337. t_no_log_password.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_no_log_password.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_no_log_password.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_log_password.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_log_password.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_no_log_password.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_log_password.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_log_password.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_no_log_password.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_log_password.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_no_log_password.at:5: rm test_keys"
echo t_no_log_password.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_log_password.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >input.txt <<'_ATEOF'
version 0 of the file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_no_log_password.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add input.txt"
echo t_no_log_password.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_log_password.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >hook.lua <<'_ATEOF'
function get_passphrase(keyid)
   if keyid == "quux" then return "xyzzy" end
   return keyid
end
_ATEOF


$at_traceoff
echo "$at_srcdir/t_no_log_password.at:16: (echo xyzzypassphrasexyzzy; echo xyzzypassphrasexyzzy) | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net genkey quux"
echo t_no_log_password.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo xyzzypassphrasexyzzy; echo xyzzypassphrasexyzzy) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey quux" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo xyzzypassphrasexyzzy; echo xyzzypassphrasexyzzy) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey quux ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo xyzzypassphrasexyzzy; echo xyzzypassphrasexyzzy) | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net genkey quux ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_log_password.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_no_log_password.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --debug commit -m foo --rcfile hook.lua"
echo t_no_log_password.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --debug commit -m foo --rcfile hook.lua" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --debug commit -m foo --rcfile hook.lua ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch --debug commit -m foo --rcfile hook.lua ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_no_log_password.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_no_log_password.at:20: grep  >/dev/null xyzzypassphrasexyzzy stderr"
echo t_no_log_password.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep  >/dev/null xyzzypassphrasexyzzy stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep  >/dev/null xyzzypassphrasexyzzy stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_no_log_password.at:20: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  338 ) # 338. t_quiet.at:3: quiet turns off tickers but not warnings
    at_setup_line='t_quiet.at:3'
    at_desc='quiet turns off tickers but not warnings'
    $at_quiet $ECHO_N "338: quiet turns off tickers but not warnings     $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "338. t_quiet.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_quiet.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_quiet.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_quiet.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_quiet.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_quiet.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_quiet.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_quiet.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_quiet.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_quiet.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_quiet.at:5: rm test_keys"
echo t_quiet.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_quiet.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_quiet.at:6: cp test.db test2.db"
echo t_quiet.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_quiet.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_quiet.at:6: cp -r keys/ keys2"
echo t_quiet.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_quiet.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_quiet.at:6: cp test.db test3.db"
echo t_quiet.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_quiet.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_quiet.at:6: cp -r keys/ keys3"
echo t_quiet.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_quiet.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT




cat >input.txt <<'_ATEOF'
version 0 of the file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_quiet.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add input.txt"
echo t_quiet.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_quiet.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_quiet.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_quiet.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_quiet.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# check that tickers are quiet


# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4


$at_traceoff
echo "$at_srcdir/t_quiet.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --quiet localhost:\$_PORT testbranch"
echo t_quiet.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --quiet localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --quiet localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --quiet localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_quiet.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_quiet.at:16: grep -v ': warning: ' stderr"
echo t_quiet.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep -v ': warning: ' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep -v ': warning: ' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_quiet.at:16: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



# check that warnings aren't...
# (list keys with a pattern that doesn't match anything generates a warning)
$at_traceoff
echo "$at_srcdir/t_quiet.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --quiet list keys foo"
echo t_quiet.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --quiet list keys foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --quiet list keys foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --quiet list keys foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; tee stderr <"$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_quiet.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_quiet.at:23: grep ': warning: ' stderr"
echo t_quiet.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; grep ': warning: ' stderr ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; grep ': warning: ' stderr ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_quiet.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  339 ) # 339. t_reallyquiet.at:3: reallyquiet turns off tickers and warnings
    at_setup_line='t_reallyquiet.at:3'
    at_desc='reallyquiet turns off tickers and warnings'
    $at_quiet $ECHO_N "339: reallyquiet turns off tickers and warnings   $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "339. t_reallyquiet.at:3: testing ..."
      $at_traceon




# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_reallyquiet.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_reallyquiet.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_reallyquiet.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_reallyquiet.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_reallyquiet.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_reallyquiet.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_reallyquiet.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_reallyquiet.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_reallyquiet.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_reallyquiet.at:5: rm test_keys"
echo t_reallyquiet.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_reallyquiet.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_reallyquiet.at:6: cp test.db test2.db"
echo t_reallyquiet.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_reallyquiet.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_reallyquiet.at:6: cp -r keys/ keys2"
echo t_reallyquiet.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_reallyquiet.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_reallyquiet.at:6: cp test.db test3.db"
echo t_reallyquiet.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test3.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test3.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_reallyquiet.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_reallyquiet.at:6: cp -r keys/ keys3"
echo t_reallyquiet.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp -r keys/ keys3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_reallyquiet.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >netsync.lua <<'_ATEOF'

function get_netsync_read_permitted(pattern, identity)
	return true
end

function get_netsync_write_permitted(identity)
	return true
end
_ATEOF


foo () {

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

}
trap foo EXIT




cat >input.txt <<'_ATEOF'
version 0 of the file
_ATEOF

$at_traceoff
echo "$at_srcdir/t_reallyquiet.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add input.txt"
echo t_reallyquiet.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add input.txt ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_reallyquiet.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_reallyquiet.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_reallyquiet.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_reallyquiet.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# check that tickers are quiet


# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --rcfile=netsync.lua --pid-file=monotone_at.pid --dump=_MTN/server_dump --bind=localhost:$_PORT serve testbranch &
sleep 4


$at_traceoff
echo "$at_srcdir/t_reallyquiet.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --reallyquiet localhost:\$_PORT testbranch"
echo t_reallyquiet.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --reallyquiet localhost:$_PORT testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --reallyquiet localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db --keydir=keys2 --rcfile=netsync.lua pull --reallyquiet localhost:$_PORT testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_reallyquiet.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="monotone")system("kill " $a);}'
  fi
else
  kill -TERM $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null

sleep 1

# kill last seen pid if there is no pid file (needed for cases where
# NETSYNC_KILL{,HARD} is used more than once on a single process.
if test -e monotone_at.pid; then
       mt_pid=`cat monotone_at.pid`
fi
if test "$OSTYPE" = "msys"; then
  # we can't use MingW's kill because it can't target Win32 pids.
  pskill=`which pskill`
  if test $pskill && test -x $pskill; then
    $pskill $mt_pid 2>/dev/null
  else
    ps | awk -- '{p=$NF;a=1;if(p=="COMMAND")next;pp=split(p,ps,"/");if(ps[pp]=="mtn")system("kill -KILL " $a);}'
  fi
else
  kill -KILL $mt_pid 2>/dev/null
fi
rm -f monotone_at.pid 2>/dev/null



# check that warnings are as well...
# (list keys with a pattern that doesn't match anything generates a warning)
$at_traceoff
echo "$at_srcdir/t_reallyquiet.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --reallyquiet list keys foo"
echo t_reallyquiet.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --reallyquiet list keys foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --reallyquiet list keys foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --reallyquiet list keys foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_reallyquiet.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  340 ) # 340. t_escaped_selectors.at:1: escaped selectors
    at_setup_line='t_escaped_selectors.at:1'
    at_desc='escaped selectors'
    $at_quiet $ECHO_N "340: escaped selectors                            $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "340. t_escaped_selectors.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_escaped_selectors.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_escaped_selectors.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_escaped_selectors.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:2: rm test_keys"
echo t_escaped_selectors.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
blah blah
_ATEOF

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_escaped_selectors.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:6: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=test/branch commit --message blah-blah"
echo t_escaped_selectors.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=test/branch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=test/branch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=test/branch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV1=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
stuff stuff
_ATEOF



$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=test/branch commit --message blah-blah"
echo t_escaped_selectors.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=test/branch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=test/branch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=test/branch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV2=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
chew chew
_ATEOF



$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=other/branch commit --message blah-blah"
echo t_escaped_selectors.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=other/branch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=other/branch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=other/branch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV3=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:19: (echo \$REV1 && echo \$REV2) | sort"
echo t_escaped_selectors.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(echo $REV1 && echo $REV2) | sort" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (echo $REV1 && echo $REV2) | sort ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (echo $REV1 && echo $REV2) | sort ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:19: mv stdout output1"
echo t_escaped_selectors.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:19:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_escaped_selectors.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select b:test\\\\/branch"
echo t_escaped_selectors.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:test\\\\/branch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:test\\/branch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:test\\/branch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:19: mv stdout output2"
echo t_escaped_selectors.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:19:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_escaped_selectors.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:19: cmp output1 output2"
echo t_escaped_selectors.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:20: echo \$REV3"
echo t_escaped_selectors.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:20: mv stdout output1"
echo t_escaped_selectors.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:20:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_escaped_selectors.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select b:other\\\\/branch"
echo t_escaped_selectors.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:other\\\\/branch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:other\\/branch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:other\\/branch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:20: mv stdout output2"
echo t_escaped_selectors.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:20:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_escaped_selectors.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:20: cmp output1 output2"
echo t_escaped_selectors.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:21: echo \$REV3"
echo t_escaped_selectors.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:21: mv stdout output1"
echo t_escaped_selectors.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:21:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_escaped_selectors.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select b:"
echo t_escaped_selectors.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b:" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b: ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select b: ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:21: mv stdout output2"
echo t_escaped_selectors.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:21:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_escaped_selectors.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:21: cmp output1 output2"
echo t_escaped_selectors.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:22: echo \$REV2"
echo t_escaped_selectors.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:22: mv stdout output1"
echo t_escaped_selectors.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:22:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_escaped_selectors.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select h:test\\\\/branch"
echo t_escaped_selectors.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select h:test\\\\/branch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select h:test\\/branch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select h:test\\/branch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:22: mv stdout output2"
echo t_escaped_selectors.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:22:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_escaped_selectors.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:22: cmp output1 output2"
echo t_escaped_selectors.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:23: echo \$REV3"
echo t_escaped_selectors.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:23: mv stdout output1"
echo t_escaped_selectors.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:23:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_escaped_selectors.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select h:other\\\\/branch"
echo t_escaped_selectors.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select h:other\\\\/branch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select h:other\\/branch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select h:other\\/branch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:23: mv stdout output2"
echo t_escaped_selectors.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:23:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_escaped_selectors.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:23: cmp output1 output2"
echo t_escaped_selectors.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:24: echo \$REV3"
echo t_escaped_selectors.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV3" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV3 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV3 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:24: mv stdout output1"
echo t_escaped_selectors.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output1 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output1 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:24:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output1
fi
"
echo t_escaped_selectors.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output1
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate select h:"
echo t_escaped_selectors.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select h:" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select h: ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate select h: ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:24: mv stdout output2"
echo t_escaped_selectors.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:24:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o output2
fi
"
echo t_escaped_selectors.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o output2
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_escaped_selectors.at:24: cmp output1 output2"
echo t_escaped_selectors.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp output1 output2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp output1 output2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_escaped_selectors.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  341 ) # 341. t_automate_get_base_revision_id.at:3: automate get_base_revision_id
    at_setup_line='t_automate_get_base_revision_id.at:3'
    at_desc='automate get_base_revision_id'
    $at_quiet $ECHO_N "341: automate get_base_revision_id                $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "341. t_automate_get_base_revision_id.at:3: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_automate_get_base_revision_id.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_automate_get_base_revision_id.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_base_revision_id.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_base_revision_id.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_automate_get_base_revision_id.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_base_revision_id.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_base_revision_id.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_automate_get_base_revision_id.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_base_revision_id.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_base_revision_id.at:4: rm test_keys"
echo t_automate_get_base_revision_id.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_base_revision_id.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# check an empty base revision id

$at_traceoff
echo "$at_srcdir/t_automate_get_base_revision_id.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_base_revision_id"
echo t_automate_get_base_revision_id.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_base_revision_id" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_base_revision_id ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_base_revision_id ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_base_revision_id.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_base_revision_id.at:9: cmp _MTN/revision stdout"
echo t_automate_get_base_revision_id.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp _MTN/revision stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp _MTN/revision stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_base_revision_id.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >foo <<'_ATEOF'
this is file foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_get_base_revision_id.at:12: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_automate_get_base_revision_id.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_base_revision_id.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# check a non-empty base reivision id


$at_traceoff
echo "$at_srcdir/t_automate_get_base_revision_id.at:16: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_get_base_revision_id.at:16 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_base_revision_id.at:16: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_get_base_revision_id.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_base_revision_id"
echo t_automate_get_base_revision_id.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_base_revision_id" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_base_revision_id ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_base_revision_id ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_base_revision_id.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_base_revision_id.at:19: cmp _MTN/revision stdout"
echo t_automate_get_base_revision_id.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp _MTN/revision stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp _MTN/revision stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_base_revision_id.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check that pending changes don't affect the base revision id


cat >foo <<'_ATEOF'
this is foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_get_base_revision_id.at:24: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_automate_get_base_revision_id.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_base_revision_id.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_get_base_revision_id.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_base_revision_id"
echo t_automate_get_base_revision_id.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_base_revision_id" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_base_revision_id ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_base_revision_id ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_base_revision_id.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_base_revision_id.at:27: cmp _MTN/revision stdout"
echo t_automate_get_base_revision_id.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp _MTN/revision stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp _MTN/revision stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_base_revision_id.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  342 ) # 342. t_automate_get_current_revision_id.at:3: automate get_current_revision_id
    at_setup_line='t_automate_get_current_revision_id.at:3'
    at_desc='automate get_current_revision_id'
    $at_quiet $ECHO_N "342: automate get_current_revision_id             $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "342. t_automate_get_current_revision_id.at:3: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_automate_get_current_revision_id.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_automate_get_current_revision_id.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_automate_get_current_revision_id.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:4: rm test_keys"
echo t_automate_get_current_revision_id.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# check an empty base revision id

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_current_revision_id"
echo t_automate_get_current_revision_id.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_current_revision_id" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_current_revision_id ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_current_revision_id ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:9:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_get_current_revision_id.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:10: cp stdout current"
echo t_automate_get_current_revision_id.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout current ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout current ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net identify"
echo t_automate_get_current_revision_id.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net identify" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net identify ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net identify ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:12:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_get_current_revision_id.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:12: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:13: cmp current stdout"
echo t_automate_get_current_revision_id.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp current stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp current stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check pending changes against an empty base


cat >foo <<'_ATEOF'
this is file foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_automate_get_current_revision_id.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:18: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:20: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_current_revision_id"
echo t_automate_get_current_revision_id.at:20 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_current_revision_id" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_current_revision_id ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_current_revision_id ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:20: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:21:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_get_current_revision_id.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:22: cp stdout current"
echo t_automate_get_current_revision_id.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout current ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout current ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:23: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net identify"
echo t_automate_get_current_revision_id.at:23 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net identify" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net identify ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net identify ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:23: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:24:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_get_current_revision_id.at:24 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:24: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:25: cmp current stdout"
echo t_automate_get_current_revision_id.at:25 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp current stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp current stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:25: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:27: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_get_current_revision_id.at:27 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:27: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# check no changes against a non-empty base

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_current_revision_id"
echo t_automate_get_current_revision_id.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_current_revision_id" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_current_revision_id ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_current_revision_id ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:32:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_get_current_revision_id.at:32 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:32: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:33: cp stdout current"
echo t_automate_get_current_revision_id.at:33 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout current ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout current ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:33: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net identify"
echo t_automate_get_current_revision_id.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net identify" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net identify ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net identify ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:35:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_get_current_revision_id.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:36: cmp current stdout"
echo t_automate_get_current_revision_id.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp current stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp current stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# check changes against a non-empty base


cat >bar <<'_ATEOF'
this is file bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add bar"
echo t_automate_get_current_revision_id.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:43: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_current_revision_id"
echo t_automate_get_current_revision_id.at:43 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_current_revision_id" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_current_revision_id ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_current_revision_id ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:43: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:44:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_get_current_revision_id.at:44 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:44: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:45: cp stdout current"
echo t_automate_get_current_revision_id.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp stdout current ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp stdout current ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:46: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate get_revision | \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net identify"
echo t_automate_get_current_revision_id.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net identify" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net identify ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate get_revision | $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net identify ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:47:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_get_current_revision_id.at:47 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:47: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_get_current_revision_id.at:48: cmp current stdout"
echo t_automate_get_current_revision_id.at:48 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp current stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp current stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_get_current_revision_id.at:48: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  343 ) # 343. t_log_diffs.at:1: log --diffs
    at_setup_line='t_log_diffs.at:1'
    at_desc='log --diffs'
    $at_quiet $ECHO_N "343: log --diffs                                  $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "343. t_log_diffs.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_log_diffs.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_log_diffs.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_diffs.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_diffs.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_log_diffs.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_diffs.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_diffs.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_log_diffs.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_diffs.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_diffs.at:2: rm test_keys"
echo t_log_diffs.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_diffs.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >foo <<'_ATEOF'
foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_log_diffs.at:5: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add foo"
echo t_log_diffs.at:5 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_diffs.at:5: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >bar <<'_ATEOF'
bar
_ATEOF

$at_traceoff
echo "$at_srcdir/t_log_diffs.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add bar"
echo t_log_diffs.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add bar ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_diffs.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_log_diffs.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_log_diffs.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_diffs.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV1=`cat _MTN/revision`

cat >foo <<'_ATEOF'
foo changed
_ATEOF



$at_traceoff
echo "$at_srcdir/t_log_diffs.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_log_diffs.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_diffs.at:15: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV2=`cat _MTN/revision`


cat >quux <<'_ATEOF'
quux
_ATEOF

$at_traceoff
echo "$at_srcdir/t_log_diffs.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add quux"
echo t_log_diffs.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add quux" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add quux ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add quux ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_diffs.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




$at_traceoff
echo "$at_srcdir/t_log_diffs.at:21: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_log_diffs.at:21 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_diffs.at:21: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV3=`cat _MTN/revision`

cat >foo <<'_ATEOF'
foo again
_ATEOF

cat >bar <<'_ATEOF'
bar again
_ATEOF


$at_traceoff
echo "$at_srcdir/t_log_diffs.at:29: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net rename -e foo foo2"
echo t_log_diffs.at:29 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename -e foo foo2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename -e foo foo2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net rename -e foo foo2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_diffs.at:29: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_log_diffs.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_log_diffs.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_diffs.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV4=`cat _MTN/revision`

# without restrictions
$at_traceoff
echo "$at_srcdir/t_log_diffs.at:35: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log --diffs"
echo t_log_diffs.at:35 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --diffs" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --diffs ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log --diffs ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_diffs.at:35: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_diffs.at:36: mv stdout logfull"
echo t_log_diffs.at:36 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout logfull ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout logfull ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_diffs.at:36: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_diffs.at:37: egrep '^(---|\\+\\+\\+) ' logfull"
echo t_log_diffs.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; egrep '^(---|\+\+\+) ' logfull ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; egrep '^(---|\+\+\+) ' logfull ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_diffs.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_diffs.at:38: mv stdout full"
echo t_log_diffs.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout full ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout full ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_diffs.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >expect_full <<'_ATEOF'
--- bar	e242ed3bffccdf271b7fbaf34ed72d089537b42f
+++ bar	17ecc84b62b35bcf309c0b246cba8641426ad35d
--- foo	5527e63e7193ef5fadbc8fd40cc8092d742602e7
+++ foo2	6d0789008812dd091f3e0c97d6606bf427cf82e4
--- quux	f3d9ae4aeea6946a8668445395ba10b7399523a0
+++ quux	f3d9ae4aeea6946a8668445395ba10b7399523a0
--- foo	f1d2d2f924e986ac86fdf7b36c94bcdf32beec15
+++ foo	5527e63e7193ef5fadbc8fd40cc8092d742602e7
--- bar	e242ed3bffccdf271b7fbaf34ed72d089537b42f
+++ bar	e242ed3bffccdf271b7fbaf34ed72d089537b42f
--- foo	f1d2d2f924e986ac86fdf7b36c94bcdf32beec15
+++ foo	f1d2d2f924e986ac86fdf7b36c94bcdf32beec15
_ATEOF

$at_traceoff
echo "$at_srcdir/t_log_diffs.at:52: cmp expect_full full"
echo t_log_diffs.at:52 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp expect_full full ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp expect_full full ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_diffs.at:52: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# restrict to foo2 and quux
$at_traceoff
echo "$at_srcdir/t_log_diffs.at:55: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net log quux --diffs foo2"
echo t_log_diffs.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log quux --diffs foo2" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log quux --diffs foo2 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net log quux --diffs foo2 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_diffs.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_diffs.at:56: mv stdout logrestrict"
echo t_log_diffs.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout logrestrict ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout logrestrict ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_diffs.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_diffs.at:57: egrep '^(---|\\+\\+\\+) | sed 's/\\t//' ' logrestrict"
echo t_log_diffs.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; egrep '^(---|\+\+\+) | sed 's/\t//' ' logrestrict ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; egrep '^(---|\+\+\+) | sed 's/\t//' ' logrestrict ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_diffs.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_log_diffs.at:58: mv stdout restrict"
echo t_log_diffs.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout restrict ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout restrict ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_diffs.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

cat >expect_restrict <<'_ATEOF'
--- foo	5527e63e7193ef5fadbc8fd40cc8092d742602e7
+++ foo2	6d0789008812dd091f3e0c97d6606bf427cf82e4
--- quux	f3d9ae4aeea6946a8668445395ba10b7399523a0
+++ quux	f3d9ae4aeea6946a8668445395ba10b7399523a0
--- foo	f1d2d2f924e986ac86fdf7b36c94bcdf32beec15
+++ foo	5527e63e7193ef5fadbc8fd40cc8092d742602e7
--- foo	f1d2d2f924e986ac86fdf7b36c94bcdf32beec15
+++ foo	f1d2d2f924e986ac86fdf7b36c94bcdf32beec15
_ATEOF

$at_traceoff
echo "$at_srcdir/t_log_diffs.at:68: cmp expect_restrict restrict"
echo t_log_diffs.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cmp expect_restrict restrict ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cmp expect_restrict restrict ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_log_diffs.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  344 ) # 344. t_db_init_info.at:3: db info of new database
    at_setup_line='t_db_init_info.at:3'
    at_desc='db info of new database'
    $at_quiet $ECHO_N "344: db info of new database                      $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "344. t_db_init_info.at:3: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_db_init_info.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_db_init_info.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_init_info.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_init_info.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_db_init_info.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_init_info.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_init_info.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_db_init_info.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_init_info.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_db_init_info.at:4: rm test_keys"
echo t_db_init_info.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_init_info.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



# check that db info of a new database works

$at_traceoff
echo "$at_srcdir/t_db_init_info.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db info"
echo t_db_init_info.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db info" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db info ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db info ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_db_init_info.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  345 ) # 345. t_automate_common_ancestors.at:1: automate common_ancestors
    at_setup_line='t_automate_common_ancestors.at:1'
    at_desc='automate common_ancestors'
    $at_quiet $ECHO_N "345: automate common_ancestors                    $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "345. t_automate_common_ancestors.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_automate_common_ancestors.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_automate_common_ancestors.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_automate_common_ancestors.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:2: rm test_keys"
echo t_automate_common_ancestors.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



#   A
#  / \
# B   C
#     |\
#     D E
#     \/
#      F


cat >testfile <<'_ATEOF'
A
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:13: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_automate_common_ancestors.at:13 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:13: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:14: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_common_ancestors.at:14 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:14: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_A=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
B
_ATEOF



$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:19: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_common_ancestors.at:19 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:19: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_B=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:22: rm -rf _MTN.old"
echo t_automate_common_ancestors.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:22: mv  _MTN _MTN.old"
echo t_automate_common_ancestors.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:22: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV_A ."
echo t_automate_common_ancestors.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_A . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:22: test \$PROBE_R_SHA = \$REV_A"
echo t_automate_common_ancestors.at:22 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:22: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >testfile <<'_ATEOF'
C
_ATEOF



$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:26: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_common_ancestors.at:26 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:26: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_C=`cat _MTN/revision`


cat >testfile <<'_ATEOF'
D
_ATEOF



$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:31: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_common_ancestors.at:31 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:31: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_D=`cat _MTN/revision`


$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:34: rm -rf _MTN.old"
echo t_automate_common_ancestors.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm -rf _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:34: mv  _MTN _MTN.old"
echo t_automate_common_ancestors.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv  _MTN _MTN.old ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:34: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net checkout --revision=\$REV_C ."
echo t_automate_common_ancestors.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_C ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_C . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net checkout --revision=$REV_C . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

PROBE_R_SHA=`cat _MTN/revision`
$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:34: test \$PROBE_R_SHA = \$REV_C"
echo t_automate_common_ancestors.at:34 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $PROBE_R_SHA = $REV_C" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $PROBE_R_SHA = $REV_C ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $PROBE_R_SHA = $REV_C ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:34: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon




cat >otherfile <<'_ATEOF'
E
_ATEOF

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:37: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add otherfile"
echo t_automate_common_ancestors.at:37 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add otherfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:37: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:38: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_automate_common_ancestors.at:38 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:38: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


REV_E=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:41: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net explicit_merge \$REV_D \$REV_E testbranch"
echo t_automate_common_ancestors.at:41 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV_D $REV_E testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV_D $REV_E testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net explicit_merge $REV_D $REV_E testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:41: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:42: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net update"
echo t_automate_common_ancestors.at:42 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net update ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:42: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

REV_F=`cat _MTN/revision`

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:45: test \$REV_F != \$REV_D"
echo t_automate_common_ancestors.at:45 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $REV_F != $REV_D" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $REV_F != $REV_D ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $REV_F != $REV_D ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:45: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:46: test \$REV_F != \$REV_E"
echo t_automate_common_ancestors.at:46 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "test $REV_F != $REV_E" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; test $REV_F != $REV_E ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; test $REV_F != $REV_E ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:46: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# Now do some checks

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:50: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors c7539264e83c5d6af4c792f079b5d46e9c128665"
echo t_automate_common_ancestors.at:50 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors c7539264e83c5d6af4c792f079b5d46e9c128665" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors c7539264e83c5d6af4c792f079b5d46e9c128665 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors c7539264e83c5d6af4c792f079b5d46e9c128665 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:50: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:51: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors \$REV_A c7539264e83c5d6af4c792f079b5d46e9c128665"
echo t_automate_common_ancestors.at:51 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_A c7539264e83c5d6af4c792f079b5d46e9c128665" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_A c7539264e83c5d6af4c792f079b5d46e9c128665 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_A c7539264e83c5d6af4c792f079b5d46e9c128665 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:51: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:53: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors \$REV_A"
echo t_automate_common_ancestors.at:53 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:53: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:54:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_common_ancestors.at:54 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:54: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:55: cat stdout"
echo t_automate_common_ancestors.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:55: mv stdout expout"
echo t_automate_common_ancestors.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:55: echo \$REV_A"
echo t_automate_common_ancestors.at:55 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:55: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:56: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors \$REV_A \$REV_A"
echo t_automate_common_ancestors.at:56 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_A $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_A $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_A $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:56: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:57:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_common_ancestors.at:57 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:57: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:58: cat stdout"
echo t_automate_common_ancestors.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:58: mv stdout expout"
echo t_automate_common_ancestors.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:58: echo \$REV_A"
echo t_automate_common_ancestors.at:58 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:58: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:60: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors \$REV_A \$REV_B"
echo t_automate_common_ancestors.at:60 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_A $REV_B" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_A $REV_B ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_A $REV_B ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:60: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:61:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_common_ancestors.at:61 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:61: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:62: cat stdout"
echo t_automate_common_ancestors.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:62: mv stdout expout"
echo t_automate_common_ancestors.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:62: echo \$REV_A"
echo t_automate_common_ancestors.at:62 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:62: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:64: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors \$REV_A \$REV_F"
echo t_automate_common_ancestors.at:64 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_A $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_A $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_A $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:64: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:65:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_common_ancestors.at:65 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:65: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:66: cat stdout"
echo t_automate_common_ancestors.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:66: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:66: mv stdout expout"
echo t_automate_common_ancestors.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:66: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:66: echo \$REV_A"
echo t_automate_common_ancestors.at:66 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:66: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:68: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors \$REV_F \$REV_F"
echo t_automate_common_ancestors.at:68 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_F $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_F $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_F $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:68: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:69:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_common_ancestors.at:69 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:69: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:70: echo \$REV_A >acdef"
echo t_automate_common_ancestors.at:70 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A >acdef" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A >acdef ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A >acdef ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:70: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:71: echo \$REV_C >>acdef"
echo t_automate_common_ancestors.at:71 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_C >>acdef" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_C >>acdef ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_C >>acdef ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:71: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:72: echo \$REV_D >>acdef"
echo t_automate_common_ancestors.at:72 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_D >>acdef" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_D >>acdef ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_D >>acdef ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:72: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:73: echo \$REV_E >>acdef"
echo t_automate_common_ancestors.at:73 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_E >>acdef" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_E >>acdef ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_E >>acdef ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:73: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:74: echo \$REV_F >>acdef"
echo t_automate_common_ancestors.at:74 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_F >>acdef" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_F >>acdef ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_F >>acdef ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:74: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:75: cat stdout"
echo t_automate_common_ancestors.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:75: mv stdout expout"
echo t_automate_common_ancestors.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:75: sort acdef"
echo t_automate_common_ancestors.at:75 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sort acdef ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sort acdef ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:75: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:77: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors \$REV_B \$REV_F"
echo t_automate_common_ancestors.at:77 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_B $REV_F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_B $REV_F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_B $REV_F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:77: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:78:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_common_ancestors.at:78 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:78: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:79: cat stdout"
echo t_automate_common_ancestors.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:79: mv stdout expout"
echo t_automate_common_ancestors.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:79: echo \$REV_A"
echo t_automate_common_ancestors.at:79 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:79: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:81: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors \$REV_F \$REV_D \$REV_E"
echo t_automate_common_ancestors.at:81 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_F $REV_D $REV_E" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_F $REV_D $REV_E ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_F $REV_D $REV_E ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:81: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:82:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_common_ancestors.at:82 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:82: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:83: echo \$REV_A >ac"
echo t_automate_common_ancestors.at:83 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A >ac" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A >ac ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A >ac ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:83: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:84: echo \$REV_C >>ac"
echo t_automate_common_ancestors.at:84 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_C >>ac" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_C >>ac ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_C >>ac ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:84: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:85: cat stdout"
echo t_automate_common_ancestors.at:85 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:85: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:85: mv stdout expout"
echo t_automate_common_ancestors.at:85 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:85: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:85: sort ac"
echo t_automate_common_ancestors.at:85 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; sort ac ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; sort ac ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:85: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:87: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors \$REV_B \$REV_E"
echo t_automate_common_ancestors.at:87 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_B $REV_E" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_B $REV_E ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net automate common_ancestors $REV_B $REV_E ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:87: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:88:
if test \"\$OSTYPE\" = \"msys\"; then
  dos2unix -q -o stdout
fi
"
echo t_automate_common_ancestors.at:88 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    echo 'Not enabling shell tracing (command contains an embedded newline)'
fi

if test -n "$at_trace_this"; then
    ( $at_traceon;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :;
if test "$OSTYPE" = "msys"; then
  dos2unix -q -o stdout
fi
 ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:88: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:89: cat stdout"
echo t_automate_common_ancestors.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cat stdout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cat stdout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:89: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:89: mv stdout expout"
echo t_automate_common_ancestors.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:89: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_automate_common_ancestors.at:89: echo \$REV_A"
echo t_automate_common_ancestors.at:89 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "echo $REV_A" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; echo $REV_A ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; echo $REV_A ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_automate_common_ancestors.at:89: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  346 ) # 346. t_invalid_root.at:3: invalid --root settings
    at_setup_line='t_invalid_root.at:3'
    at_desc='invalid --root settings'
    $at_quiet $ECHO_N "346: invalid --root settings                      $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "346. t_invalid_root.at:3: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_invalid_root.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_invalid_root.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_invalid_root.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_invalid_root.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_invalid_root.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_invalid_root.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_invalid_root.at:4: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_invalid_root.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_invalid_root.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_invalid_root.at:4: rm test_keys"
echo t_invalid_root.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_invalid_root.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_invalid_root.at:6: mkdir foo"
echo t_invalid_root.at:6 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mkdir foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mkdir foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_invalid_root.at:6: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_invalid_root.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status"
echo t_invalid_root.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_invalid_root.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_invalid_root.at:9: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status --root ."
echo t_invalid_root.at:9 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --root ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --root . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --root . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_invalid_root.at:9: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


$at_traceoff
echo "$at_srcdir/t_invalid_root.at:11: (cd foo; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status --root ..)"
echo t_invalid_root.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd foo; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --root ..)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd foo; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --root ..) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd foo; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --root ..) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_invalid_root.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_invalid_root.at:12: (cd foo; \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status --root .)"
echo t_invalid_root.at:12 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "(cd foo; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --root .)" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; (cd foo; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --root .) ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; (cd foo; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --root .) ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_invalid_root.at:12: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# workspace outside of root
$at_traceoff
echo "$at_srcdir/t_invalid_root.at:15: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status --root /tmp"
echo t_invalid_root.at:15 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --root /tmp" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --root /tmp ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --root /tmp ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_invalid_root.at:15: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


# root below workspace
$at_traceoff
echo "$at_srcdir/t_invalid_root.at:18: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net status --root foo"
echo t_invalid_root.at:18 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --root foo" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --root foo ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net status --root foo ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   1) ;;
   *) echo "$at_srcdir/t_invalid_root.at:18: exit code was $at_status, expected 1"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;

  347 ) # 347. t_netsync_pipe.at:1: netsync over pipes
    at_setup_line='t_netsync_pipe.at:1'
    at_desc='netsync over pipes'
    $at_quiet $ECHO_N "347: netsync over pipes                           $ECHO_C"
    at_xfail=no
    echo "#                             -*- compilation -*-" >> "$at_group_log"
    (
      echo "347. t_netsync_pipe.at:1: testing ..."
      $at_traceon



# Absolutify monotone path.
_MTN_EXEC=`which mtn`

# Save the PWD so MTN macro can refer back to it
_ROOT_DIR=`pwd -P`

# Pick a random port, so running multiple testsuites concurrently on the
# same machine has a hope of working.  Port range will usually be
# 20050..53347.
_PORT=`echo $RANDOM | awk 'BEGIN {a=1;srand()} END {printf "%.0f\n", ((rand() * 529 + 20050 + $a) % 64512 + 1024)}'`

cat >test_keys <<'_ATEOF'
[keypair tester@test.net]
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC6Pz+IvvOCDDqzN9WFO/zOjL7s9dVCS+zn
s/L9jQ2kHfNWXFof4GcgmMu4DfU4sUrRz39QxDlUrxEOvmIc9z3DNuIcbFZx7UZg9DWfdmDm
vbW79bZlVMeIudAIUwa6euX163AK5hacmqJfuB5U7awQM9o3rn8JYULleAoz5QTtawIDAQAB#
MIICyTBDBgkqhkiG9w0BBQ0wNjAeBgkqhkiG9w0BBQwwEQQIvYSV8ucj9m4CAggAAgEYMBQG
CCqGSIb3DQMHBAg/BZPM2O3QfASCAoBBGkVz4E/Pr1CsIioC92eCz4qWLclhc53HgHSCEo9I
XdNCTpCs/oxOXhQ0WQCPFhYEaxU8STgZm0Yhq8WEF1QfxOPOU8nDiwMT0L7/ARruu5bTCxnW
B3kkn+XiO5GldVJhULFlrl91t83yMsTSw+vyCyxZkqewBLR7mqHQUe2suVquMyutxxr2vZgV
QMfRxk65fSvySUHeNaj1dmakYcpP+35iejyUTAtAGuBsv2C68bwif4wkpLpedghNCtmccSdQ
t9QDF3yy6Q42tAW/OK6/t836/qn39f+47Kp4LMJUMmxNrtV7IntIkgBGgnGsqP9Br2B4GYXc
sWK0YApA3+Sf3kfH/wQ6Hib8nN4YxUTxxnS9WNHvRFrXCmfbGd5vAzi4lKCm/W+2Nlpd4DDQ
3JZjjCR73PMfKtHJCGULkNkK/9kRyhLYql2u/ZUJoEcdZxzEpYgExW8Wu1CrCVtWd+ueXs1h
or6Fdua7Gg4cjMgVg6EUSxdMBFQCX8heD8JeG6jMFNR9hTxe8o/PK8Ys63JyLMLRUv3Ud+f8
8T0TtCZV5+rgLfvb6k89uDJJK228WuJB6rp8S+qqq30RFPmkzW8JNulRilY+wrIfcowA6+TA
T5WKzFOIbkZd/R34tNLJMjTJlUq6SQKaOlQnqOEFbyY/GXgzYgnmc3tl8pigXEJvNzU5GiuB
ib35QQbzh87KlfLtWELK+8ZoyhZAZAMr97IavUbuFubOyEoEozUliARyRZ1ZudM4Ii+J6TRX
cmLryIBlz3OXgUUBSwJPwtWuR4tZ8nIt7cVJr7pxLblGfeFuu01HWN55hv4C78/aNSipVYCF
OFt8n7wQHxbbJvoTIdd/
[end]
_ATEOF


cat >min_hooks.lua <<'_ATEOF'

function get_passphrase(keyid)
	return keyid
end
function persist_phrase_ok()
	return true
end
_ATEOF


cat >test_hooks.lua <<'_ATEOF'

-- this is the "testing" set of lua hooks for monotone
-- it's intended to support self-tests, not for use in
-- production. just defines some of the std hooks.

function get_passphrase(keyid)
	return keyid
end

-- Everything alice signs is trusted, nothing mallory signs is
-- trusted.  For certs signed by other people, everything is
-- trusted except for one particular cert...
-- For use of t_trusted.at.
function get_revision_cert_trust(signers, id, name, val)
   for k, v in pairs(signers) do
      if v == "alice@trusted.com" then return true end
      if v == "mallory@evil.com" then return false end
   end
   if (id == "0000000000000000000000000000000000000000"
       and name == "bad-cert" and val == "bad-val")
   then return false end
   return true
end

function get_manifest_cert_trust(signers, id, name, val)
   return true
end

function get_file_cert_trust(signers, id, name, val)
   return true
end

function accept_testresult_change(old_results, new_results)
   for test,res in pairs(old_results)
   do
      if res == true and new_results[test] ~= true
      then
	 return false
      end
   end
   return true
end

function persist_phrase_ok()
	return true
end

function get_author(branchname)
	return "tester@test.net"
end

function ignore_file(name)
	if (string.find(name, "testsuite.log")) then return true end
	if (string.find(name, "test_hooks.lua")) then return true end
	if (string.find(name, "keys")) then return true end
	return false
end

function merge2(left_path, right_path, merged_path, left, right)
	io.write("running merge2 hook\n")
	return left
end

if (attr_functions == nil) then
  attr_functions = {}
end
attr_functions["test:test_attr"] =
  function(filename, value)
    io.write(string.format("test:test_attr:%s:%s\n", filename, value))
  end

function get_netsync_connect_command(uri, args)

	local argv = nil

	if uri["scheme"] == "ssh"
		and uri["host"]
		and uri["path"] then

		argv = { "ssh" }
		if uri["user"] then
			table.insert(argv, "-l")
			table.insert(argv, uri["user"])
		end
		if uri["port"] then
			table.insert(argv, "-p")
			table.insert(argv, uri["port"])
		end

		table.insert(argv, uri["host"])
	end

	if uri["scheme"] == "file" and uri["path"] then
		argv = { }
	end

	if argv then

		table.insert(argv, "mtn")

		if args["debug"] then
			table.insert(argv, "--debug")
		else
			table.insert(argv, "--quiet")
		end

		table.insert(argv, "--db")
		table.insert(argv, uri["path"])
		table.insert(argv, "serve")
		table.insert(argv, "--stdio")
		table.insert(argv, "--no-transport-auth")

		if args["include"] then
			table.insert(argv, args["include"])
		end

		if args["exclude"] then
			table.insert(argv, "--exclude")
			table.insert(argv, args["exclude"])
		end
	end
	return argv
end

function use_transport_auth(uri)
	if uri["scheme"] == "ssh"
	or uri["scheme"] == "file" then
		return false
	else
		return true
	end
end

_ATEOF


$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net db init"
echo t_netsync_pipe.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net db init ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net read <test_keys"
echo t_netsync_pipe.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net read <test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:2: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ."
echo t_netsync_pipe.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch ." in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net setup --branch=testbranch . ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:2: rm test_keys"
echo t_netsync_pipe.at:2 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; rm test_keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; rm test_keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:2: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:4: cp test.db test2.db"
echo t_netsync_pipe.at:4 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; cp test.db test2.db ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; cp test.db test2.db ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:4: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



cat >testfile <<'_ATEOF'
foo
_ATEOF

$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:7: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net add testfile"
echo t_netsync_pipe.at:7 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net add testfile ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:7: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:8: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah"
echo t_netsync_pipe.at:8 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --branch=testbranch commit --message blah-blah ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:8: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:10: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net sync file:test2.db testbranch"
echo t_netsync_pipe.at:10 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net sync file:test2.db testbranch" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net sync file:test2.db testbranch ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net sync file:test2.db testbranch ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; cat "$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:10: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db ls keys"
echo t_netsync_pipe.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:11: mv stdout expout"
echo t_netsync_pipe.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db ls keys"
echo t_netsync_pipe.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db ls keys" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db ls keys ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db ls keys ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



REVS=`$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete revision ""`
for R in $REVS; do

$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate certs \$R"
echo t_netsync_pipe.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate certs $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate certs $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate certs $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:11: mv stdout expout"
echo t_netsync_pipe.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate certs \$R"
echo t_netsync_pipe.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate certs $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate certs $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate certs $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_revision \$R"
echo t_netsync_pipe.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_revision $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_revision $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_revision $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:11: mv stdout expout"
echo t_netsync_pipe.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_revision \$R"
echo t_netsync_pipe.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_revision $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_revision $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_revision $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon



$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_manifest_of \$R"
echo t_netsync_pipe.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_manifest_of $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:11: mv stdout expout"
echo t_netsync_pipe.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_manifest_of \$R"
echo t_netsync_pipe.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_manifest_of $R" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_manifest_of $R ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


done


$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete file \"\""
echo t_netsync_pipe.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete file \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete file "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete file "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:11: mv stdout expout"
echo t_netsync_pipe.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db complete file \"\""
echo t_netsync_pipe.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db complete file \"\"" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db complete file "" ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db complete file "" ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


FILES=`$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db complete file ""`
for F in $FILES; do

$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_file \$F"
echo t_netsync_pipe.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_file $F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_file $F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test.db automate get_file $F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
echo stdout:; tee stdout <"$at_stdout"
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:11: mv stdout expout"
echo t_netsync_pipe.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    at_trace_this=yes
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; mv stdout expout ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; mv stdout expout ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
$at_diff "$at_devnull" "$at_stderr" || at_failed=:
$at_diff "$at_devnull" "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon

$at_traceoff
echo "$at_srcdir/t_netsync_pipe.at:11: \$PREEXECUTE \$_MTN_EXEC --norc --root=\$_ROOT_DIR --rcfile=\$_ROOT_DIR/test_hooks.lua --nostd --db=\$_ROOT_DIR/test.db --keydir=\$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_file \$F"
echo t_netsync_pipe.at:11 >"$at_check_line_file"

at_trace_this=
if test -n "$at_traceon"; then
    case "$PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_file $F" in
        *'
'*) echo 'Not enabling shell tracing (command contains an embedded newline)' ;;
 *) at_trace_this=yes ;;
    esac
fi

if test -n "$at_trace_this"; then
    ( $at_traceon; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_file $F ) >"$at_stdout" 2>"$at_stder1"
    at_status=$?
    grep '^ *+' "$at_stder1" >&2
    grep -v '^ *+' "$at_stder1" >"$at_stderr"
else
    ( :; $PREEXECUTE $_MTN_EXEC --norc --root=$_ROOT_DIR --rcfile=$_ROOT_DIR/test_hooks.lua --nostd --db=$_ROOT_DIR/test.db --keydir=$_ROOT_DIR/keys --key=tester@test.net --db=test2.db automate get_file $F ) >"$at_stdout" 2>"$at_stderr"
    at_status=$?
fi

at_failed=false
echo stderr:; cat "$at_stderr"
$at_diff expout "$at_stdout" || at_failed=:
case $at_status in
   77) echo 77 > "$at_status_file"; exit 77;;
   0) ;;
   *) echo "$at_srcdir/t_netsync_pipe.at:11: exit code was $at_status, expected 0"
      at_failed=:;;
esac
if $at_failed; then


  echo 1 > "$at_status_file"
  exit 1
fi

$at_traceon


done


      $at_traceoff
      $at_times_p && times >"$at_times_file"
    ) 5>&1 2>&1 | eval $at_tee_pipe
    at_status=`cat "$at_status_file"`
    ;;


  * )
    echo "$as_me: no such test group: $at_group" >&2
    continue
    ;;
  esac

  # Be sure to come back to the suite directory, in particular
  # since below we might `rm' the group directory we are in currently.
  cd "$at_suite_dir"

  case $at_group in
    banner-*) ;;
    *)
      if test ! -f "$at_check_line_file"; then
	sed "s/^ */$as_me: warning: /" <<_ATEOF
	A failure happened in a test group before any test could be
	run. This means that test suite is improperly designed.  Please
	report this failure to <monotone-devel@nongnu.org>.
_ATEOF
	echo "$at_setup_line" >"$at_check_line_file"
      fi
      at_group_count=`expr 1 + $at_group_count`
      $at_verbose $ECHO_N "$at_group. $at_setup_line: $ECHO_C"
      echo $ECHO_N "$at_group. $at_setup_line: $ECHO_C" >> "$at_group_log"
      case $at_xfail:$at_status in
	yes:0)
	    at_msg="UNEXPECTED PASS"
	    at_xpass_list="$at_xpass_list $at_group"
	    at_errexit=$at_errexit_p
	    ;;
	no:0)
	    at_msg="ok"
	    at_pass_list="$at_pass_list $at_group"
	    at_errexit=false
	    ;;
	*:77)
	    at_msg='skipped ('`cat "$at_check_line_file"`')'
	    at_skip_list="$at_skip_list $at_group"
	    at_errexit=false
	    ;;
	yes:*)
	    at_msg='expected failure ('`cat "$at_check_line_file"`')'
	    at_xfail_list="$at_xfail_list $at_group"
	    at_errexit=false
	    ;;
	no:*)
	    at_msg='FAILED ('`cat "$at_check_line_file"`')'
	    at_fail_list="$at_fail_list $at_group"
	    at_errexit=$at_errexit_p
	    ;;
      esac
      # Make sure there is a separator even with long titles.
      echo " $at_msg"
      at_log_msg="$at_group. $at_desc ($at_setup_line): $at_msg"
      case $at_status in
	0|77)
	  # $at_times_file is only available if the group succeeded.
	  # We're not including the group log, so the success message
	  # is written in the global log separately.  But we also
	  # write to the group log in case they're using -d.
	  if test -f "$at_times_file"; then
	    at_log_msg="$at_log_msg	("`sed 1d "$at_times_file"`')'
	    rm -f "$at_times_file"
          fi
	  echo "$at_log_msg" >> "$at_group_log"
	  echo "$at_log_msg" >&5

	  # Cleanup the group directory, unless the user wants the files.
	  if $at_debug_p ; then
	    	  {
	    echo "#! /bin/sh"
	    echo 'test "${ZSH_VERSION+set}" = set && alias -g '\''${1+"$@"}'\''='\''"$@"'\'''
	    echo "cd '$at_dir'"
	    echo 'exec ${CONFIG_SHELL-'"$SHELL"'}' "$0" \
	         '-v -d' "$at_debug_args" "$at_group" '${1+"$@"}'
	    echo 'exit 1'
	  } >$at_group_dir/run
	  chmod +x $at_group_dir/run

	  elif test -d "$at_group_dir"; then
	    find "$at_group_dir" -type d ! -perm -700 -exec chmod u+rwx \{\} \;
	    rm -fr "$at_group_dir"
	  fi
	  ;;
	*)
	  # Upon failure, include the log into the testsuite's global
	  # log.  The failure message is written in the group log.  It
	  # is later included in the global log.
	  echo "$at_log_msg" >> "$at_group_log"

	  # Upon failure, keep the group directory for autopsy, and
	  # create the debugging script.
	  	  {
	    echo "#! /bin/sh"
	    echo 'test "${ZSH_VERSION+set}" = set && alias -g '\''${1+"$@"}'\''='\''"$@"'\'''
	    echo "cd '$at_dir'"
	    echo 'exec ${CONFIG_SHELL-'"$SHELL"'}' "$0" \
	         '-v -d' "$at_debug_args" "$at_group" '${1+"$@"}'
	    echo 'exit 1'
	  } >$at_group_dir/run
	  chmod +x $at_group_dir/run

	  $at_errexit && break
	  ;;
      esac
      ;;
  esac
done

# Back to the top directory.
cd "$at_dir"

# Compute the duration of the suite.
at_stop_date=`date`
at_stop_time=`date +%s 2>/dev/null`
echo "$as_me: ending at: $at_stop_date" >&5
case $at_start_time,$at_stop_time in
  [0-9]*,[0-9]*)
    at_duration_s=`expr $at_stop_time - $at_start_time`
    at_duration_m=`expr $at_duration_s / 60`
    at_duration_h=`expr $at_duration_m / 60`
    at_duration_s=`expr $at_duration_s % 60`
    at_duration_m=`expr $at_duration_m % 60`
    at_duration="${at_duration_h}h ${at_duration_m}m ${at_duration_s}s"
    echo "$as_me: test suite duration: $at_duration" >&5
    ;;
esac

# Wrap up the test suite with summary statistics.
at_skip_count=`set dummy $at_skip_list; shift; echo $#`
at_fail_count=`set dummy $at_fail_list; shift; echo $#`
at_xpass_count=`set dummy $at_xpass_list; shift; echo $#`
at_xfail_count=`set dummy $at_xfail_list; shift; echo $#`

at_run_count=`expr $at_group_count - $at_skip_count`
at_unexpected_count=`expr $at_xpass_count + $at_fail_count`
at_total_fail_count=`expr $at_xfail_count + $at_fail_count`

echo
cat <<\_ASBOX
## ------------- ##
## Test results. ##
## ------------- ##
_ASBOX
echo
{
  echo
  cat <<\_ASBOX
## ------------- ##
## Test results. ##
## ------------- ##
_ASBOX
  echo
} >&5

if test $at_run_count = 1; then
  at_result="1 test"
  at_were=was
else
  at_result="$at_run_count tests"
  at_were=were
fi
if $at_errexit_p && test $at_unexpected_count != 0; then
  if test $at_xpass_count = 1; then
    at_result="$at_result $at_were run, one passed"
  else
    at_result="$at_result $at_were run, one failed"
  fi
  at_result="$at_result unexpectedly and inhibited subsequent tests."
else
  # Don't you just love exponential explosion of the number of cases?
  case $at_xpass_count:$at_fail_count:$at_xfail_count in
    # So far, so good.
    0:0:0) at_result="$at_result $at_were successful." ;;
    0:0:*) at_result="$at_result behaved as expected." ;;

    # Some unexpected failures
    0:*:0) at_result="$at_result $at_were run,
$at_fail_count failed unexpectedly." ;;

    # Some failures, both expected and unexpected
    0:*:1) at_result="$at_result $at_were run,
$at_total_fail_count failed ($at_xfail_count expected failure)." ;;
    0:*:*) at_result="$at_result $at_were run,
$at_total_fail_count failed ($at_xfail_count expected failures)." ;;

    # No unexpected failures, but some xpasses
    *:0:*) at_result="$at_result $at_were run,
$at_xpass_count passed unexpectedly." ;;

    # No expected failures, but failures and xpasses
    *:1:0) at_result="$at_result $at_were run,
$at_unexpected_count did not behave as expected ($at_fail_count unexpected failure)." ;;
    *:*:0) at_result="$at_result $at_were run,
$at_unexpected_count did not behave as expected ($at_fail_count unexpected failures)." ;;

    # All of them.
    *:*:1) at_result="$at_result $at_were run,
$at_xpass_count passed unexpectedly,
$at_total_fail_count failed ($at_xfail_count expected failure)." ;;
    *:*:*) at_result="$at_result $at_were run,
$at_xpass_count passed unexpectedly,
$at_total_fail_count failed ($at_xfail_count expected failures)." ;;
  esac

  if test $at_skip_count = 0 && test $at_run_count -gt 1; then
    at_result="All $at_result"
  fi
fi

# Now put skips in the mix.
case $at_skip_count in
  0) ;;
  1) at_result="$at_result
1 test was skipped." ;;
  *) at_result="$at_result
$at_skip_count tests were skipped." ;;
esac

if test $at_unexpected_count = 0; then
  echo "$at_result"
  echo "$at_result" >&5
else
  echo "ERROR: $at_result" >&2
  echo "ERROR: $at_result" >&5
  {
    echo
    cat <<\_ASBOX
## ------------------------ ##
## Summary of the failures. ##
## ------------------------ ##
_ASBOX

    # Summary of failed and skipped tests.
    if test $at_fail_count != 0; then
      echo "Failed tests:"
      $SHELL "$0" $at_fail_list --list
      echo
    fi
    if test $at_skip_count != 0; then
      echo "Skipped tests:"
      $SHELL "$0" $at_skip_list --list
      echo
    fi
    if test $at_xpass_count != 0; then
      echo "Unexpected passes:"
      $SHELL "$0" $at_xpass_list --list
      echo
    fi
    if test $at_fail_count != 0; then
      cat <<\_ASBOX
## ---------------------- ##
## Detailed failed tests. ##
## ---------------------- ##
_ASBOX
      echo
      for at_group in $at_fail_list
      do
        at_group_normalized=$at_group

  while :; do
    case $at_group_normalized in #(
    $at_format*) break;;
    esac
    at_group_normalized=0$at_group_normalized
  done

        cat "$at_suite_dir/$at_group_normalized/$as_me.log"
        echo
      done
      echo
    fi
    if test -n "$at_top_srcdir"; then
      sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## ${at_top_build_prefix}config.log ##
_ASBOX
      sed 's/^/| /' ${at_top_build_prefix}config.log
      echo
    fi
  } >&5

  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## $as_me.log was created. ##
_ASBOX

  echo
  echo "Please send \`${at_testdir+${at_testdir}/}$as_me.log' and all information you think might help:"
  echo
  echo "   To: <monotone-devel@nongnu.org>"
  echo "   Subject: [monotone 0.27] $as_me:$at_fail_list${at_fail_list:+ failed${at_xpass_list:+,}}$at_xpass_list${at_xpass_list:+ passed unexpectedly}"
  echo
  if test $at_debug_p = false; then
    echo
    echo 'You may investigate any problem if you feel able to do so, in which'
    echo 'case the test suite provides a good starting point.  Its output may'
    echo "be found below \`${at_testdir+${at_testdir}/}$as_me.dir'."
    echo
  fi
    exit 1
fi

exit 0



